curl -X POST "https://api.tabsglobal.co/v1/payouts" \
-H "Authorization: Bearer sk_live_..." \
-H "Idempotency-Key: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"sourceCurrency": "NGN",
"payoutCurrency": "NGN",
"bankCode": "058",
"accountNumber": "0123456789",
"recipientName": "ADEWALE ADELEKE",
"narration": "Invoice settlement #1042"
}'
import { randomUUID } from "node:crypto";
const response = await fetch("https://api.tabsglobal.co/v1/payouts", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.TABS_SECRET_KEY}`,
"Idempotency-Key": randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 25000,
sourceCurrency: "NGN",
payoutCurrency: "NGN",
bankCode: "058",
accountNumber: "0123456789",
recipientName: "ADEWALE ADELEKE",
narration: "Invoice settlement #1042",
}),
});
const payout = await response.json();
console.log(payout);
import uuid
import requests
url = "https://api.tabsglobal.co/v1/payouts"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Idempotency-Key": str(uuid.uuid4()),
"Content-Type": "application/json",
}
payload = {
"amount": 25000,
"sourceCurrency": "NGN",
"payoutCurrency": "NGN",
"bankCode": "058",
"accountNumber": "0123456789",
"recipientName": "ADEWALE ADELEKE",
"narration": "Invoice settlement #1042",
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
{
"id": "7d9c0245-31ba-4f27-a0c3-fba4313f89e2",
"reference": "PO-AB12CD34",
"type": "PAYOUT",
"status": "PROCESSING",
"currency": "NGN",
"amountMinor": "2500000",
"ngnAmountMinor": "2500000",
"recipient": "ADEWALE ADELEKE",
"metadata": {
"railReference": "NIP-9948102941",
"provider": "embedly"
},
"createdAt": "2026-09-21T02:00:00.000Z",
"completedAt": null,
"payout": {
"rate": 1,
"transferFeeMinor": "0",
"totalDebitMinor": "2500000",
"recipientAddress": null,
"bank": null,
"accountNumber": "0123456789",
"routing": null,
"sortCode": null,
"iban": null,
"bic": null,
"narration": "Invoice settlement #1042",
"eta": "Instant",
"railReference": "NIP-9948102941"
}
}
Payouts API
Initiate a Payout
Disburse bank transfers locally or internationally with bank-grade idempotency protection.
POST
/
v1
/
payouts
curl -X POST "https://api.tabsglobal.co/v1/payouts" \
-H "Authorization: Bearer sk_live_..." \
-H "Idempotency-Key: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"sourceCurrency": "NGN",
"payoutCurrency": "NGN",
"bankCode": "058",
"accountNumber": "0123456789",
"recipientName": "ADEWALE ADELEKE",
"narration": "Invoice settlement #1042"
}'
import { randomUUID } from "node:crypto";
const response = await fetch("https://api.tabsglobal.co/v1/payouts", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.TABS_SECRET_KEY}`,
"Idempotency-Key": randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 25000,
sourceCurrency: "NGN",
payoutCurrency: "NGN",
bankCode: "058",
accountNumber: "0123456789",
recipientName: "ADEWALE ADELEKE",
narration: "Invoice settlement #1042",
}),
});
const payout = await response.json();
console.log(payout);
import uuid
import requests
url = "https://api.tabsglobal.co/v1/payouts"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Idempotency-Key": str(uuid.uuid4()),
"Content-Type": "application/json",
}
payload = {
"amount": 25000,
"sourceCurrency": "NGN",
"payoutCurrency": "NGN",
"bankCode": "058",
"accountNumber": "0123456789",
"recipientName": "ADEWALE ADELEKE",
"narration": "Invoice settlement #1042",
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
{
"id": "7d9c0245-31ba-4f27-a0c3-fba4313f89e2",
"reference": "PO-AB12CD34",
"type": "PAYOUT",
"status": "PROCESSING",
"currency": "NGN",
"amountMinor": "2500000",
"ngnAmountMinor": "2500000",
"recipient": "ADEWALE ADELEKE",
"metadata": {
"railReference": "NIP-9948102941",
"provider": "embedly"
},
"createdAt": "2026-09-21T02:00:00.000Z",
"completedAt": null,
"payout": {
"rate": 1,
"transferFeeMinor": "0",
"totalDebitMinor": "2500000",
"recipientAddress": null,
"bank": null,
"accountNumber": "0123456789",
"routing": null,
"sortCode": null,
"iban": null,
"bic": null,
"narration": "Invoice settlement #1042",
"eta": "Instant",
"railReference": "NIP-9948102941"
}
}
Executes an outbound bank transfer or international payout. Supports idempotency via the
Idempotency-Key header.
Scopes required
payouts:write or *
Headers
string
required
Bearer API secret key formatted as
Bearer sk_live_... or Bearer sk_test_....string
Unique UUID v4 string to prevent duplicate transfers during network retries.
Body
number
Amount in major currency units for same-currency payouts (e.g.
25000 for 25,000 NGN).string
Source wallet currency debited (e.g.
NGN, USD). Defaults to NGN.string
Destination currency received by the beneficiary (e.g.
NGN, USD). Defaults to sourceCurrency.string
required
Full legal name of the beneficiary.
string
3-digit CBN bank code (for Nigerian NIP payouts).
string
10-digit NUBAN account number (for Nigerian NIP payouts).
string
Recipient physical address (required for international wires).
string
9-digit ABA routing number (for US ACH/Wire payouts).
string
International Bank Account Number (for EUR SEPA payouts).
string
SWIFT / BIC code.
string
6-digit UK sort code (for GBP Faster Payments).
string
Guaranteed quote ID from
POST /v1/fx/quotes if performing a cross-currency payout.string
Transfer memo or narration displayed on recipient’s bank statement.
Response
string
Transaction UUID.
string
Unique payout reference code (e.g.
PO-A1B2C3D4).string
Transaction type (
PAYOUT).string
Processing status:
PROCESSING (for instant local NIP) or PENDING (for cross-currency FX payouts).string
Payout currency code.
string
Amount in minor currency units as a string (e.g.
2500000 = 25,000.00 NGN).string
Total NGN debit amount in minor units.
string
Recipient legal name.
object
Rail reference and integration provider metadata.
string
ISO creation timestamp.
string
Settlement completion timestamp, or
null if in-flight.object
Detailed payout execution breakdown.
Show Payout properties
Show Payout properties
curl -X POST "https://api.tabsglobal.co/v1/payouts" \
-H "Authorization: Bearer sk_live_..." \
-H "Idempotency-Key: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"sourceCurrency": "NGN",
"payoutCurrency": "NGN",
"bankCode": "058",
"accountNumber": "0123456789",
"recipientName": "ADEWALE ADELEKE",
"narration": "Invoice settlement #1042"
}'
import { randomUUID } from "node:crypto";
const response = await fetch("https://api.tabsglobal.co/v1/payouts", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.TABS_SECRET_KEY}`,
"Idempotency-Key": randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 25000,
sourceCurrency: "NGN",
payoutCurrency: "NGN",
bankCode: "058",
accountNumber: "0123456789",
recipientName: "ADEWALE ADELEKE",
narration: "Invoice settlement #1042",
}),
});
const payout = await response.json();
console.log(payout);
import uuid
import requests
url = "https://api.tabsglobal.co/v1/payouts"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Idempotency-Key": str(uuid.uuid4()),
"Content-Type": "application/json",
}
payload = {
"amount": 25000,
"sourceCurrency": "NGN",
"payoutCurrency": "NGN",
"bankCode": "058",
"accountNumber": "0123456789",
"recipientName": "ADEWALE ADELEKE",
"narration": "Invoice settlement #1042",
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
{
"id": "7d9c0245-31ba-4f27-a0c3-fba4313f89e2",
"reference": "PO-AB12CD34",
"type": "PAYOUT",
"status": "PROCESSING",
"currency": "NGN",
"amountMinor": "2500000",
"ngnAmountMinor": "2500000",
"recipient": "ADEWALE ADELEKE",
"metadata": {
"railReference": "NIP-9948102941",
"provider": "embedly"
},
"createdAt": "2026-09-21T02:00:00.000Z",
"completedAt": null,
"payout": {
"rate": 1,
"transferFeeMinor": "0",
"totalDebitMinor": "2500000",
"recipientAddress": null,
"bank": null,
"accountNumber": "0123456789",
"routing": null,
"sortCode": null,
"iban": null,
"bic": null,
"narration": "Invoice settlement #1042",
"eta": "Instant",
"railReference": "NIP-9948102941"
}
}
