Beneficiaries API
The Beneficiaries API allows you to create and manage payment recipients. Beneficiaries are required for withdrawals, transfers, and exchanges where funds need to be sent to external accounts.
Create Beneficiary
Create a new beneficiary for receiving payments. The required fields vary depending on the currency and country.
Endpoint
POST /api/v1/client/beneficiaries
Authentication
This endpoint requires HMAC authentication (Business API Key). Include your API key and signature in the request headers:
Request Body
[blocked]Business API: user_id (on behalf of)
POST /api/v1/client/beneficiaries is authenticated with your business API key. Every beneficiary is stored against a Transfaar user (the “on behalf of” user). That user must be part of your business.
Tip: For a customer, pass their user id from the Customers API. For your business’s own recipients, pass
"user_id": "self".
Address Object (Optional)
When provided, address is validated. State is required (when the country has subdivisions) and must be a subdivision code only (e.g. NY, LA, ON)—subdivision names are not accepted for beneficiaries. Use Regions API to list valid codes.
Currency-Specific Requirements
NGN (Nigerian Naira)
account_numberis requiredbank_codeis recommended (use from Banks API)bank_nameis required
USD (US Dollar)
payment_methodis required (ACH,Wire, orSepa)- For ACH:
routing_numberandaccount_numberare required - For Wire:
routing_number,account_number, andbic_swift_codeare required account_typeis recommended (CheckingorSavings)
CAD (Canadian Dollar)
emailis required (used for Interac e-Transfer)- No bank account details needed — the payout is delivered via Interac to the recipient's email
TZS, UGX, SLE (Mobile money payout)
Mobile money beneficiaries use the same create endpoint. Payouts use the standard Fiat Payout flow (WITHDRAWAL or EXCHANGE) — no separate mobile-money payout API.
bank_codeis required — must be a mobile money operator from the Banks API with?type=momo(not a traditional bank code)phoneis required — recipient wallet number in international format without+(e.g.255712345678for Tanzania,256712345678for Uganda,23276123456for Sierra Leone)bank_nameis required — operator display name (e.g.Halotel,Vodacom)account_numberis optional — if omitted,phoneis used for payout deliverycountry_code:TZ(TZS),UG(UGX),SL(SLE)
Supported operators (current API catalog):
Full list and updates:
GET /banks/{country}?type=momo— see Banks API: mobile money operators.
List operators:
Example: TZS mobile money beneficiary
GHS (Ghana)
Ghana supports mobile money and bank (GHIPSS) payouts. Use the Banks API type filter to load the correct list:
Supported mobile money operators (Ghana):
For mobile money, use phone in international format without + (e.g. 233241234567).
Other Currencies
- Requirements vary by country
- Check specific country requirements in the Banks API documentation
Success Response (201 Created)
Error Responses
Example Request
For a registered customer, set "user_id" to that customer’s Transfaar user UUID instead of "self".
Example: JavaScript/Node.js
List Beneficiaries
Retrieve a paginated list of beneficiaries for the authenticated business.
Endpoint
GET /api/v1/client/beneficiaries
Query Parameters
Success Response (200 OK)
Get Beneficiary
Retrieve details of a specific beneficiary by ID.
Endpoint
GET /api/v1/client/beneficiaries/{id}
Path Parameters
Success Response (200 OK)
Returns the full beneficiary object with all details.
Update Beneficiary
Update an existing beneficiary's information.
Endpoint
PATCH /api/v1/client/beneficiaries/{id}
Request Body
Same structure as create beneficiary, but all fields are optional. Only provided fields will be updated.
Delete Beneficiary
Delete a beneficiary. Beneficiaries that are associated with active transactions cannot be deleted.
Endpoint
DELETE /api/v1/client/beneficiaries/{id}
Success Response (200 OK)
Related Endpoints
- Banks API - Get list of banks for a country
- Banks API - Get list of banks and verify account information
- Transactions API - View transactions using beneficiaries
Best Practices
- Use Bank IDs - When creating beneficiaries, use the
bank_codefrom the Banks API for better reliability - Validate Accounts - Use the account lookup endpoint to verify account numbers before creating beneficiaries
- Handle Verification - Beneficiaries start with
status: "pending"and may require verification depending on currency and amount - Store Beneficiary IDs - Save the beneficiary
idreturned from create for use in quote/transaction requests