Bank account countries and institutions
Look up which currencies and payout rails a country supports, which bank fields a country and currency pair needs, and the details of a US bank by routing number.
Before you register a bank account outside the US, ask Wingspan what that country needs. These read-only lookups tell you which currencies you can pay a bank account in, which rails are available, and which fields to collect from the account holder.
Prerequisites
- A credential with
payments.funding-source:read. - The country as an ISO 3166-1 alpha-2 code in capitals, such as
PHorGB.
List currencies for a country
Call GET /v3/finance/bank-account-countries/{country}/currencies.
curl "https://api.wingspan.app/v3/finance/bank-account-countries/PH/currencies" \
-H "Authorization: Bearer $WINGSPAN_TOKEN"// 200 OK (trimmed)
{
"data": [
{ "currency": "PHP", "payoutRails": ["LocalRail", "InternationalWire"] },
{ "currency": "USD", "payoutRails": ["InternationalWire"] }
],
"pagination": { "nextPageToken": "" }
}The list isn't paginated. It holds at most one row per currency, so nextPageToken is always empty. A country with no supported currencies returns an empty data array. Business and individual Accounts can get different lists, because the result is for the Account you call as.
payoutRails can include Ach, SameDayAch, Rtp, FedNow, Wire, CardPush, Interac, Check, Internal, InternationalAch, InternationalWire, and LocalRail.
Get the fields a currency needs
Call GET /v3/finance/bank-account-countries/{country}/currencies/{currency}. It returns the same row plus requiredFields.
Each key in requiredFields names the property of POST /v3/finance/external-bank-accounts it fills. A key that is present means that field is required. Each key has a label for your form and, when one applies, a pattern the value must match. accountNumber is always present. The other keys that can appear are routingNumber, routingSecondary, beneficiaryNameLocal, and beneficiaryBankAccountType. beneficiaryBankAccountType has allowedValues instead of a pattern.
The fields describe the local rail when the country has one, and international wire otherwise. Two pairs differ. For CNY in China, LocalRail is listed but you need the international wire fields. For JMD in Jamaica, LocalRail is listed and you get the generic international wire fields.
Build your form from requiredFields, then send the values in the create call. See Link and verify a bank account.
Look up a US bank by routing number
Call GET /v3/finance/institutions/{routingNumber} with a nine-digit ABA routing number.
// 200 OK (trimmed)
{
"routingNumber": "021000021",
"name": "Example Bank, N.A.",
"isRTPSupported": true,
"url": "https://www.example.com"
}The response also has address, phone, and url when Wingspan knows them. isRTPSupported tells you whether the bank takes real-time payments. Use it to confirm a routing number before you send it. This endpoint doesn't declare a required scope.
Errors
| Status | Meaning |
|---|---|
403 | Missing scope |
404 | Bank accounts in that country can't be paid in that currency, or the routing number isn't a known institution |
422 | The country or currency isn't valid, or Wingspan can't read the field rules for that pair |
Related pages
Updated about 1 hour ago