Skip to main content

Transfers API

The Transfers API allows you to send money to beneficiaries through various channels, such as mobile money accounts and bank accounts. Use these endpoints to programmatically initiate and manage transfers.
All transfer-related endpoints require both standard API key authentication and additional authentication using the X-Grant header for enhanced security.
For API transfers, you must add your IP address to the whitelist in your dashboard at https://business.notchpay.co/settings/developer/ips

The Transfer Object

Transfer Object Properties

string
Unique identifier for the transfer
string
Your custom reference for the transfer
number
Amount of the transfer in the smallest currency unit
string
Three-letter ISO currency code
string
Status of the transfer: pending, processing, complete, failed, canceled
string
ID of the beneficiary receiving the transfer
string
Payment channel used for the transfer (e.g., cm.mtn, cm.orange)
string
Description of the transfer
object
Additional data attached to the transfer
string
Timestamp when the transfer was created
string
Timestamp when the transfer was completed (if applicable)

API Endpoints

List All Transfers

Retrieve a list of transfers with pagination.

Query Parameters

integer
Number of items per page (default: 30, max: 100)
integer
Page number (default: 1)
Search by reference or beneficiary
string
Filter by status
string
Filter by transfer channels (comma-separated)
string
Start date filter (format: YYYY-MM-DD)
string
End date filter (format: YYYY-MM-DD)

Create a Transfer

Initiate a new transfer to a beneficiary.

Request Parameters

number
required
Amount to transfer in the smallest currency unit
string
required
Three-letter ISO currency code (e.g., XAF)
string
ID of an existing beneficiary (required if beneficiary details are not provided)
object
Beneficiary details (required if beneficiary is not provided)
string
required
Payment channel to use for the transfer
string
Description of the transfer
string
Unique reference for the transfer
object
Additional data to attach to the transfer

Example Requests

Retrieve a Transfer

Retrieve details of a specific transfer.

Path Parameters

string
required
ID or reference of the transfer to retrieve

Cancel a Transfer

Cancel a pending transfer.

Path Parameters

string
required
ID or reference of the transfer to cancel

Bulk Transfers

Create a Bulk Transfer

Initiate multiple transfers in a single request.

Request Parameters

array
required
Array of transfer objects
string
required
Three-letter ISO currency code for all transfers
string
Description for the bulk transfer

Example Request

Retrieve a Bulk Transfer

Retrieve details of a specific bulk transfer.

Path Parameters

string
required
ID of the bulk transfer to retrieve

Transfer Statuses

pending

Transfer has been initiated but not yet processed

processing

Transfer is being processed by the payment provider

complete

Transfer has been completed

failed

Transfer attempt failed

canceled

Transfer was canceled by the merchant

Webhooks for Transfers

To receive real-time notifications about transfer status changes, set up webhooks for the following events:

transfer.created

Triggered when a new transfer is created

transfer.complete

Triggered when a transfer status changes to “complete”

transfer.failed

Triggered when a transfer fails
See the Webhooks API documentation for more information on setting up and handling webhooks.

Error Handling

Bad Request
Invalid request parametersThis typically occurs when required parameters are missing or have invalid values.
Unauthorized
Invalid API keyCheck that you’re using the correct API key and that it’s properly included in the Authorization header.
Forbidden
Missing or invalid grant keyTransfer endpoints require the X-Grant header with your private key for additional security.
Not Found
Transfer not foundThe transfer ID or reference you provided doesn’t exist or belongs to another account.
Unprocessable Entity
Transfer cannot be processedThis occurs when there’s a business logic error, such as insufficient balance or invalid beneficiary details.
error
Solution: Add funds to your Notch Pay account before attempting the transfer.
error
Solution: Ensure the beneficiary exists and is correctly specified.
error
Solution: Use one of the supported payment channels for transfers.

Best Practices

Store Transfer References

Always store the transfer ID and reference in your database for future reference and reconciliation.

Verify Transfer Status

Always verify the transfer status using the API before confirming to the recipient that funds have been sent.

Use Webhooks

Set up webhooks for reliable transfer notifications, especially for asynchronous transfers like mobile money.

Idempotent References

Use unique, idempotent references for each transfer to prevent duplicate transfers and simplify reconciliation.

Error Handling

Implement proper error handling for failed transfers, including user-friendly error messages and recovery options.

Balance Management

Check your account balance before initiating large transfers or bulk transfers to ensure sufficient funds.

Implementation Examples

1

Create a Transfer

2

Check Transfer Status

For more information about beneficiaries, see the Beneficiaries API documentation.