As of January 2026
A duplicate API call looks harmless until two payments clear and operations is left explaining the gap. On a multi-rail platform, the same error behaves differently on every rail - which is why API governance is payment architecture, not a security footnote.
ACH tolerates batch. RTP and FedNow do not. Wire is high value and low forgiveness. A gateway that treats all of them the same is a gateway that will let a duplicate through on the one rail that cannot take it back.
How the same mistake plays out tells you why the gateway matters. On ACH, a duplicate hides until batch reconciliation and returns later in the cycle. On RTP, it clears instantly and is final, so recovery means return requests and counterparty coordination. On FedNow, it posts immediately and forces a return workflow while treasury adjusts intraday buffers. On wire, it triggers manual recalls and cutoffs that can turn a single slip into a full day of escalation. One duplicate, four different incidents.

ACH
Batch-hidden
a duplicate stays hidden until batch reconciliation, then returns later in the cycle.
RTP / FedNow
Instant, final
clears immediately and is final, so recovery depends on return requests and counterparty coordination.
Wire
Manual recall
a duplicate triggers manual recalls and cutoffs, turning a slip into a full day of escalation.
The fragile space
A multi-rail platform lives where the rails disagree. ACH forgives a batch delay. RTP and FedNow do not. Wire punishes the smallest slip. One gateway has to respect all three.
Five rules to anchor on
Put idempotency keys at both the gateway and the ledger so one request means exactly one payment. Sign requests with a nonce and a short expiry to kill replays. Scope tokens by rail and function, never shared across rails. Set rate limits with burst budgets per client and per rail. Version with deprecation windows and schema tests so a contract change does not become an outage. None of these is exotic. Skipping any of them is how a duplicate becomes a cleared payment on the rail that cannot take it back.




