Payment Gateways & Settlement Reconciliation
Integrate payment aggregators, virtual accounts, bank transfers, and automated reconciliation into Tracepos.
Supported Rails & Mechanisms
Tracepos supports flexible payment flows for African and global payment providers:
| Rail / Provider | Typical Workflow | Settlement Method |
|---|---|---|
| Paystack | Inline Checkout, Dedicated NUBAN Virtual Accounts, POS Terminal | Automatic via webhook callback / reference check |
| Interswitch | WebPAY, Quickteller, SmartPOS Till | Direct till reference & webhook reconciliation |
| Kuda Business | Dynamic Virtual Accounts, Sell Tokens, Countertop POS | Partner API token & webhook status update |
| Opay / Moniepoint | In-store POS Terminal, Agent Cash Inflow | Batch settlement & POST /payments ingestion |
| Direct Bank Transfer | In-store cashier verification of customer credit alert | verifyPaystackTransfer or Cashier Ledger entry |
1. Dynamic Virtual Accounts (DVA) & Pay-with-Transfer
For retail stores offering Pay With Transfer at the checkout counter:
- Customer requests to pay by transfer.
- The integration requests a dynamic virtual account number from your payment provider (e.g. Kuda or Paystack) tied to the order unique ID.
- The customer completes the bank transfer from their mobile banking app.
- The provider fires a webhook when funds land in the merchant's account.
- Your webhook handler posts payment to Tracepos:
curl -X POST "https://app.tracepos.net/api/v1/public/payments" \
-H "X-Tracepos-Public-Key: YOUR_PUBLIC_KEY" \
-H "X-Tracepos-Secret-Key: YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_id": "cust_123",
"payment_type": "in",
"amount": 25000.00,
"payment_mode_id": "BANK_TRANSFER",
"date": "2026-09-30",
"reference": "NIP-0902837194829104",
"invoices": [
{
"order_id": "sale_ord_99482",
"amount": 25000.00
}
],
"notes": "Verified via Bank Transfer Webhook"
}'
2. Settling Outstanding Customer Debts (A/R)
Customers with credit accounts can settle partial or complete balances across multiple historical invoices:
- Query outstanding customer invoices:
curl -X GET "https://app.tracepos.net/api/v1/public/payments/user-invoices?user_id=cust_123" \
-H "X-Tracepos-Public-Key: YOUR_PUBLIC_KEY" \
-H "X-Tracepos-Secret-Key: YOUR_SECRET_KEY"
- Allocate payment across the returned unpaid invoices:
{
"user_id": "cust_123",
"payment_type": "in",
"amount": 100000.00,
"payment_mode_id": "CHEQUE_OR_TRANSFER",
"invoices": [
{ "order_id": "ord_old_01", "amount": 60000.00 },
{ "order_id": "ord_old_02", "amount": 40000.00 }
]
}
Tracepos automatically marks ord_old_01 as fully paid and reduces ord_old_02's due balance, updating the customer ledger and double-entry accounts receivable balances synchronously.
