Getting started
Hold balances in multiple currencies, pay recipients across borders and collect payments from your customers.
Start in Sandbox with a test key. Switch to a live key once your integration works and your business account is approved.
Prerequisites
- A MigraPay business account. Sign up from the business dashboard.
- An API key. Create one in the dashboard under Developers → API keys and choose the scopes it needs. The key is shown only once, so store it in your server's secret manager.
- A server. API keys are secret and must never be sent from a browser or a mobile app.
Quickstart
Set your key and base URL
Every endpoint lives under one base URL. Sandbox and Live share it: the key you send decides the environment.
https://business-api.migrapay.com/v1/apiexport MIGRAPAY_API_KEY="mpb_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Make your first request
List your wallets. The key needs the wallet.view scope.
curl https://business-api.migrapay.com/v1/api/wallets \
-H "Authorization: Bearer $MIGRAPAY_API_KEY"{
"status": "success",
"message": "Wallets retrieved successfully.",
"data": {
"wallets": [
{
"id": "3f6c2a10-8b1d-4e5f-9a7c-000000000001",
"businessId": "b7e4d2c1-5a3f-4c8e-8d2b-000000000001",
"currency": "CAD",
"country": "CA",
"balance": 12584.5,
"ledgerBalance": 12584.5,
"primary": true,
"enabled": true,
"status": "active",
"createdAt": "2026-08-01T10:15:30.000Z",
"updatedAt": "2026-08-01T10:15:30.000Z"
}
]
}
}Send a payout
Save a recipient once, then pay them from a wallet. Here a CAD wallet pays a bank account in Nigeria; the conversion to NGN happens as part of the payout. The key needs recipient.create and payment.create.
curl -X POST https://business-api.migrapay.com/v1/api/recipients \
-H "Authorization: Bearer $MIGRAPAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"displayName": "Ada Okafor",
"ownerType": "individual",
"rail": "bank",
"currency": "NGN",
"destination": {
"bankCode": "058",
"accountNumber": "0123456789",
"accountName": "Ada Okafor"
}
}'The payout response carries the transaction and its status. See Payouts for the full object.
Receive webhooks
Add a webhook endpoint in the dashboard under Developers → Webhooks to be told when payouts settle or fail and when collections are paid. See Webhooks.