Skip to main content

Transfers (Pay-Outs)

The Transfer API (Pay-Out API) is simple to integrate, as it involves no interaction with end customers.

Making a transfer

HUB2 API reference - Create a transfer Performing a transfer only requires one call to the dedicated endpoint. Sample request:
The API responds with 201 Created and returns the transfer, including its ID: the unique identifier HUB2 creates for each transfer request.
Save the transfer ID in your database: the next steps require it.
When contacting HUB2 support about a transfer, provide the transfer ID, not your own reference.

Restrictions

For mobile money transfers to Togo (destination.country = TG), the reference field must not contain special characters. A reference with special characters is rejected with a 400 Bad Request error (code forbidden_special_chars). Allowed characters are letters, digits, hyphens, underscores, spaces and the pipe character. As a regular expression character class: [A-Za-z0-9\-_\s|].

Retrieving transfer details

HUB2 API reference - Get transfer details To retrieve a transfer, call the dedicated endpoint with the transfer ID obtained when the transfer was created (see previous step). This endpoint returns the full details of a transfer. It is not meant for polling status changes. This endpoint, like every HUB2 API endpoint, is rate limited: when it is called too often, the HUB2 API responds with HTTP 429 Too Many Requests.
Documentation about rate limits can be found here.
Sample request:
Once webhooks are configured for the transfer lifecycle, HUB2 sends a webhook for each subscribed event of the transfer. Webhooks are the recommended way to track transfer status changes. Some transfers are processed quickly, others take longer, for reasons that cannot be predicted. Fetching a transfer when its status has not changed is wasted effort.
Documentation about webhooks can be found here.

Retrieve a transfer status

This endpoint has been available since 4 February 2025.
For performance reasons, the previous endpoint is not meant for retrieving a transfer status. A dedicated endpoint serves that purpose. HUB2 API reference - Retrieve a transfer status This endpoint is also rate limited, but its limit is less restrictive than that of the previous endpoint. Sample request:
If you cannot implement webhooks, use this endpoint to fetch the status of a transfer instead.

List transfers

HUB2 API reference - List transfers To fetch a list of transfers, use the dedicated endpoint. Several query parameters (see below) filter the results. Sample request:
Query parameters used in this example:
  • from: start of the date range, here 2023-01-01T00:00:00.000.
  • to: end of the date range, here 2023-01-01T12:00:00.000.
  • page and perPage: navigation through the result pages. perPage defaults to 10 and cannot exceed 100.
By default, when no filter is set, this endpoint returns the 10 most recent transfers, ordered by creation date, descending.
For a large number of transfers, use paginated requests to retrieve all of them.

Pagination

This endpoint is paginated. The Content-Range response header gives the range of the returned results, for example 0-99/999999. The value after the slash is not an exact count of the matching transfers. To retrieve every transfer matching the filter, request the next page until a page returns fewer results than perPage. Set date filters in the initial request so the number of results stays the same while you paginate (unless to is in the future).