Skip to main content

Overview

Payment methods represent your bank accounts and wallets used to fund payouts. These are distinct from recipient payment methods, which are configured when you create a recipient.
  • Your payment methods: The accounts you send funds from (configured here).
  • Recipient payment methods: The accounts your recipients receive funds into (configured during recipient creation).
Requirements vary by currency and rail. For example, ACH transfers need a routing number while SEPA transfers need an IBAN.

Step 1: Get Requirements

Fetch the dynamic form schema for creating a payment method. The fields returned depend on the currencies and rails available to your account.
curl -X GET "https://api.teel.finance/api/payment-methods/requirements" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Response

{
  "schemas": [
    {
      "currency": "USD",
      "rail": "ach",
      "fields": [
        { "name": "account_number", "type": "string", "required": true, "label": "Account Number" },
        { "name": "routing_number", "type": "string", "required": true, "label": "Routing Number" },
        { "name": "account_type", "type": "enum", "required": true, "values": ["checking", "savings"], "label": "Account Type" }
      ]
    },
    {
      "currency": "EUR",
      "rail": "sepa",
      "fields": [
        { "name": "iban", "type": "string", "required": true, "label": "IBAN" },
        { "name": "bic", "type": "string", "required": false, "label": "BIC/SWIFT Code" }
      ]
    },
    {
      "currency": "MXN",
      "rail": "spei",
      "fields": [
        { "name": "clabe", "type": "string", "required": true, "label": "CLABE" }
      ]
    }
  ]
}

Step 2: Build Your Form

Use the schema from Step 1 to render a form in your application. Each currency/rail combination has its own set of fields. Common examples:
CurrencyRailKey Fields
USDACHAccount number, routing number
EURSEPAIBAN, BIC (optional)
GBPFPSAccount number, sort code
MXNSPEICLABE

Step 3: Create a Payment Method

Submit the form data to create a payment method. Teel provisions it across all of your active providers.

ACH (USD) Example

curl -X POST "https://api.teel.finance/api/payment-methods" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "USD",
    "rail": "ach",
    "account_number": "1234567890",
    "routing_number": "021000021",
    "account_type": "checking",
    "label": "Primary USD Account"
  }'

SEPA (EUR) Example

curl -X POST "https://api.teel.finance/api/payment-methods" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "EUR",
    "rail": "sepa",
    "iban": "DE89370400440532013000",
    "bic": "COBADEFFXXX",
    "label": "Euro Account"
  }'

Response

{
  "id": "pm_abc123",
  "currency": "USD",
  "rail": "ach",
  "label": "Primary USD Account",
  "status": "active",
  "providers": [
    { "provider": "provider_a", "status": "active" },
    { "provider": "provider_b", "status": "active" }
  ],
  "createdAt": "2026-03-11T10:00:00Z"
}

Step 4: List Payment Methods

Retrieve all payment methods configured for your account.
curl -X GET "https://api.teel.finance/api/payment-methods" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Response

{
  "payment_methods": [
    {
      "id": "pm_abc123",
      "currency": "USD",
      "rail": "ach",
      "label": "Primary USD Account",
      "status": "active",
      "createdAt": "2026-03-11T10:00:00Z"
    },
    {
      "id": "pm_def456",
      "currency": "EUR",
      "rail": "sepa",
      "label": "Euro Account",
      "status": "active",
      "createdAt": "2026-03-11T11:00:00Z"
    }
  ]
}

Payment Method vs. Recipient Payment Method

AspectYour Payment MethodRecipient Payment Method
PurposeFund outgoing payoutsReceive incoming payments
Configured viaPOST /api/payment-methodsIncluded in POST /api/recipients
Belongs toYour organizationThe recipient
ExampleYour company’s USD bank accountVendor’s EUR IBAN