Payment Orchestration
Smart payment routing for South Africa and beyond.
One API call hits the FinVeil routing engine, which selects the optimal rail across six SA providers — Stitch, Paystack, Yoco, PayFast, Ozow, and Rapyd — settles the transaction through the licensed operator, and mints a tamper-evident receipt for your audit trail. Cards, instant EFT, push-to-card, and cross-border live behind a single contract — with automatic failover when a provider is down.
How it works
Three steps.
You call one endpoint
POST /api/payments with amount, method, and recipient. No provider-specific glue.
FinVeil picks the rail
Card → Paystack. Instant EFT → Ozow. Push-to-card → Visa Direct. Optimised on price, success rate, and uptime.
Receipt minted
Every settled transaction gets a SHA-256 receipt anchored to a Merkle root for audit.
Benefits
Why teams choose Payment Orchestration.
Automatic failover
When the primary rail goes down, FinVeil retries on the next-best provider transparently. Zero downtime, zero re-plumbing.
One contract, every rail
Card, instant EFT, push-to-card, and cross-border behind one API and one webhook contract.
Receipts on every transaction
Tamper-evident proof for every collection and payout — ready for compliance teams and external audit.
Reconcile once
Unified ledger across providers — one dashboard, one webhook shape, one CSV export.
Who it's for
Developer-friendly
Drop it into your stack.
REST API, typed SDKs in 9 languages, and a sandbox environment you can explore in 30 seconds. No calls with sales to get keys.
Read the docscurl -X POST https://api.finveil.money/api/payments \
-H "Authorization: Bearer $FINVEIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 500.00,
"currency": "ZAR",
"method": "AUTO", # CARD | INSTANT_EFT | PUSH_TO_CARD | AUTO
"email": "customer@acme.co.za",
"callbackUrl": "https://acme.co.za/thanks"
}'
# => {
# "status": "PENDING",
# "rail": "OZOW", # FinVeil chose the rail
# "fallbackUsed": false,
# "receiptId": "rcpt_pay_a8e2..."
# }Works with