Identifier of the transfer provider (e.g., Flutterwave, Paystack, etc.).
The amount to transfer (in the smallest currency unit if required).
The transaction currency (e.g., NGN).
The ID used to identify the connected merchant or user.
The recipient’s bank account number.
The bank code of the recipient’s bank (e.g., 057 for Zenith Bank).
The full name of the account holder.
A note or description for the transfer (e.g., “Salary Payment”).
curl --location 'https://api.recital.finance/api/v1/transfer' \
--header 'Authorization: Bearer apiKey' \
--header 'Content-Type: application/json' \
--data-raw '{
"providerID":"002",
"amount": 100,
"currency": "NGN",
"connectID":"ZIrfGJRaKjaGY62",
"accountTo":"0000000000",
"accountToBankCode":"057",
"accountToName":"Tolu Robert",
"narration":"test"
}'
Response
Message indicating result of the request.
Indicates whether the transfer was successfully initiated.
A unique reference for the initiated transfer.
If true, a second step is required to finalize the transfer using a PIN.
{
"message": "PIN successfully sent to email",
"success": true,
"transferReference": "BAL-YA9S0J0UQKDVF4EXV2CK4RO5F2",
"shouldFinalize": true
}
Notes
- You must store the
transferReference for use in the /finalize_transfer step.
- The
shouldFinalize flag indicates whether an OTP or PIN confirmation is required.
Best Practices
✅ Always validate recipient bank details before initiating the transfer.
✅ Store and track transferReference values.
✅ Listen for webhooks or poll status if supported.
✅ Always handle shouldFinalize = true logic by prompting for PIN and finalizing transfer.