API reference
Payout accounts
Bank or PayPal destinations a user can be paid out to.
List a user's payout accounts
GET/v1/users/{user_id}/payout_accounts
Returns a page of PayoutAccount objects.
Path parameters
user_idstringrequiredStarts with
usr_.
Query parameters
limitintegerDefault
10.starting_afterstringCursor; an object ID. Returns the page after it. Cannot be combined with
ending_before.ending_beforestringCursor; an object ID. Returns the page before it. Cannot be combined with
starting_after.
Responses
- 200A page of payout accounts.
- 401The API key is missing, invalid or revoked.
- 404The object does not exist or belongs to another integrator.
- 429The key is over its rate limit.
- 5XXServer error. Safe to retry with the same idempotency key.
curl "https://sandbox.api.ndeipi.example/v1/users/usr_01JA8Z2F5G6H7J8K9M0N1P2Q3R/payout_accounts" \
-H "Api-Key: $NDEIPI_API_KEY"{
"data": [
{
"id": "pa_01JA8Z6N3P4Q5R6S7T8U9V0WXY",
"object": "payout_account",
"user_id": "usr_01JA8Z3H6J7K8M9N0P1Q2R3S4T",
"type": "bank",
"currency": "zar",
"country": "ZA",
"rail": "absa_eft",
"account_owner_name": "Tendai Ncube",
"bank": {
"bank_name": "Absa Bank",
"account_number_last4": "4567",
"routing_code": "632005",
"account_type": "checking"
},
"status": "active",
"name_check": "not_supported",
"metadata": {},
"version": 1,
"created_at": "2026-10-16T09:30:00Z"
}
],
"has_more": false
}Register a payout account
POST/v1/users/{user_id}/payout_accounts
Registers a bank or mobile-money destination. Details are validated for their rail at creation; failures return 422 validation_failed with one entry per field in details. Account and phone numbers are returned masked.
Returns PayoutAccount.
Path parameters
user_idstringrequiredStarts with
usr_.
Headers
Idempotency-KeyheaderrequiredA unique key for this write, up to 255 characters. Send the same key to retry safely; see idempotency.
Body
typestringrequiredWhich rails serve each type is data on
GET /routes. In 1.0,bankis paid by Absa (absa_eft) andpaypalby PayPal. Nomobile_moneyrail has a provider yet.One of
bank,mobile_money,paypal.currencystringrequiredLower-case ISO 4217 fiat currency code.
countrystringrequiredISO 3166-1 alpha-2 country code.
railstringrequiredA payment rail code, published by
GET /routes. Not an enum by design.account_owner_namestringrequiredScreened against sanctions lists and, where the rail supports it, checked against the account.
bankobjectRequired when
typeisbank.bank.bank_namestringrequiredbank.account_numberstringrequiredbank.routing_codestringBranch
bank.swift_bicstringbank.account_typestringOne of
checking,savings,other.mobile_moneyobjectRequired when
typeismobile_money.mobile_money.providerstringrequiredmobile_money.phone_numberstringrequiredpaypalobject | objectRequired when
typeispaypal.paypal.emailstringpaypal.phonestringmetadataobjectIntegrator key-value data, returned unchanged. Up to 50 keys; keys up to 40 characters, values up to 500.
Responses
- 201Payout account registered.
- 400The request is malformed.
- 401The API key is missing, invalid or revoked.
- 403The key may not perform this action, or the user is not approved.
- 404The object does not exist or belongs to another integrator.
- 422The request is well formed but fails validation or a business rule.
- 429The key is over its rate limit.
- 5XXServer error. Safe to retry with the same idempotency key.
curl -X POST "https://sandbox.api.ndeipi.example/v1/users/usr_01JA8Z2F5G6H7J8K9M0N1P2Q3R/payout_accounts" \
-H "Api-Key: $NDEIPI_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"type": "bank",
"currency": "zar",
"country": "ZA",
"rail": "absa_eft",
"account_owner_name": "Tendai Ncube",
"bank": {
"bank_name": "Absa Bank",
"account_number": "4091234567",
"routing_code": "632005",
"account_type": "checking"
}
}'{
"id": "pa_01JA8Z6N3P4Q5R6S7T8U9V0WXY",
"object": "payout_account",
"user_id": "usr_01JA8Z3H6J7K8M9N0P1Q2R3S4T",
"type": "bank",
"currency": "zar",
"country": "ZA",
"rail": "absa_eft",
"account_owner_name": "Tendai Ncube",
"bank": {
"bank_name": "Absa Bank",
"account_number_last4": "4567",
"routing_code": "632005",
"account_type": "checking"
},
"status": "active",
"name_check": "not_supported",
"metadata": {},
"version": 1,
"created_at": "2026-10-16T09:30:00Z"
}Get a payout account
GET/v1/users/{user_id}/payout_accounts/{payout_account_id}
Returns PayoutAccount.
Path parameters
user_idstringrequiredStarts with
usr_.payout_account_idstringrequiredStarts with
pa_.
Responses
- 200The payout account.
- 401The API key is missing, invalid or revoked.
- 404The object does not exist or belongs to another integrator.
- 429The key is over its rate limit.
- 5XXServer error. Safe to retry with the same idempotency key.
curl "https://sandbox.api.ndeipi.example/v1/users/usr_01JA8Z2F5G6H7J8K9M0N1P2Q3R/payout_accounts/pa_01JA8Z6N3P4Q5R6S7T8U9V0WXY" \
-H "Api-Key: $NDEIPI_API_KEY"{
"id": "pa_01JA8Z6N3P4Q5R6S7T8U9V0WXY",
"object": "payout_account",
"user_id": "usr_01JA8Z3H6J7K8M9N0P1Q2R3S4T",
"type": "bank",
"currency": "zar",
"country": "ZA",
"rail": "absa_eft",
"account_owner_name": "Tendai Ncube",
"bank": {
"bank_name": "Absa Bank",
"account_number_last4": "4567",
"routing_code": "632005",
"account_type": "checking"
},
"status": "active",
"name_check": "not_supported",
"metadata": {},
"version": 1,
"created_at": "2026-10-16T09:30:00Z"
}Delete a payout account
DELETE/v1/users/{user_id}/payout_accounts/{payout_account_id}
Removes the account as a destination for new transfers. Transfers already submitted to it complete or are returned as normal. Returns 409 payout_account_in_use while an off-ramp to it is in pending.
Returns PayoutAccount.
Path parameters
user_idstringrequiredStarts with
usr_.payout_account_idstringrequiredStarts with
pa_.
Responses
- 200The deleted payout account.
- 401The API key is missing, invalid or revoked.
- 404The object does not exist or belongs to another integrator.
- 409The request conflicts with the object's current state or an earlier request.
- 429The key is over its rate limit.
- 5XXServer error. Safe to retry with the same idempotency key.
curl -X DELETE "https://sandbox.api.ndeipi.example/v1/users/usr_01JA8Z2F5G6H7J8K9M0N1P2Q3R/payout_accounts/pa_01JA8Z6N3P4Q5R6S7T8U9V0WXY" \
-H "Api-Key: $NDEIPI_API_KEY"{
"id": "pa_01JA8Z6N3P4Q5R6S7T8U9V0WXY",
"object": "payout_account",
"user_id": "usr_01JA8Z3H6J7K8M9N0P1Q2R3S4T",
"type": "bank",
"currency": "zar",
"country": "ZA",
"rail": "absa_eft",
"account_owner_name": "Tendai Ncube",
"bank": {
"bank_name": "Absa Bank",
"account_number_last4": "4567",
"routing_code": "632005",
"account_type": "checking"
},
"status": "deleted",
"name_check": "not_supported",
"metadata": {},
"version": 2,
"created_at": "2026-10-16T09:30:00Z"
}