Unsafe failover
Processor A times out. The router sends the payment to Processor B. A captures late. The cardholder is charged twice.
Payment Service Providers
Adding providers increases coverage, but it also creates more state, more retries, more settlement paths and more reconciliation work. Orangepill does not replace your processors. It coordinates and governs them, so a payment has one lifecycle no matter how many systems touch it.
The problem
A second processor improves approval rates and resilience. It also doubles the status models, webhook formats, settlement files and edge cases your team maintains. By the third or fourth, most engineering time on payments goes into keeping those systems in agreement with each other.
Typical architecture today
Routing decides where a payment goes. Little in this design decides what is safe after the payment has gone somewhere and the answer did not come back cleanly.
Where it breaks
Processor A times out. The router sends the payment to Processor B. A captures late. The cardholder is charged twice.
A merchant balance is credited from a webhook, then the payment is reversed by a different processor event that arrives out of order.
The processor's settlement file disagrees with what was recorded at authorization, and nobody can say which is right without a manual trace.
Every new processor adds conditionals to merchant-facing code, because the lifecycle was modelled on the first provider's API.
Orangepill model
Processors carry payments. The runtime owns what happened to them.
Each processor call is an attempt under one payment. The attempt history decides whether another attempt is safe.
Merchant balances, fees, reserves and payables are derived from ledger entries, not overwritten by the latest webhook.
Processor reports are compared with the ledger. Reconciliation detects divergence. Resolve governs what happens next.
Capabilities used
Routes across processors under policy and tracks every attempt, so failover is a decision made with the history in view.
Explore Multi-Rail Orchestration →Owns each payment as one lifecycle, independent of which processor carried it, with idempotent attempts underneath.
Explore Execution →Keeps merchant balances, fees and settlement obligations as double-entry ledger state rather than a column per processor.
Explore Wallet & Ledger →Handles the payments whose processor outcome is unknown or disputed, before anyone retries, settles or refunds.
Explore Resolve →Example workflow
Had Processor A timed out instead of declining, the second attempt would wait until A's outcome was established, or the payment would move to Resolve. The router does not get to guess.
Outcome
Bring your processor list and one failure you have seen in production. We will show where the runtime would hold the lifecycle and where it would stop an unsafe retry.