Paddle v1.0.0 API Docs
Console
Paddle Documentation
🌐

Multi-Corridor Telecommunications & Global Identity Intelligence Active

Enterprise dual-rail verification and messaging architecture

Identity & KYC Verification
  • • 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).
Telecom OTP & Transactional SMS
  • • 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.
SECTION 1 ARCHITECTURE

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.

NIP Settlement
< 2.5s
T+0 Instant Clearing
Card Networks
Visa & MC
USD & NGN Issuance
Platform SLA
99.98%
Multi-Rail Redundancy
Data Standard
AES-256
TLS 1.3 Strict Vault
Canonical Live & Sandbox Base URL All /v1 REST Endpoints
https://api.getpaddle.online/v1
Live vs. Sandbox mode is controlled automatically by your API key (sk_live_... vs sk_test_...) against https://api.getpaddle.online/v1 (alias: https://business.getpaddle.online/v1).
ZERO FRICTION QUICKSTART

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"
  }'
SECURITY AUTHENTICATION

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.

Authorization: Bearer sk_live_9a8b7c6d5e4f...
Live API Keys sk_live_...

Executes real money movement, debiting and crediting live bank accounts, issuing real payment cards, and vending live telco airtime.

Sandbox Test Keys sk_test_...

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.
SECTION 4 BASE URLS & ENVIRONMENTS

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.
RELIABILITY IDEMPOTENCY

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.

# Send a UUID v4 idempotency token
Idempotency-Key: "idemp_91a0b3c5-f8e2-416d-8e42-cb79802a4329"
REAL-TIME EVENTS WEBHOOKS

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.

verify_webhook.js (Node.js) HMAC SHA-256
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
LIVE SDK PADDLE PAYMENT GATEWAY

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.

Client-Side Drop-in JavaScript (paddle.js)
Zero Dependencies

Include the Paddle SDK script tag on your payment page or checkout form:

<script src="https://pay.getpaddle.online/v1/paddle.js"></script>

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');
    }
  });
}
POST /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)
email 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#"
    }
  }
}
POST /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&currency=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"
  }
}
POST /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"
  }
}
POST /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.

POST /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"
  }'
POST /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"
  }
}
GET /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"
  }
}
POST /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.

Request Body Parameters
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.
201 Created — Normalized Response
{
  "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"
  }
}
POST /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.

Request Body Parameters
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).
# Server-to-Server Instant NIP Payout (withdrawalPin is optional with sk_live_...)
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" }'
200 OK — Payout Result
{
  "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"
  }
}
POST /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.

200 OK — Issued Card Schema
{
  "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
  }
}
GET /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.

# Fetch Unmasked Sensitive Card Credentials
curl -X GET https://api.getpaddle.online/v1/cards/crd_8819b2c019/secure-data \
  -H "Authorization: Bearer sk_live_..."
// Response 200 OK
{
  "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"
    }
  }
}
POST /v1/cards/:cardId/freeze Instant Killswitch

Instantly lock or unlock a virtual or physical card to prevent or resume authorizations.

# Freeze / Unfreeze Payload
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}'
// Response 200 OK
{
  "success": true,
  "message": "Card frozen successfully",
  "data": {
    "cardId": "crd_8819b2c019",
    "status": "FROZEN"
  }
}
POST /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.

Physical USD Card Fee
$5.00 (₦7,750)
Includes EMV chip & laser engraving
Physical NGN Card Fee
₦1,500 ($1.00)
Interbank Verve/Mastercard chip card
Courier Shipping Options
₦3,000 (Std) / ₦10,000 (DHL)
1-2 days priority with live GPS tracking
POST /v1/cards/physical/order — Order & Transmit to Bureau
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"
  }'
POST /v1/cards/physical/:cardId/activate — In-App Hardware PIN Setup
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"
  }'
GET /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.

POST /v1/accounts/resolve — 200 OK
{
  "success": true,
  "data": {
    "accountNumber": "0123456789",
    "accountName": "CHUKWUEMEKA CHIDIEBERE OKONKWO",
    "bankCode": "058",
    "bankName": "Guaranty Trust Bank"
  }
}
POST /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.

200 OK — Batch Summary
{
  "success": true,
  "data": {
    "batchReference": "BULK_1791180400_A1",
    "totalItems": 120,
    "totalAmount": 4500000.00,
    "successfulDisbursements": 120,
    "failedDisbursements": 0
  }
}
POST /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).

curl -X POST https://api.getpaddle.online/v1/cards/crd_8819b2c019/controls \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "dailyLimit": 1000, "monthlyLimit": 15000, "allowOnline": true, "allowAtm": false }'
HIGH-THROUGHPUT VAS MULTI-RAIL FAILOVER 1% WHOLESALE MARGIN

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.

