Skip to content
HitchPay API Docs

GLOBAL PAYMENT (CROSS-BORDER)

Overview

Send and collect money internationally across Africa and between Africa and the US.

Supported Countries

Nigeria, Kenya, Ghana, Uganda, Tanzania, Rwanda, South Africa, Benin, Botswana, Burkina Faso, Cameroon, Ivory Coast, DR Congo, Congo Brazzaville, Gabon, Mali, Malawi, Togo, Zambia, Senegal, United Kingdom, United States

Supported Channels

  • Bank Transfer
  • Mobile Money — M-Pesa, MTN MoMo, Airtel Money, and more

Before initiating any cross-border transaction, always follow this sequence:

1.  Enroll Customer         POST /v1/customer/enroll
2.  Submit KYC              POST /v1/customer/{uuid}/kyc
3.  Poll KYC Status         GET  /v1/customer/{uuid}/kyc
4.  Get Supported Countries GET  /v1/crossborder/countries
5.  Get Channels            GET  /v1/crossborder/channels?country_code=KE&ramptype=deposit
6.  Get Networks            GET  /v1/crossborder/networks?country_code=KE&channel=bank
7.  Get Exchange Rate       GET  /v1/crossborder/rates?source_currency=USD&destination_currency=NGN&amount=10
8a. Initiate Transfer       POST /v1/crossborder/global-transfer
8b. Initiate Collection     POST /v1/crossborder/global-collection
9.  Check Status            GET  /v1/crossborder/global-transfer/{reference}
10. Receive Webhooks        Configure endpoint in Merchant Dashboard

Transfer vs Collection

Transfer Collection
Direction You send funds to a beneficiary You pull funds from a sender
Endpoint POST /v1/crossborder/global-transfer POST /v1/crossborder/global-collection
Bank flow Funds sent to beneficiary's account Returns bankInfo — sender pays to that account
MoMo flow Funds sent to beneficiary's wallet Sends a payment prompt to sender's phone

Notes

  • Only customers with overall_kyc_status: approved can initiate transfers or collections
  • Always use a unique reference per transaction — duplicates return a DUPLICATE_REQUEST error
  • Always fetch a live rate immediately before initiating a transfer — rates change frequently
  • Always confirm the final status via GET /v1/crossborder/global-transfer/{reference} or webhooks — do not rely solely on the initiation response

Questions? Email [email protected]. Also on GitBook.