External accounts overview
Use the External Accounts API to save the payees your customers send money to, check a bank account's holder, correct a payee that failed setup, and list the banks and wallet operators a payee can point at.
Add an external account or browse the operations in this category.
Review payee setup and verification flows.
How it works
An external account (payee) is a bank account, mobile wallet or other destination outside Gravv. The usual flow has four steps:
- Find the institution. For a local bank or mobile wallet payee, call
GET /v1/external-accounts/institutions. These payees require aninstitution_id. For a SWIFT bank, find the institution byswift_codeinstead. - Check the holder (optional). Call
POST /v1/external-accounts/verify. It covers bank accounts only. Trust the returned name whenverification_sourceisprovider. A value oflocalmeans only that the format looks right. - Look for an existing payee, then save it. Call
GET /v1/external-accountswithsearch, thenPOST /v1/external-accounts. - Pay it. Once the payee is
active, pay it with the Transfers API.
Setup and status
| Response | Payee types | Meaning |
|---|---|---|
| HTTP 200 | bank_account, mobile_money |
status is active at once |
| HTTP 202 | ach_wire, sepa, swift, fps |
status is pending while setup runs. Wait for external_account.active or external_account.setup_failed, or poll GET /v1/external-accounts/{external_account_id} |
A payee that ends in setup_failed still counts as a duplicate, so you can't save it again. Correct it in place with PATCH /v1/external-accounts/{external_account_id} instead. See Update an external account. A duplicate returns HTTP 400 with the existing id in data.payee_id. Payee errors carry no code, so match on the message.
A listed institution or country is not an open route. Gravv decides whether a payee can be paid when you send the transfer. See Payments and supported countries.
Endpoints
| Endpoint | Description |
|---|---|
POST /v1/external-accounts |
Add an external account |
GET /v1/external-accounts |
List external accounts, with search |
POST /v1/external-accounts/verify |
Check a bank account's format, and its holder's name where the bank supports it |
GET /v1/external-accounts/{external_account_id} |
Retrieve an external account, its status and any error_message |
PATCH /v1/external-accounts/{external_account_id} |
Correct a payee that failed setup, retry its setup, or add details a route needs |
GET /v1/external-accounts/institutions |
List banks and wallet operators. min_amount and max_amount are reference values, not limits |
Authentication
All requests use https://api.gravv.xyz and authenticate with the Api-Key header. POST /v1/external-accounts requires an Idempotency-Key header. The verify and PATCH calls do not.