Intelligent Dual-Rail Clearing Cascade: Every bill payment is cleared with real-time redundancy. The transaction attempts Primary Rail (StroWallet Direct Telco & DisCo Engine) for instant sub-second settlement. In the event of an upstream telco downtime or network timeout, the engine automatically and transparently fails over to Secondary Rail (Flutterwave Clearing Engine), with automated failover to Tertiary Rail (VTU.ng). All verified business accounts receive an automatic 1% wholesale margin discount atomically deducted on settlement.
GET /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.

Airtime Top-Up (cURL)
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"
  }'
Data Bundle Purchase (cURL)
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
  }'
GET /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.

Meter Validation
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"
  }'
Token Recharge Response (200 OK)
{
  "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
  }
}
GET /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
  }'
GET /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
  }'
GET /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
  }'
GET /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
  }'
GET /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
  }'
POST /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.

Remita RRR Payment
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
  }'
FIRS Tax Settlement
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"
  }'
GET /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"
  }'
NDC / GDS RAIL 300+ AIRLINES WHOLESALE PRICING

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.

Spend Wallet Equity Enforcement: Flight bookings require pre-funded cleared equity in your business Spend Wallet (USD or NGN). Before issuing any ticket, the system atomically verifies that your Available Spend Balance is greater than or equal to the fare amount. If balance is insufficient, the request returns 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.
GET /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.

Query Parameters
  • 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: curl -G "https://api.getpaddle.online/v1/flights/airports" -d "search=Nigeria" -H "Authorization: Bearer sk_live_..."
Sample Response (200 OK)
{
  "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
      }
    ]
  }
}
POST /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.

Request Body (JSON)
{
  "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
}
Sample Response (200 OK)
{
  "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": [...]
  }
}
POST /v1/flights/orders

Issue an electronic airline ticket for a selected offer. Automatically debits your spend wallet.

Request Body (JSON)
{
  "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 Response (200 OK)
{
  "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."
  }
}
POST /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.

200 OK — CAC Entity
{
  "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" }
    ]
  }
}
WALL STREET & NGX DUAL RAIL PADDLE US EQUITIES CLEARING PADDLE CAPITAL MARKETS & WEALTH

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.

US Wall Street Rail (Paddle Global Equities)

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.

Nigerian Capital Markets (NGX & Wealth Desk)

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.

GET /v1/investments/markets

Query real-time trading status, opening/closing clocks, and exchange operational schedules for both US and Nigerian markets.

cURL Request
curl -X GET https://api.getpaddle.online/v1/investments/markets \
  -H "Authorization: Bearer sk_live_..."
Response (200 OK)
{
  "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"
      }
    }
  }
}
GET /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.

Quote Query (cURL)
# 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_..."
Quote Response (200 OK)
{
  "success": true,
  "data": {
    "symbol": "NVDA",
    "market": "US",
    "currency": "USD",
    "price": 141.20,
    "bid": 141.15,
    "ask": 141.25,
    "changePercent24h": 3.12,
    "fractionalSupported": true
  }
}
POST /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"
  }'
POST /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.

Fractional Stock Order (JSON)
{
  "market": "US",
  "symbol": "NVDA",
  "side": "BUY",
  "type": "MARKET",
  "amount": 50.00
}
Order Filled Response (200 OK)
{
  "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"
    }
  }
}
GET /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_..."
POST /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.

curl -X POST https://api.getpaddle.online/v1/identity/bvn \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "bvn": "22222222222" }'
POST /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.

# Send OTP with Voice phone call channel fallback
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 }'
POST /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.

curl -X GET https://api.getpaddle.online/v1/open-banking/accounts \
  -H "Authorization: Bearer sk_live_..."
POST /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.

curl -X POST https://api.getpaddle.online/v1/escrow/create \
  -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 }'
CORE ARCHITECTURE LIQUIDITY RAILS & CLEARING

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.

🇳🇬 NGN Operational Pool
Powers instant NIP payouts, airtime, and DisCo power recharge.
Default Buffer: ₦250,000.00
🇺🇸 USD Card Float
Powers virtual Visa/Mastercard creation and real-time merchant debits.
Default Buffer: $250.00
🌐 USDT Stablecoin Pool
Powers crypto deposit address generation and sub-second fiat swaps.
Default Buffer: 500 USDT
GET /v1/wallet/balance — Check Spend vs. In-Clearing Balances
curl -X GET https://api.getpaddle.online/v1/wallet/balance
  -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 }
    ]
  }
}
GET /v1/treasury/pools — Developer Float Health & Thresholds
curl -X GET https://api.getpaddle.online/v1/treasury/pools
  -H "Authorization: Bearer sk_live_..."
POST /v1/treasury/thresholds — Configure Safety Threshold Watermarks
curl -X POST https://api.getpaddle.online/v1/treasury/thresholds
  -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 } }'
POST /v1/treasury/sweep-clearing — Execute Maturity Sweep of T+3 Gateway Funds
curl -X POST https://api.getpaddle.online/v1/treasury/sweep-clearing
  -H "Authorization: Bearer sk_live_..."
