Multi-Corridor Telecommunications & Global Identity Intelligence Active
Enterprise dual-rail verification and messaging architecture
- • African Corridor: Powered by Paddle African Clearing & Registry Engine (Direct NIBSS BVN, NIMC NIN, CAC Corporate Registry, FRSC, KRA).
- • Global Corridor: Powered by Paddle Global AML & Biometric Engine across 220+ countries (Biometric Liveness, Passports, Driver's Licenses, OFAC, UN, EU, UK HMT Sanctions & PEP watchlists).
- • African Corridor: Powered by Paddle African Direct Telco Route direct telco routes (+234, +254, +233, +27) with automatic DND bypass.
- • Global Corridor: Powered by Paddle International Tier-1 Carrier Network tier-1 global carrier networks (+1 US/CA, +44 UK, +49 EU, Asia) with automated cross-provider failover.
Unified Banking-as-a-Service API Reference
Paddle BaaS provides unified, institutional financial infrastructure for modern African builders. Connect to dedicated virtual NUBANs, instant NIP clearing, multi-currency card issuing, automated utility vending, and corporate compliance verification through a single normalized REST API.
sk_live_... vs sk_test_...) against https://api.getpaddle.online/v1 (alias: https://business.getpaddle.online/v1).
Integrate in Just 3 Lines of Code
Make your first API request in under 90 seconds against https://api.getpaddle.online/v1. All endpoints accept and return UTF-8 JSON payloads with standardized envelopes.
curl -X POST https://api.getpaddle.online/v1/accounts/virtual \ -H "Authorization: Bearer sk_live_your_api_key_here" \ -H "Content-Type: application/json" \ -d '{ "accountName": "Acme FinTech Ltd", "bvn": "22119988776", "customerEmail": "dev@company.com" }'
API Key Authentication
Every request to the Paddle BaaS API must include your secret API key in the HTTP Authorization header using the standard Bearer authentication scheme (or via the X-API-Key header). Generate and manage your keys in the Developer Console.
Executes real money movement, debiting and crediting live bank accounts, issuing real payment cards, and vending live telco airtime.
Routes to isolated mock banking simulator on the exact same base URL. Safely test edge cases, error codes, and webhook subscriptions without moving money.
Deterministic Sandbox Magic Values
| Category | Test Value | Simulated Outcome |
|---|---|---|
| Virtual Card PAN | 5123 4567 8901 2345 | Always Authorize (HTTP 200, 3DS Approved). |
| Virtual Card PAN | 5123 4567 8901 0002 | Decline: Insufficient Balance (INSUFFICIENT_FUNDS). |
| Bank Director BVN | 22222222222 | Verified Director identity (Passes KYB Tier 2/3). |
| Inbound NUBAN Credit | POST /v1/test/simulate-inbound | Dispatches simulated NIP credit alert & webhook. |
Official Base URLs & Environment Routing
Paddle uses a unified production gateway architecture. You do not need to change your base URL when switching between Sandbox testing and Live production — simply swap sk_test_... for sk_live_... in your Authorization header.
| Service / Rail | Canonical URL | Purpose & Notes |
|---|---|---|
| REST API Base URL (Live & Sandbox) | https://api.getpaddle.online/v1 | Primary base URL for all /v1/* BaaS & Gateway endpoints. (https://business.getpaddle.online/v1 is also supported as a direct alias). |
| Hosted Checkout & PayLinks | https://pay.getpaddle.online | Customer-facing checkout portal, dynamic QR ingress, and inline JS SDK host (/v1/paddle.js). |
| Merchant & Developer Console | https://business.getpaddle.online | Web dashboard for generating API keys, managing webhooks, KYB onboarding, and viewing ledgers. |
| Developer Documentation Hub | https://api.getpaddle.online/docs | Interactive API reference & endpoint tester (also accessible at https://business.getpaddle.online/docs). |
| Postman v2.1 Collection | https://api.getpaddle.online/v1/postman.json | Import directly into Postman (pre-configured with {{baseUrl}} = https://api.getpaddle.online/v1). |
| OpenAPI 3.0 Spec | https://api.getpaddle.online/v1/openapi.json | Machine-readable OpenAPI 3.0 specification for automated SDK codegen and Swagger tooling. |
Idempotency & Replay Protection
Financial transactions must be resilient to network timeouts, server re-transmissions, and client retries. Send an optional Idempotency-Key header on POST requests to guarantee that operations like payouts or card funding are executed exactly once.
Idempotency-Key: "idemp_91a0b3c5-f8e2-416d-8e42-cb79802a4329"
Webhook Notifications & HMAC Verification
Paddle dispatches real-time webhooks whenever money enters a dedicated virtual NUBAN, when an NIP payout completes, or when a virtual card transaction occurs. Every dispatch contains the header X-Paddle-Signature computed via HMAC SHA-256 using your webhook secret.
import crypto from 'crypto'; function verifyPaddleWebhook(rawPayload, headerSignature, webhookSecret) { const expected = crypto .createHmac('sha256', webhookSecret) .update(rawPayload) .digest('hex'); return crypto.timingSafeEqual(Buffer.from(headerSignature), Buffer.from(expected)); }
Supported Webhook Event Types
| Event Identifier | Trigger Description | Typical Payload Data |
|---|---|---|
| virtual_account.credited | Inbound bank transfer delivered to dedicated NUBAN via NIP rail. | accountNumber, amount, senderName, sessionId, reference |
| payment.succeeded | Checkout gateway charge authorized and settled on ledger. | reference, amount, currency, channel, customerName |
| payout.successful | Instant outbound transfer delivered to recipient bank. | reference, nipSessionId, amount, recipientAccount, fee |
| card.transaction.approved | Virtual Visa/Mastercard online purchase authorization. | cardId, amount, merchantName, mcc, authCode |
| kyb.approved | Compliance desk completed corporate registry & BVN approval. | merchantId, kycTier, approvedAt, verifiedDirectors |
Paddle Inline & Drop-in Checkout SDK
Accept instant bank transfers (auto-detected on NIBSS with audio chime), Nigerian debit/credit cards (Mastercard, Visa, Verve with 3D Secure), USSD dial strings, OPay, and mobile wallets (Apple Pay & Google Pay) directly on your website or web app with zero redirection.
Include the Paddle SDK script tag on your payment page or checkout form:
Trigger seamless inline modal checkout anywhere in your JavaScript:
function payWithPaddle() { Paddle.setup({ key: 'pk_live_your_public_api_key', email: 'customer@company.com', amount: 5000, // Amount in Naira (₦5,000.00) currency: 'NGN', name: 'Adewale Adeleke', channels: ['transfer', 'card', 'ussd', 'opay'], onSuccess: function(response) { console.log('Payment Settled!', response.reference); // Auto-verified on NIBSS rail with crystal chime window.location.href = '/order-success?ref=' + response.reference; }, onClose: function() { console.log('Customer dismissed checkout modal'); } }); }
/v1/gateway/initialize
Initialize Gateway Checkout Session
Generates a hosted authorization URL or iframe checkout session. Returns dedicated dynamic bank transfer coordinates, unique session reference, and USSD dial strings.
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Payment amount in NGN (e.g. 5000) |
| string | Yes | Customer email address | |
| channels | string[] | No | ["transfer", "card", "ussd", "opay"] |
| reference | string | No | Unique merchant tracking reference |
{
"success": true,
"message": "Checkout session created successfully.",
"data": {
"authorization_url": "https://pay.getpaddle.online/t?ref=PAD_GW_17913...&amount=5000",
"reference": "PAD_GW_1791311707_34AB",
"access_code": "acc_87e1a3b5c4",
"account_number": "7943128784",
"bank_name": "Wema Bank",
"account_name": "pickpadi Global Ltd (via Paddle Pay)",
"ussd_codes": {
"GTBank": "*737*2*5000*7943128784#",
"ZenithBank": "*966*5000*7943128784#"
}
}
}
/v1/gateway/global/intent
Initialize Global Acquiring Intent (USD, EUR, GBP, CAD, AUD)
Initializes a white-labeled global checkout intent supporting international cards (Visa, Mastercard, American Express with 3DS2), Apple Pay, Google Pay, Buy Now Pay Later (Klarna, Afterpay, Affirm), and automatic local virtual bank transfer coordinates (US ACH/Fedwire, EU SEPA IBAN, UK Bacs). Settles directly into the merchant's multi-currency treasury wallet.
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Amount in major units (e.g. 150.00 for $150.00) |
| currency | string | Yes | 3-letter ISO code: USD, EUR, GBP, CAD, AUD |
| customerEmail | string | Yes | Customer email for payment confirmation and receipt |
| customerName | string | No | Full name of the payer (e.g. Jonathan Edwards) |
| reference | string | No | Unique merchant tracking reference (auto-generated if omitted) |
| paymentMethods | string[] | No | ["card", "apple_pay", "google_pay", "bank_transfer", "klarna", "afterpay"] |
{
"success": true,
"message": "Paddle Global Payment Intent initialized.",
"data": {
"intent_id": "pi_pad_94a08bc71e",
"client_token": "tok_pad_sec_87e1a3b5c4",
"reference": "PAD_GLB_1792348120_A1",
"amount": 150.00,
"currency": "USD",
"status": "REQUIRES_PAYMENT_METHOD",
"checkout_url": "https://pay.getpaddle.online/t?ref=PAD_GLB_1792348120_A1¤cy=USD&amount=150",
"supported_methods": ["card", "apple_pay", "google_pay", "bank_transfer", "klarna"],
"bank_transfer_instructions": {
"rail": "US ACH / Fedwire Wire Transfer",
"account_number": "0284719283",
"routing_number": "021000021",
"bank_name": "JPMorgan Chase / Paddle Federal Rail"
},
"statement_descriptor": "PADDLE* PICKPADI"
}
}
/v1/gateway/bank-debit/charge
Direct Bank Debit (US ACH, EU SEPA & UK Bacs)
Authorizes and pulls funds directly from customer bank accounts globally with compliant mandate tracking. Supports US ACH (Routing/Account), EU SEPA Core Direct Debit (IBAN), and UK Bacs (Sort Code/Account).
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Amount to debit |
| currency | string | Yes | USD (ACH), EUR (SEPA), or GBP (UK Bacs) |
| customerEmail | string | Yes | Customer email for debit notification |
| routingNumber | string | Conditional | Required for USD ACH: 9-digit ABA routing number |
| accountNumber | string | Conditional | Required for USD ACH and GBP Bacs |
| iban | string | Conditional | Required for EUR SEPA: International Bank Account Number |
| sortCode | string | Conditional | Required for GBP Bacs: 6-digit UK bank sort code |
{
"success": true,
"message": "US_ACH_DIRECT_DEBIT authorization mandate accepted.",
"data": {
"debit_id": "ach_pad_31f7ac981b",
"mandate_reference": "MND_ACH_US_1792348120",
"reference": "PAD_DBT_1792348120_01",
"rail": "US_ACH_DIRECT_DEBIT",
"amount": 250.00,
"currency": "USD",
"status": "PROCESSING",
"estimated_settlement": "1-2 Business Days"
}
}
/v1/gateway/card/charge
Nigerian Card & 3D Secure Acquiring
Initializes a direct 3D Secure authorization flow for Mastercard, Visa, and Verve debit/credit cards with bank OTP authentication.
/v1/gateway/pan-africa/charge
Pan-African Multi-Currency Acquiring (35 African Countries)
Charge customers seamlessly across Kenya (M-Pesa STK Push), Ghana (MTN MoMo, Telecel), South Africa (Ozow EFT, Capitec), Uganda, Rwanda, Côte d'Ivoire, Senegal, Cameroon, and Egypt. The gateway auto-detects payment options and currency symbols based on the order currency.
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Charge amount in target currency (e.g. 1500) |
| currency | string | Yes | KES, GHS, ZAR, UGX, RWF, XOF, XAF, TZS, ZMW, EGP, USD |
| country | string | Yes | 2-letter ISO country code (KE, GH, ZA, UG, RW, CI, SN, CM, TZ, ZM, EG) |
| customerPhone | string | Yes | Phone number for instant STK Push prompt (e.g. 254712345678) |
| network | string | No | MPESA, AIRTEL, MTN, TELECEL, WAVE, OZOW, CAPITEC |
| customerEmail | string | Yes | Customer email for receipt dispatch |
curl -X POST https://api.getpaddle.online/v1/gateway/pan-africa/charge \ -H "Authorization: Bearer sk_live_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "amount": 1500, "currency": "KES", "country": "KE", "network": "MPESA", "customerPhone": "254712345678", "customerEmail": "customer@nairobi.ke" }'
/v1/gateway/refunds
Instant Multi-Currency Refunds
Issue full or partial refunds for settled transactions across any currency (USD, EUR, GBP, NGN, KES, GHS, ZAR). Atomically adjusts double-entry ledgers, deducts merchant wallet balance, and executes upstream payment reversal to the customer.
| Field | Type | Required | Description |
|---|---|---|---|
| reference | string | Yes | The original transaction reference (e.g. PAD_GLB_1792348120_A1) |
| amount | number | No | Partial refund amount. If omitted, full transaction amount is refunded. |
| reason | string | No | requested_by_customer, duplicate, fraudulent |
{
"success": true,
"message": "Refund processed and settled successfully.",
"data": {
"refund_id": "re_pad_78dae39c",
"transaction_reference": "PAD_GLB_1792348120_A1",
"amount_refunded": 150.00,
"currency": "USD",
"status": "SUCCEEDED",
"reason": "requested_by_customer",
"created_at": "2026-10-18T15:20:00.000Z"
}
}
/v1/gateway/verify/:reference
Verify Payment Settlement (Server-to-Server)
Call from your backend using your Secret Key (Authorization: Bearer sk_live_...) to confirm genuine ledger settlement before delivering goods or services.
{
"success": true,
"message": "Transaction verified successfully.",
"data": {
"reference": "PAD_GW_1791311707_34AB",
"amount": 5000,
"currency": "NGN",
"channel": "BANK_TRANSFER",
"status": "SUCCESSFUL",
"customer_name": "Patrick Achua",
"settled_at": "2026-10-06T18:35:07.000Z"
}
}
/v1/accounts/virtual
Issue Dedicated Customer Virtual NUBAN
Instantly creates a dedicated 10-digit Nigerian NUBAN (Wema Bank or Providus Bank) linked to a specific customer or merchant account. Inbound NIP transfers settle automatically in real time.
| Field | Type | Required | Description |
|---|---|---|---|
| accountName | string | YES | Customer or business name appearing on NIP settlement screens. |
| bvn | string | OPTIONAL | Optional 11-digit customer BVN. If omitted (or when useMerchantBvn: true is passed), the account is automatically issued under your verified Merchant BVN / KYB so your users do not need to enter a BVN. |
| useMerchantBvn | boolean | OPTIONAL | Set to true (default when bvn is omitted) to issue the virtual account directly under the Merchant's own verified BVN. |
| customerEmail / email | string | OPTIONAL | Customer email for payment receipts, webhook attribution, and statement dispatches. |
| customerPhone / phone | string | OPTIONAL | Customer phone number (+234 format). |
| bank / preferredBank | string | OPTIONAL | Optional preferred bank channel (wema, gtb, sterling, globus). Defaults to automatic priority cascade: Wema Bank → GTBank → Sterling Bank. |
{
"success": true,
"data": {
"accountNumber": "7947823483",
"accountName": "Acme FinTech Ltd",
"bankName": "Wema Bank",
"bankCode": "035",
"currency": "NGN",
"bvnSource": "MERCHANT_BVN",
"status": "ACTIVE",
"accountReference": "6ad2a3552505c971873cfd9d",
"createdAt": "2026-10-16T22:06:37.715Z"
}
}
/v1/payouts
Instant NIP Express Payout Disbursement
Transfers funds instantly from your treasury balance to any Nigerian bank account via NIP instant rails with sub-3 second settlement. When called from your backend server using your Secret API Key (Authorization: Bearer sk_live_...), payouts are authorized directly by your secret key—no interactive PIN or 2FA prompt is forced.
| Field | Type | Required | Description |
|---|---|---|---|
| destinationBankCode (or bankCode) | string | YES | 3-digit CBN bank code (e.g. "058" for GTBank, "035" for Wema Bank, "232" for Sterling). |
| destinationAccountNumber (or accountNumber) | string | YES | 10-digit NUBAN account number of the recipient. |
| amount | number | YES | Disbursement amount in Naira (e.g. 50000). |
| destinationAccountName (or accountName) | string | OPTIONAL | Verified name of the recipient account holder. |
| narration | string | OPTIONAL | Transfer narration / description (max 100 characters). |
| withdrawalPin (or pin / transactionPin) | string | OPTIONAL | Optional on server-to-server sk_live_... requests. If omitted, your Secret API Key authorizes the payout automatically. If you choose to include a 4-digit PIN (e.g. "withdrawalPin": "1234" or "pin": "1234", or header X-Withdrawal-Pin: 1234), the server verifies it (or auto-enrolls it if you haven't set one yet). |
curl -X POST https://api.getpaddle.online/v1/payouts \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "destinationBankCode": "058", "destinationAccountNumber": "0123456789", "destinationAccountName": "Oluwaseun Adeleke", "amount": 5000, "narration": "Vendor Settlement", "withdrawalPin": "1234" }'
{
"success": true,
"data": {
"reference": "PO-884120-A9F21C",
"amount": 5000,
"currency": "NGN",
"country": "NG",
"status": "SUCCESSFUL",
"destinationBankCode": "058",
"destinationAccountNumber": "0123456789",
"destinationAccountName": "Oluwaseun Adeleke",
"nipSessionId": "99905826100506001298471",
"transferredAt": "2026-10-16T18:05:12.000Z"
}
}
/v1/cards
Instant Virtual Card Issuing (USD / NGN)
Programmatically issues virtual Visa or Mastercard debit cards for cross-border SaaS, advertising spend (Google/Facebook Ads), and corporate vendor procurement.
{
"success": true,
"data": {
"id": "crd_8819b2c019",
"cardholderName": "Babatunde Adeleke",
"currency": "USD",
"brand": "VISA",
"maskedPan": "4111 11** **** 1111",
"expiry": "10/29",
"status": "ACTIVE",
"balance": 250.00
}
}
/v1/cards/:cardId/secure-data
PCI-DSS Tokenized Reveal
Decrypts and retrieves unmasked 16-digit PAN, CVV, expiration date, ATM/POS PIN, and verified billing address for in-app reveal widgets.
curl -X GET https://api.getpaddle.online/v1/cards/crd_8819b2c019/secure-data \
-H "Authorization: Bearer sk_live_..."
{
"success": true,
"data": {
"id": "crd_8819b2c019",
"cardholderName": "Patrick Achua",
"cardNumber": "5064019283017065",
"maskedPan": "506401*********7065",
"cvv": "101",
"expiryMonth": "06",
"expiryYear": "2029",
"brand": "VERVE",
"status": "ACTIVE",
"pin": "1234",
"billingAddress": {
"address": "112 Commercial Ave",
"city": "Lagos",
"state": "Lagos",
"country": "Nigeria"
}
}
}
/v1/cards/:cardId/freeze
Instant Killswitch
Instantly lock or unlock a virtual or physical card to prevent or resume authorizations.
curl -X POST https://api.getpaddle.online/v1/cards/crd_8819b2c019/freeze \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"freeze": true}'
{
"success": true,
"message": "Card frozen successfully",
"data": {
"cardId": "crd_8819b2c019",
"status": "FROZEN"
}
}
/v1/cards/physical/order
POST
/v1/cards/physical/:cardId/activate
Physical EMV Debit Card Issuance & Doorstep Delivery
Produce, laser-engrave, and courier physical Visa or Mastercard chip & PIN debit cards (USD and NGN) via certified EMV card bureaus (SecureID Lagos). Supports doorstep delivery with real-time DHL Express tracking and secure in-app 4-digit ATM PIN activation.
curl -X POST https://api.getpaddle.online/v1/cards/physical/order \ -H "Authorization: Bearer sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "cardholderName": "Patrick Achua", "currency": "USD", "brand": "VISA", "cardDesign": "OBSIDIAN_BLACK", "shippingMethod": "EXPRESS_DHL", "amount": 50, "recipientName": "Patrick Achua", "recipientPhone": "+2348026990956", "street": "14 Admiralty Way", "city": "Lekki Phase 1", "state": "Lagos", "country": "NG" }'
curl -X POST https://api.getpaddle.online/v1/cards/physical/crd_phy_1792493390839/activate \ -H "Authorization: Bearer sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "last4": "7875", "pin": "4829" }'
/v1/accounts/banks
POST
/v1/accounts/resolve
Commercial Bank Directory & NIP Name Inquiries
Resolve 10-digit NUBAN account numbers to verified recipient names before initiating payouts to eliminate misdirected funds.
{
"success": true,
"data": {
"accountNumber": "0123456789",
"accountName": "CHUKWUEMEKA CHIDIEBERE OKONKWO",
"bankCode": "058",
"bankName": "Guaranty Trust Bank"
}
}
/v1/payouts/bulk
Bulk Batch Disbursements & Automated Payroll
Execute hundreds of instant disbursements in a single atomic batch payload with automatic fee deduction and per-recipient tracking.
{
"success": true,
"data": {
"batchReference": "BULK_1791180400_A1",
"totalItems": 120,
"totalAmount": 4500000.00,
"successfulDisbursements": 120,
"failedDisbursements": 0
}
}
/v1/cards/:cardId/controls
Card Spend Velocity & MCC Category Controls
Granularly configure daily spending ceilings, monthly limits, and toggle authorization channels (e-commerce, SaaS, travel, ATM).
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "dailyLimit": 1000, "monthlyLimit": 15000, "allowOnline": true, "allowAtm": false }'
Value Added Services (VAS), Utilities & Government Invoicing
Enterprise-grade programmatic infrastructure for telecommunications, energy, television, internet, gaming, transit tolls, education examination PINs, and federal revenue settlement. Powered by an intelligent dual-rail clearing architecture with automated failover and sub-second token dispatch.
/v1/bills/data/plans
POST
/v1/bills/airtime/topup
POST
/v1/bills/data/purchase
Instant VTU Airtime & High-Speed Mobile Data
Vend airtime and data bundles across all Nigerian telcos (MTN, Airtel, Glo, 9mobile) plus 140+ international countries via Reloadly. Supports SME, Corporate, and Direct data variations.
curl -X POST https://api.getpaddle.online/v1/bills/airtime/topup \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"phone": "08031234567",
"amount": 2000,
"network": "MTN"
}'
curl -X POST https://api.getpaddle.online/v1/bills/data/purchase \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"phone": "08031234567",
"network": "MTN",
"itemCode": "mtn-1500mb-1000",
"amount": 1000
}'
/v1/bills/electricity/discos
POST
/v1/bills/electricity/validate
POST
/v1/bills/electricity/recharge
Prepaid Electricity Tokens & Postpaid Clearance (All 11 DisCos)
Real-time STS token vending for AEDC, EKEDC, IKEDC, IBEDC, PHEDC, EEDC, BEDC, KEDCO, KAEDCO, JED, and YEDC. Verifies customer meter owner name, tariff class, and address prior to vend.
curl -X POST https://api.getpaddle.online/v1/bills/electricity/validate \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"meterNumber": "45701940822",
"disco": "abuja-electric",
"meterType": "prepaid"
}'
{
"success": true,
"data": {
"disco": "Abuja Electricity (AEDC)",
"meterNumber": "45701940822",
"token": "4820-1940-2819-4820-1928",
"units": "88.2 kWh",
"amount": 5000,
"discountAmount": 50,
"netDebited": 4950
}
}
/v1/bills/cable/plans
POST
/v1/bills/cable/validate
POST
/v1/bills/cable/renew
Cable Television Bouquets (DStv, GOtv, StarTimes, Showmax)
Query live bouquets and prices, validate smartcard/IUC subscriber names, and renew packages instantly with automated decoder E16 error clearing.
curl -X POST https://api.getpaddle.online/v1/bills/cable/renew \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"provider": "DSTV",
"smartcardNumber": "7028192831",
"itemCode": "dstv-compact",
"amount": 15700
}'
/v1/bills/betting/operators
POST
/v1/bills/betting/validate
POST
/v1/bills/betting/fund
Sports Betting Wallet Top-Ups
Direct real-time funding for SportyBet, Bet9ja, BetKing, 1xBet, BangBet, Merrybet, and NairaBet accounts.
curl -X POST https://api.getpaddle.online/v1/bills/betting/fund \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"operator": "SPORTYBET",
"customerId": "8031234567",
"amount": 5000
}'
/v1/bills/internet/providers
POST
/v1/bills/internet/purchase
Internet & Fiber Broadband Subscriptions
Programmatically renew broadband and fiber internet data subscriptions for Smile Communications, Spectranet, Swift 4G, and IPNX.
curl -X POST https://api.getpaddle.online/v1/bills/internet/purchase \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"provider": "SMILE",
"customerId": "1002938475",
"itemCode": "smile-monthly-50gb",
"amount": 12500
}'
/v1/bills/tolls
POST
/v1/bills/tolls/pay
Transit Tolls & e-Tag Top-Ups (LCC)
Instant contactless e-tag balance funding for the Lekki-Epe Expressway and Lekki-Ikoyi Link Bridge toll gates (LCC).
curl -X POST https://api.getpaddle.online/v1/bills/tolls/pay \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"billerCode": "BIL125",
"customerIdentifier": "1029384756",
"amount": 5000
}'
/v1/bills/education/pins
POST
/v1/bills/education/purchase
National Examination e-PINs (WAEC, NECO, JAMB)
Instant delivery of registration vouchers, UTME e-PINs, and result-checker scratch cards for WAEC, NECO, and JAMB.
curl -X POST https://api.getpaddle.online/v1/bills/education/purchase \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"itemCode": "WAEC-RESULT-PIN",
"phone": "08031234567",
"amount": 3500
}'
/v1/bills/remita/validate
POST
/v1/bills/remita/pay
POST
/v1/bills/firs/validate
POST
/v1/bills/firs/pay
Government Invoicing (Remita RRR) & Federal Taxes (FIRS)
Direct integration with the Federal Treasury Single Account (TSA). Query invoice details via 12-digit Remita Retrieval Reference (RRR) and clear Company Income Tax, VAT, and Stamp Duties with official government receipts.
curl -X POST https://api.getpaddle.online/v1/bills/remita/pay \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"rrr": "280194820194",
"amount": 25000
}'
curl -X POST https://api.getpaddle.online/v1/bills/firs/pay \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"assessmentNumber": "FIRS-2026-94820",
"amount": 150000,
"tin": "24910482-0001"
}'
/v1/bills/giftcards
POST
/v1/bills/giftcards/order
Global Digital Gift Cards & Brand Vouchers
Order digital brand gift cards (Apple, Amazon, Google Play, Steam, PlayStation, Netflix, Spotify, Xbox) in USD, EUR, GBP, and NGN with instant code and redemption PIN delivery.
curl -X POST https://api.getpaddle.online/v1/bills/giftcards/order \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"productId": "apple-us-50",
"amount": 50,
"currency": "USD",
"recipientEmail": "customer@company.com"
}'
Global Flight Search & Electronic Ticketing
Query real-time flight inventory across 300+ global airlines (Emirates, Qatar Airways, British Airways, RwandAir, Kenya Airways, United, KLM, Lufthansa, Air France, Delta, etc.) with live baggage allowances, cabin tiers, and wholesale partner rates. Issue confirmed airline PNRs and 13-digit e-tickets atomically debited from your Available Spend Wallet.
402 INSUFFICIENT_WALLET_EQUITY. In the event of an upstream airline decline, the held fare is automatically refunded back to your spend balance with zero friction.
/v1/flights/airports
AUTO COUNTRY SEARCH
Search 300+ global airports, metropolitan areas, cities, and countries. Supports fuzzy keyword matching, ISO country code filtering, and primary international gateway identification.
search(string): City name, country, IATA code, or keyword (e.g."Lagos","Nigeria","London","DXB").country(string, optional): Filter by country name or 2-letter ISO code (e.g."NG","United Kingdom").limit(number, optional): Number of matching airports to return (default 20, max 50).
curl -G "https://api.getpaddle.online/v1/flights/airports" -d "search=Nigeria" -H "Authorization: Bearer sk_live_..."
{
"success": true,
"data": {
"count": 5,
"query": "Nigeria",
"airports": [
{
"code": "LOS",
"city": "Lagos",
"country": "Nigeria",
"countryCode": "NG",
"airport": "Murtala Muhammed International Airport",
"isHub": true
},
{
"code": "ABV",
"city": "Abuja",
"country": "Nigeria",
"countryCode": "NG",
"airport": "Nnamdi Azikiwe International Airport",
"isHub": true
}
]
}
}
/v1/flights/search
Initiate a multi-airline live search. Accepts 3-letter IATA codes ("LOS", "LHR"), full city names ("Lagos", "London"), or country names ("Nigeria", "United Kingdom") with automatic international gateway resolution. By default, waitForResults: true will poll the NDC network and return aggregated offers directly in the response.
{
"origin": "Lagos", // Or "LOS", or "Nigeria"
"destination": "London", // Or "LHR", or "United Kingdom"
"departureDate": "2026-11-20",
"returnDate": "2026-11-28",
"adults": 1,
"cabinClass": "economy",
"waitForResults": true
}
{
"success": true,
"data": {
"searchId": "c40728e1-8b6d-4513-8e31-f72565dec13c",
"status": "succeeded",
"resolvedOrigin": {
"code": "LOS",
"city": "Lagos",
"country": "Nigeria",
"resolvedFrom": "CITY_LOOKUP"
},
"resolvedDestination": {
"code": "LHR",
"city": "London",
"country": "United Kingdom",
"resolvedFrom": "CITY_LOOKUP"
},
"flightsCount": 10,
"flights": [...]
}
}
/v1/flights/orders
Issue an electronic airline ticket for a selected offer. Automatically debits your spend wallet.
{
"offer_id": "off_034ka1V9eHUwPMiTVmqMC0",
"amount": 439.62,
"currency": "USD",
"clientReference": "PDL-FLT-10029",
"passengers": [
{
"title": "mr",
"given_name": "Tunde",
"family_name": "Adekunle",
"born_on": "1992-04-18",
"gender": "m",
"email": "tunde.adekunle@example.com",
"phone_number": "+2348031234567"
}
]
}
{
"success": true,
"message": "Flight ticket issued successfully",
"data": {
"bookingId": "ord_0000A1234B",
"reference": "PDL-FLT-10029",
"status": "confirmed",
"ticketNumbers": ["085-2412891230"],
"passengers": [
{ "name": "Tunde Adekunle", "email": "tunde.adekunle@example.com" }
]
}
}
Insufficient Spend Wallet Equity (402 Payment Required)
If your Available Spend Wallet balance is below the total required ticket fare, the issuance is safely blocked with a transparent breakdown:
{
"success": false,
"error": {
"code": "INSUFFICIENT_WALLET_EQUITY",
"message": "Insufficient USD wallet equity to issue flight ticket. Required: $439.62, Available: $0.00. Please fund your USD Available Spend Wallet."
}
}
/v1/identity/cac
CAC Advance Corporate Registry Lookup
Real-time querying of the Corporate Affairs Commission (CAC) database. Returns registered business status, incorporation date, active directors, and registered address.
{
"success": true,
"data": {
"rcNumber": "RC-1928471",
"companyName": "PADDLE TECHNOLOGIES LIMITED",
"registrationDate": "2022-04-14",
"status": "ACTIVE",
"city": "Lagos",
"directors": [
{ "name": "BABATUNDE ADELEKE", "role": "Managing Director" }
]
}
}
Multi-Market Investments & Stock Trading API
Embed fractional US stock trading (Apple, Nvidia, Tesla, Microsoft, S&P 500 ETFs) with full SEC / FINRA / SIPC custody protection up to $500,000 alongside Nigerian equities on the Nigerian Exchange (NGX) and regulated high-yield fixed income funds, Money Market Funds (MMF), and Treasury Bills via the Paddle Wealth Engine.
Real-time NASDAQ & NYSE direct execution. Supports fractional shares by dollar amount (e.g. $10 of NVDA), automated W-8BEN tax filings for non-US investors, and SIPC custody protection.
Securities and Exchange Commission (SEC Nigeria) regulated custody. Direct CSCS clearing for blue-chips (MTNN, Dangote) and daily-accruing Money Market Fund yields up to 18.65% APY.
/v1/investments/markets
Query real-time trading status, opening/closing clocks, and exchange operational schedules for both US and Nigerian markets.
curl -X GET https://api.getpaddle.online/v1/investments/markets \ -H "Authorization: Bearer sk_live_..."
{
"success": true,
"data": {
"markets": {
"US": {
"name": "United States Equities (Wall Street)",
"isOpen": true,
"tradingHours": "09:30 - 16:00 EST",
"fractionalTrading": true
},
"NG": {
"name": "Nigerian Capital Markets & Wealth",
"isOpen": false,
"tradingHours": "10:00 - 14:30 WAT"
}
}
}
}
/v1/investments/assets
GET
/v1/investments/quotes/:symbol
Browse the universe of US equities (AAPL, TSLA, NVDA), Nigerian stocks (MTNN, DANGCEM), and mutual funds (PAD-MMF-STANBIC), or fetch real-time bid/ask quotes.
# Real-time quote for Nvidia (NVDA) curl -X GET https://api.getpaddle.online/v1/investments/quotes/NVDA \ -H "Authorization: Bearer sk_live_..." # Real-time quote for Stanbic IBTC Money Market Fund curl -X GET https://api.getpaddle.online/v1/investments/quotes/PAD-MMF-STANBIC \ -H "Authorization: Bearer sk_live_..."
{
"success": true,
"data": {
"symbol": "NVDA",
"market": "US",
"currency": "USD",
"price": 141.20,
"bid": 141.15,
"ask": 141.25,
"changePercent24h": 3.12,
"fractionalSupported": true
}
}
/v1/investments/accounts
Onboard an individual or corporate investor, automatically linking W-8BEN tax status for US stocks and creating a CSCS depository account for Nigeria.
curl -X POST https://api.getpaddle.online/v1/investments/accounts \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"investorName": "Chiemela Kingsley",
"investorEmail": "chiemela@globallinelogistics.com",
"country": "NG",
"bvn": "22119988776"
}'
/v1/investments/orders
GET
/v1/investments/orders
Place an order for US stocks (supports fractional dollar amounts), Nigerian shares, or mutual funds with atomic treasury settlement.
{
"market": "US",
"symbol": "NVDA",
"side": "BUY",
"type": "MARKET",
"amount": 50.00
}
{
"success": true,
"data": {
"orderId": "PAD-US-1793082910-K9X2M",
"market": "US",
"symbol": "NVDA",
"side": "BUY",
"status": "FILLED",
"executionDetails": {
"filledQty": 0.354107,
"filledAvgPrice": 141.20,
"notional": 50.00,
"currency": "USD"
}
}
}
/v1/investments/portfolio
GET
/v1/investments/yields
Retrieve aggregated investor portfolio holdings across all asset classes or inspect current annualized yield rates across Money Market Funds and Treasury Bills.
# Fetch live portfolio positions curl -X GET https://api.getpaddle.online/v1/investments/portfolio \ -H "Authorization: Bearer sk_live_..." # Fetch daily compounding yields (Money Market, Treasury Bills) curl -X GET https://api.getpaddle.online/v1/investments/yields \ -H "Authorization: Bearer sk_live_..."
/v1/identity/bvn
POST
/v1/identity/nin
BVN, NIN & Pan-African Identity Verification
Verify 11-digit Bank Verification Numbers (BVN), National Identity Numbers (NIN), and Pan-African KYC documents (Ghana Card, Kenya KRA PIN / National ID, South Africa Smart ID) with AML/PEP watchlist screening.
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "bvn": "22222222222" }'
/v1/otp/send
Dual-Channel 2FA Authentication (SMS & Voice Call)
Dispatch 4 or 6 digit verification tokens with automatic DND bypass. Supports both high-speed SMS delivery and interactive text-to-speech Voice calls.
curl -X POST https://api.getpaddle.online/v1/otp/send \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "to": "+2348012345678", "channel": "voice", "pinLength": 6 }'
/v1/open-banking/auth
GET
/v1/open-banking/accounts
Open Banking Account Linking & Statement Sync
Link customer commercial bank accounts to retrieve real-time balances, authenticated 12-month bank statements, and verified account holder identity for credit underwriting.
-H "Authorization: Bearer sk_live_..."
/v1/escrow/create
GET
/v1/escrow
Programmable Multi-Milestone Smart Escrow
Lock buyer funds in an audited escrow vault and release disbursements programmatically across verified delivery milestones, with built-in dispute arbitration and refund protection.
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "title": "B2B Equipment Supply", "buyerEmail": "buyer@company.com", "sellerEmail": "vendor@supplier.ng", "amount": 500000, "currency": "NGN", "inspectionDays": 3 }'
Treasury Wallet vs. Available Spend Wallet
Paddle BaaS operates on an institutional dual-balance liquidity model. It strictly differentiates between Direct Bank Top-Ups (T+0 Instant Cleared Cash) and Payment Gateway Acquiring (T+3 Interchange Clearing), paired with Developer Operational Liquidity Pools for 100% API uptime.
| Component | Settlement Inflow Rails | Clearing Timeline | Chargeback / Reversal Risk | Capabilities & Utilization |
|---|---|---|---|---|
|
Available Spend Wallet
walletBalance / balance
|
Direct Interbank Wires (Wema NIP, Fedwire, ACH Push, UK FPS, SEPA Instant, On-Chain USDT) | T+0 (Instant Finality) | None (Irrevocably Cleared Bank Cash) | Immediately spendable: API Card Issuing, Real-Time Payouts, Airtime/Utilities, Service debits. |
|
In-Clearing Vault
pendingBalance
|
Payment Gateways, Visa/Mastercard 3DS, Apple Pay, Google Pay, BNPL (Klarna/Affirm) | T+3 Business Days | High (60-120 day card scheme dispute window) | Protected reserve. Auto-sweeps to Spend Wallet at maturity. Can be accelerated via express cashout. |
|
Treasury Vault (Total)
Spend + In-Clearing + Reserves
|
Consolidated Portfolio across all 11 global currency rails | Continuous Real-Time | Fully collateralized | Total capital base, developer safety float sentinel, and FX auto-sweep liquidity buffer. |
Developer Liquidity Pools & Sentinel Alerts
Developers building fintech apps (cards, wallets, payouts) on our API maintain pre-funded operational liquidity pools. The Treasury Sentinel monitors balances in real-time. If available spend float drops below your configured minThreshold, automated webhook alerts and emails are triggered before transactions decline.
/v1/wallet/balance
— Check Spend vs. In-Clearing Balances
-H "Authorization: Bearer sk_live_..."
View Response Payload
{
"success": true,
"data": {
"currency": "NGN",
"availableBalance": 8689.50,
"pendingBalance": 0.00,
"totalTreasury": 8689.50,
"clearingRail": "T+0 Instant Cleared Bank Cash",
"multiCurrency": [
{ "currency": "USD", "balance": 0.00, "pendingBalance": 0.00 },
{ "currency": "GBP", "balance": 0.00, "pendingBalance": 0.00 },
{ "currency": "EUR", "balance": 0.00, "pendingBalance": 0.00 },
{ "currency": "USDT", "balance": 0.00, "pendingBalance": 0.00 }
]
}
}
/v1/treasury/pools
— Developer Float Health & Thresholds
-H "Authorization: Bearer sk_live_..."
/v1/treasury/thresholds
— Configure Safety Threshold Watermarks
-H "Authorization: Bearer sk_live_..."
-H "Content-Type: application/json"
-d '{ "NGN": { "minThreshold": 50000, "targetBuffer": 250000, "autoRebalance": false }, "USD": { "minThreshold": 50, "targetBuffer": 250, "autoRebalance": true }, "USDT": { "minThreshold": 100, "targetBuffer": 500, "autoRebalance": false } }'
/v1/treasury/sweep-clearing
— Execute Maturity Sweep of T+3 Gateway Funds
-H "Authorization: Bearer sk_live_..."
/v1/wallet/balance
GET
/v1/ledger/statements
Treasury Wallets & Double-Entry General Ledger
Query real-time multi-currency treasury balances, immutable double-entry journal postings (Debits = Credits), and cryptographic trial balance proofs.
-H "Authorization: Bearer sk_live_..."
Autonomous AI Agent Banking & Model Context Protocol (MCP)
Equip software agents (Claude 3.7, GPT-4o, DeepSeek, LangChain) with sovereign bank accounts, velocity spend caps, programmatic virtual debit cards, and standard Model Context Protocol (MCP) toolkits.
Sponsor KYB Anchor
Under CBN and FinCEN standards, agents operate as Authorized Delegates anchored to a verified corporate sponsor with dedicated composite NUBANs (e.g. MONOPAUSE / AUTOPROCURE).
Maker-Checker Dual Control
Every agent has strict velocity controls: daily budgets, single-transaction ceilings, and approval thresholds that automatically queue payments for human sign-off.
Standard MCP Server
Zero-friction integration with Claude Desktop, Cursor, and Antigravity via JSON-RPC 2.0 over Stdio and HTTP Server-Sent Events (SSE).
Connecting Your AI Agent via MCP
Add Paddle BaaS to your claude_desktop_config.json or .cursor/mcp.json:
{
"mcpServers": {
"paddle": {
"command": "node",
"args": ["/var/www/paddle/backend/bin/paddle-mcp.cjs"],
"env": {
"PADDLE_API_URL": "https://api.getpaddle.online",
"PADDLE_API_KEY": "sk_live_your_merchant_key"
}
}
}
}
https://api.getpaddle.online/v1/mcp/sse
POST https://api.getpaddle.online/v1/mcp
Live MCP Tool Manifest (8 Tools)
Available to LLMs through standard Model Context Protocol calling.
| Tool Name | Parameters | Description | Compliance Guardrail |
|---|---|---|---|
| paddle_deploy_ai_agent | name, model, dailyBudget, maxPerTx, approvalLimit | Provisions dedicated NUBAN, API key & ledger account. | Sponsor KYB Verified |
| paddle_list_agents | status (optional) | Lists all fleet agents, daily remaining spend & balances. | Multi-Tenant Scoped |
| paddle_disburse_agent_payment | agentId, amount, destinationAccountNumber, destinationBankCode | Executes instant NIP interbank settlement transfer. | Velocity & Dual Control |
| paddle_issue_agent_card | agentId | Provisions virtual Mastercard/Visa for SaaS checkout. | Spend Ceiling |
| paddle_killswitch_agent | agentId, action (freeze/unfreeze) | Instant freeze toggle to stop all outflows and card debits. | Immediate Revocation |
| paddle_query_rails | includeConsumers | Queries NGN, USD, EUR, GBP treasury corridors and accounts. | Read-Only |
REST API Quickstart (cURL & Node.js)
# 1. Deploy AI Agent with Dedicated NUBAN
curl -X POST https://api.getpaddle.online/v1/agents \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"name": "AutoProcure-Bot",
"model": "claude-3-7-sonnet",
"dailyBudget": 50000,
"maxPerTransaction": 10000,
"requiresApprovalAbove": 25000
}'
# 2. Autonomous Agent NIP Payment
curl -X POST https://api.getpaddle.online/v1/agents/YOUR_AGENT_ID/pay \
-H "Authorization: Bearer ag_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 8000,
"currency": "NGN",
"destinationAccountNumber": "0123456789",
"destinationBankCode": "058",
"narration": "Cloud compute settlement"
}'
Standard Error Handling
All client and server errors follow RFC 7807 problem details with normalized error codes.
| HTTP Status | Error Code | Meaning |
|---|---|---|
| 200 OK | SUCCESS | Request processed successfully. |
| 400 Bad Request | INVALID_PAYLOAD | Required attributes missing or failed type validation. |
| 401 Unauthorized | INVALID_API_KEY | Missing or revoked Bearer secret token. |
| 402 Payment Required | INSUFFICIENT_FUNDS | Treasury wallet balance is below transaction requirement. |
| 429 Too Many Requests | RATE_LIMIT_EXCEEDED | Request velocity exceeded plan tier ceiling (e.g. 50 req/sec). |
Rate Limit Headers
Every response includes RFC 6585 headers detailing current quota:
/v1/accounts/global
Global & Pan-African Multi-Currency Accounts
Issue virtual collection accounts with domestic clearing coordinates. Pass currency and accountName. Use sk_test_ keys to receive simulated sandbox accounts for every corridor.
| Corridor | Currency | Rails | Coordinates | Status |
|---|---|---|---|---|
| United States | USD | ACH, Fedwire, SWIFT | Account # + 9-digit ABA routing | LIVE |
| United Kingdom | GBP | Faster Payments, BACS, CHAPS | 8-digit account # + 6-digit sort code | LIVE |
| European Union | EUR | SEPA, SEPA Instant, SWIFT | Dedicated IBAN + BIC | LIVE |
| Nigeria | NGN | NIBSS Instant Payment (NIP) | 10-digit NUBAN (via /v1/accounts/virtual) | LIVE |
| Kenya | KES | PesaLink, EFT, RTGS, M-Pesa Paybill | Domestic account # | ACTIVATION REQUIRED · SANDBOX READY |
| Ghana | GHS | GHIPSS, MTN MoMo, Telecel Cash, AirtelTigo | Domestic account # | ACTIVATION REQUIRED · SANDBOX READY |
| South Africa | ZAR | Instant EFT, NSS | Domestic account # | ACTIVATION REQUIRED · SANDBOX READY |
| Uganda | UGX | EFT, RTGS, MTN MoMo, Airtel Money | Domestic account # | ACTIVATION REQUIRED · SANDBOX READY |
| Rwanda | RWF | R-Switch, MTN MoMo, Airtel Money | Domestic account # | ACTIVATION REQUIRED · SANDBOX READY |
curl -X POST https://api.getpaddle.online/v1/accounts/global \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "currency": "USD", "accountName": "Acme Global Ventures LLC", "country": "US" }'
// 201 Created
{
"success": true,
"data": {
"currency": "USD",
"accountName": "Acme Global Ventures LLC",
"accountNumber": "406381751984",
"routingNumber": "121000248",
"bankName": "Wells Fargo",
"status": "ACTIVE",
"supportedRails": ["ACH", "DOMESTIC_FEDWIRE", "SWIFT"],
"provider": "PADDLE_GLOBAL"
}
}
// 502 - corridor not yet activated on your profile (KES, GHS, ZAR, UGX, RWF)
{
"success": false,
"error": {
"code": "KES_ACCOUNT_PROVISION_FAILED",
"message": "KES regional clearing corridor requires activation on your merchant commercial profile. Contact support@getpaddle.online or switch to sandbox mode to test."
}
}
/v1/crypto/address
MAINNET ACTIVE
Crypto Stablecoin Wallets (USDT, USDC)
Generate dedicated on-chain deposit addresses across TRC-20, Polygon, Base, and Solana networks. Supports both Merchant Primary Treasury Wallets and End-User Sub-Account Issuance via customerId with zero address collisions.
All crypto issuance, deposit tracking, atomic balance crediting, and outbound withdrawals are fully verified and active. Supported on-chain token contracts: USDT on Tron (TRC-20: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t) and USDC on Polygon PoS (0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359), Base L2 (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), and Solana (EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v).
curl -X POST https://api.getpaddle.online/v1/crypto/address \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "currency": "USDT", "network": "TRC20", "customerId": "usr_994821", "customerEmail": "user@example.com", "customerName": "Alice Johnson", "metadata": { "platformUserId": "994821", "tier": "gold" } }'
curl -X GET "https://api.getpaddle.online/v1/crypto/addresses?page=1&limit=20" \
-H "Authorization: Bearer sk_live_..."
curl -X GET https://api.getpaddle.online/v1/crypto/addresses/usr_994821 \
-H "Authorization: Bearer sk_live_..."
/v1/crypto/deposits
REAL-TIME WEBHOOKS
Customer Deposit Confirmations & Webhooks
Detect and confirm incoming customer deposits in real-time. Paddle listens to on-chain blocks and automatically dispatches HMAC-signed webhooks to your endpoint while maintaining an on-chain audit trail.
curl -X GET "https://api.getpaddle.online/v1/crypto/deposits?customerId=usr_994821¤cy=USDT" \
-H "Authorization: Bearer sk_live_..."
curl -X GET "https://api.getpaddle.online/v1/crypto/deposits/DEP_USDT_1793284092" \
-H "Authorization: Bearer sk_live_..."
When an on-chain transfer to any issued customer address reaches required block confirmations, Paddle posts this payload to your webhook URL with signature header X-Paddle-Signature:
{
"event": "crypto.deposit.credited",
"data": {
"reference": "DEP_USDT_1793284092",
"currency": "USDT",
"cryptoAmount": 100.0,
"depositAddress": "TYDzsYUEpvnYmQk4zGP9sWWcTEd36d57R8",
"customerId": "usr_994821",
"network": "Tron (TRC-20)",
"txHash": "7a4f91e92d8bc...b8a",
"explorerUrl": "https://tronscan.org/#/transaction/7a4f91e92d8bc...b8a",
"confirmations": 12,
"status": "CONFIRMED",
"timestamp": "2026-10-29T15:20:00.000Z"
}
}
/v1/crypto/withdraw
OUTBOUND ON-CHAIN
Crypto Withdrawals & Outbound Transfers
Send USDT (TRC-20) or USDC (Polygon/Base/Solana) to any external blockchain address or customer wallet. Disbursed directly from your multi-currency crypto treasury balance with real-time on-chain hash broadcast.
curl -X POST https://api.getpaddle.online/v1/crypto/withdraw \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "currency": "USDT", "amount": 50.0, "destinationAddress": "TNPeejyDq57qMpxoYJ26pSp35d33Vn22tJ", "network": "TRON (TRC-20)", "reference": "WDR_CLIENT_773910", "narration": "Customer withdrawal for Jane Doe" }'
curl -X GET "https://api.getpaddle.online/v1/crypto/withdrawals?page=1&limit=20" \
-H "Authorization: Bearer sk_live_..."
/v1/crypto/simulate-deposit
SANDBOX TEST RAIL
Sandbox Deposit Simulator
Simulate incoming on-chain customer deposits in Sandbox to verify your backend webhook listeners and wallet crediting logic without touching real cryptocurrency.
curl -X POST https://api.getpaddle.online/v1/crypto/simulate-deposit \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{ "customerId": "usr_994821", "currency": "USDT", "amount": 100.0 }'
/v1/crypto/swap
Instant Crypto-to-Fiat Swap Desk
Execute atomic liquidation of incoming crypto into settled NGN or USD treasury balances with zero market slippage.
curl -X POST https://api.getpaddle.online/v1/crypto/swap \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "fromCurrency": "USDT", "toCurrency": "NGN", "amount": 500 }'
/v1/payouts/tuition
Cross-Border University Tuition Rail
Direct student tuition settlement to universities in the UK, US, Canada, and Europe matching Flywire and Convera institutional wire protocols.
curl -X POST https://api.getpaddle.online/v1/payouts/tuition \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "institutionName": "University of Manchester", "studentId": "STU-901284", "studentFullName": "Oluwaseun Adeleke", "amount": 2500, "destinationCurrency": "GBP", "country": "GB", "beneficiaryIbanOrAccount": "GB29NWBK60161331926819", "swiftBic": "NWBKGB2L" }'
{
"success": true,
"data": {
"reference": "TUT-849201-9F2A1B",
"status": "SUCCESSFUL",
"institutionName": "University of Manchester",
"studentId": "STU-901284",
"studentFullName": "Oluwaseun Adeleke",
"amount": 2500,
"destinationCurrency": "GBP",
"trackingReference": "TUT-849201-9F2A1B"
}
}
/v1/bills/remita/pay
Remita RRR & FIRS Statutory Tax Payments
Lookup and settle Remita Retrieval Reference (RRR) invoices, MDAs, TSA collections, and Federal Inland Revenue Service (FIRS) tax assessments programmatically.
curl -X POST https://api.getpaddle.online/v1/bills/remita/pay \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "rrr": "1100-2918-3819", "amount": 25000 }'
/v1/security/scoped-keys
Scoped API Keys & Production IP Whitelisting
Enforce institutional security policies by pinning API credentials to authorized CIDR blocks and issuing granular scoped keys (e.g. read-only ledgers, payout-only runners).
curl -X POST https://api.getpaddle.online/v1/security/ip-whitelist \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "ips": ["197.210.84.12", "102.89.23.0/24"] }'
/v1/counterparties
Counterparties & Saved Beneficiaries Directory
Store verified supplier, vendor, and payroll bank accounts to automate repetitive bulk disbursements without recurring name lookups.
curl -X POST https://api.getpaddle.online/v1/counterparties \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Dangote Cement Logistics", "bankCode": "058", "accountNumber": "0123456789" }'
/v1/disputes
Disputes, Chargebacks & Evidence Defense
Track customer chargebacks raised on card or NIP rails. Accept refunds or upload proof of delivery to overturn claims.
curl -X POST https://api.getpaddle.online/v1/disputes/DSP_98124/resolve \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "resolutionType": "DEFENDED", "notes": "Waybill signed by customer" }'
/v1/team/invite
Team Management & Access Roles
Programmatically invite engineering and operations teammates, assign RBAC roles (ADMIN, DEVELOPER, FINANCE, AUDITOR), and enforce multi-user governance.
curl -X POST https://api.getpaddle.online/v1/team/invite \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Adaobi Nnaji", "email": "adaobi@company.com", "role": "DEVELOPER" }'
/v1/integrations/slack-discord
Real-Time Slack & Discord Alerts
Dispatch instant notifications to engineering or treasury channels when high-value payments settle, large payouts trigger, or KYC updates occur.
curl -X POST https://api.getpaddle.online/v1/integrations/slack-discord \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "channel": "slack", "webhookUrl": "https://hooks.slack.com/services/...", "events": ["payment.succeeded", "payout.failed"] }'
Build With Us — Turnkey FinTech & Product Engineering
Don't have an in-house engineering team, or want to launch your financial product 5x faster? Paddle Build With Us pairs your business with our principal FinTech engineers to design, build, test, and deploy your complete web and mobile solution (iOS, Android & Web Admin Console) directly on top of Paddle's licensed BaaS infrastructure—with 100% source code ownership, white-label branding, and CBN/PCI-DSS compliance baked in.
neobank-wallet
1. Digital Neobank & Wallet App
Full iOS/Android & Web digital bank with dedicated commercial Wema/GTBank/Sterling NUBANs, instant NIP transfers, USD/NGN virtual cards, and biometric KYC.
vtu-bills-betting-superapp
2. VTU, Bills & Betting Super-App
High-margin consumer utility app with automated wallet funding, VTU airtime/data, prepaid DisCo electricity tokens, DSTV/GOTV, sports betting & gift cards.
payment-gateway-pos
3. White-Label Payment Gateway & POS
Merchant acquiring platform with inline checkout modal, payment links, dynamic QR SoftPOS, voicebox audio alerts, and T+0 instant settlement.
crypto-fx-remittance
4. Crypto & Cross-Border FX Desk
Multi-currency treasury & remittance app with USD/EUR/GBP accounts, USDT/USDC deposit wallets, instant crypto-to-NGN swap, and global tuition/supplier wires.
escrow-marketplace-lending
5. Marketplace Escrow & Lending
Programmable multi-milestone escrow platform or digital credit/BNPL app with Open Banking bank statement underwriting and automated repayment sweeps.
custom-enterprise-integration
6. Custom Enterprise & ERP Integration
Dedicated engineering squad to integrate Paddle BaaS into your existing ERP, e-commerce store, hospital/school portal, or custom SaaS idea.
/v1/build-with-us/services
/v1/build-with-us/inquire
Programmatically query our turnkey engineering catalog, delivery SLAs, and tech stack via GET /v1/build-with-us/services, or submit a project scoping & quote request directly via POST /v1/build-with-us/inquire.
curl -X POST https://api.getpaddle.online/v1/build-with-us/inquire \
-H "Content-Type: application/json" \
-d '{ "fullName": "Tunde Bakare", "companyName": "NovaPay Africa Ltd", "email": "tunde@novapay.ng", "phone": "+2348031234567", "serviceId": "neobank-wallet", "timeline": "3-4 Weeks", "projectDescription": "We want to launch a mobile wallet app with Wema/GTB virtual accounts, virtual USD cards, and instant bill payments." }'
Interactive Endpoint Runner
Execute real GET and POST requests against https://api.getpaddle.online/v1 directly from your browser. Public endpoints work immediately without a key; paste your sk_test_... or sk_live_... key to test authenticated treasury, virtual accounts, payouts, cards, bills, identity, and escrow endpoints.
// Click "Send" to execute this request live against https://api.getpaddle.online...