EASYwalkthrough
Card Network Routing
A credit card charge flows through 4 parties: merchant -> acquirer (our payment gateway) -> card network (Visa, Mastercard) -> issuing bank (cardholder's bank). The card network is the central switch that routes the authorization request from the acquirer to the correct issuing bank based on the card's BIN (Bank Identification Number, first 6-8 digits).
We set a 2-second timeout on card network calls. Why 2 seconds?
“The entire round-trip takes 200-500ms.”
Because card networks SLA authorization responses within 2 seconds. Beyond that, the network itself considers the request timed out.
If our call times out, we do not know if the charge succeeded or failed. The card may have been charged, but we never received the response.
This is the ambiguous response problem. Our recovery: mark the transaction as 'unknown', and run a reconciliation job at T+1 that compares our records against the card network's settlement file.
If the charge went through, we update our records. If not, the hold expires.
Why not retry immediately? Because retrying a charge that already succeeded at the issuing bank would result in a double charge.
The safe action on timeout is do nothing and reconcile later. Trade-off: the customer may see a pending hold for up to 24 hours on a failed charge, but we never double-charge.
Related concepts