GET /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.

curl -X GET https://api.getpaddle.online/v1/wallet/balance \
  -H "Authorization: Bearer sk_live_..."
Autonomous Financial Rails ISO 20022 Clearing

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.

1

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).

2

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.

3

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"
      }
    }
  }
}
HTTP Server-Sent Events (SSE) https://api.getpaddle.online/v1/mcp/sse
JSON-RPC 2.0 Direct POST 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"
  }'
SPECIFICATION STATUS CODES

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:

X-RateLimit-Limit: 600 // Requests permitted per rolling window
X-RateLimit-Remaining: 584 // Available requests left
X-RateLimit-Reset: 1791478900 // Epoch seconds until quota resets
POST /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.

CorridorCurrencyRailsCoordinatesStatus
United StatesUSDACH, Fedwire, SWIFTAccount # + 9-digit ABA routingLIVE
United KingdomGBPFaster Payments, BACS, CHAPS8-digit account # + 6-digit sort codeLIVE
European UnionEURSEPA, SEPA Instant, SWIFTDedicated IBAN + BICLIVE
NigeriaNGNNIBSS Instant Payment (NIP)10-digit NUBAN (via /v1/accounts/virtual)LIVE
KenyaKESPesaLink, EFT, RTGS, M-Pesa PaybillDomestic account #ACTIVATION REQUIRED · SANDBOX READY
GhanaGHSGHIPSS, MTN MoMo, Telecel Cash, AirtelTigoDomestic account #ACTIVATION REQUIRED · SANDBOX READY
South AfricaZARInstant EFT, NSSDomestic account #ACTIVATION REQUIRED · SANDBOX READY
UgandaUGXEFT, RTGS, MTN MoMo, Airtel MoneyDomestic account #ACTIVATION REQUIRED · SANDBOX READY
RwandaRWFR-Switch, MTN MoMo, Airtel MoneyDomestic account #ACTIVATION REQUIRED · SANDBOX READY
# Issue a US Dollar account
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."
  }
}
POST /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.

Verified Mainnet Contracts & Multi-Chain Custody Status: 100% OPERATIONAL

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).

# 1. Issue a dedicated crypto address to an end-user of your app / platform
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" } }'
# 2. Query all issued customer addresses (Paginated)
curl -X GET "https://api.getpaddle.online/v1/crypto/addresses?page=1&limit=20" \
  -H "Authorization: Bearer sk_live_..."
# 3. Retrieve address details by Customer ID or On-Chain Address
curl -X GET https://api.getpaddle.online/v1/crypto/addresses/usr_994821 \
  -H "Authorization: Bearer sk_live_..."
GET /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.

# Query confirmed deposits by customer sub-account ID
curl -X GET "https://api.getpaddle.online/v1/crypto/deposits?customerId=usr_994821¤cy=USDT" \
  -H "Authorization: Bearer sk_live_..."
# Query specific deposit confirmation by transaction reference or hash
curl -X GET "https://api.getpaddle.online/v1/crypto/deposits/DEP_USDT_1793284092" \
  -H "Authorization: Bearer sk_live_..."
Webhook Event: crypto.deposit.credited

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"
  }
}
POST /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.

# Send 50 USDT to an external Tron TRC-20 wallet
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" }'
# Query all outbound crypto withdrawals
curl -X GET "https://api.getpaddle.online/v1/crypto/withdrawals?page=1&limit=20" \
  -H "Authorization: Bearer sk_live_..."
POST /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.

# Simulate a 100 USDT deposit to customer sub-account "usr_994821"
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 }'
POST /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.

# Liquidate 500 USDT into NGN wallet
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 }'
POST /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.

# Disburse university tuition payment (UK / US / Canada)
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"
  }
}
POST /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.

# Validate and pay Remita RRR
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 }'
GET / POST /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).

# Whitelist production IP range
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"] }'
GET / POST /v1/counterparties

Counterparties & Saved Beneficiaries Directory

Store verified supplier, vendor, and payroll bank accounts to automate repetitive bulk disbursements without recurring name lookups.

# Create a reusable counterparty beneficiary
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" }'
GET / POST /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.

# Resolve dispute with defense proof
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" }'
GET / POST /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.

# Invite a developer or finance teammate
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" }'
POST /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.

# Configure Slack incoming webhook
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"] }'
TURNKEY ENGINEERING LAUNCH IN 14–28 DAYS

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.

3–4 WEEKS 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.

2–3 WEEKS 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.

3–5 WEEKS 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.

3–4 WEEKS 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.

3–5 WEEKS 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.

1–3 WEEKS 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.

GET /v1/build-with-us/services
•
POST /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.

# Submit a Build With Us project scoping & engineering inquiry
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." }'
TEST RUNNER INTERACTIVE CONSOLE

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.

HTTP Status: Ready Latency: —
// Click "Send" to execute this request live against https://api.getpaddle.online...