IRL Scenarios: Seven Payments Failures and Their Fixes
Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.
IRL Scenarios · seven of themArchitecture documentation explains what a system does. It is much worse at explaining why anyone bothered, because the reason is always a failure, usually one somebody else already had, expensively.These are that layer: the things that actually go wrong in payments infrastructure, written as the scenarios they are. Each one opens on a symptom, walks the diagnosis the way it would really go, and ends at the specific mechanism in Arc that prevents it. They are self-contained and readable in any order.
Two of these describe things that genuinely happened while building Arc: a mutation that passed sixteen tests, and a boundary rule that silently did not apply. Those are marked. The rest are the standard failures of this domain, written as scenarios because that is how they are actually learned.
Start here if you read one
The journal that balanced and lied
Compensation ran in the wrong order. The ledger balanced perfectly. All sixteen tests passed. The audit trail was fiction.The lesson: balance is necessary but not sufficient. This is the best argument on the site for why correctness needs more than one kind of assertion, and it is the scenario most worth retelling in an interview.
By theme
Exactness
Distributed failure
Time and money
The cent that vanished
The trial balance is off by €0.03. Nobody can find it, because it was never in one place. It was 0.00995 of a cent, three hundred times, rounded away into nothing. Mechanism: residuals posted to a rounding account.
The journal that balanced and lied
A balanced ledger with a false audit trail, and a mutation test that caught what sixteen assertions did not. Mechanism: reverse-order compensation, asserted directly.
The payout that paid twice
The rail timed out. The retry succeeded. So did the original. Mechanism: idempotency keys, and retryable as a field rather than a guess.
The boundary that wasn't
The architecture rule was in CI, green on every build, and had been silently skipping half the violations it existed to catch. Mechanism: two independent enforcement layers, both probed.
The fastest chain that settled last
Routing to the chain with the shortest block time made settlement twelve times slower. Solana, Base and Polygon all behave differently, and only one of those differences is visible in a block-time column. Mechanism: finality depth, not block time, as the routing input.
The cut-off that cost a day
The payment was submitted at 16:00. It arrived Tuesday. Missing a batch window by an hour costs a day, not an hour. Mechanism: cut-off arithmetic that compounds, asserted exactly.
The quote that aged
A customer held a quote open for four minutes while the rate moved. Mechanism: a 30-second TTL, and a property test that the customer never beats mid-market.
Why this format
A mechanism explained is forgettable.“Rails are idempotent on the caller’s key” is a true sentence that will not survive the week.
A mechanism that solved a specific disaster is not.“The rail timed out, we retried, and the beneficiary got paid twice” is remembered, and the mechanism comes with it.
Every scenario ends with the code that prevents it and a link to the architecture page that specifies it, so the narrative is an entry point rather than a substitute.
Prefer the specification?
The architecture tab covers the same mechanisms without the narrative framing.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Arc","description":"Arc is a simulation of cross-border stablecoin and fiat infrastructure for the EU↔Africa corridor — and a field guide to how stablecoin payments actually work.","colors":{"primary":"#14B8A6","light":"#2DD4BF","dark":"#0F766E"},"logo":{"light":"https://mintcdn.com/arc-doc/m0ZoL8ScOCykrqmD/logo/arc-light.svg?fit=max\u0026auto=format\u0026n=m0ZoL8ScOCykrqmD\u0026q=85\u0026s=90e2e1d537056757a14f4f611ff78d11","dark":"https://mintcdn.com/arc-doc/m0ZoL8ScOCykrqmD/logo/arc-dark.svg?fit=max\u0026auto=format\u0026n=m0ZoL8ScOCykrqmD\u0026q=85\u0026s=58a04971d1ea14b20bd347e971014244","href":"/"},"favicon":"https://mintcdn.com/arc-doc/m0ZoL8ScOCykrqmD/logo/mark.svg?fit=max\u0026auto=format\u0026n=m0ZoL8ScOCykrqmD\u0026q=85\u0026s=24cce491a91f6bde7dfc139f0b283c8e","appearance":{"default":"dark"},"navbar":{"links":[{"href":"/start/quickstart","label":"Run it locally"},{"href":"https://github.com/el-uno/fintech_arc/blob/main/docs/BUILD_PLAN.md","label":"Build plan"}],"primary":{"type":"github","href":"https://github.com/el-uno/fintech_arc"}},"footer":{"socials":{"github":"https://github.com/el-uno/fintech_arc"}},"search":{"prompt":"Search the corridor"},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"arc-doc","hasAudioNarration":false,"actualSubdomain":"arc-doc","customDomains":["arc.udokaam.dev"],"gitSource":{"type":"github","owner":"udoka-am","repo":"fintech_arc","deployBranch":"main","contentDirectory":"apps/docs-site","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6aea22181e900d99c6189d28:success","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"default","tag":"Architecture","count":23},{"language":"default","tag":"IRL Scenarios","count":16},{"language":"default","tag":"Guide","count":10},{"language":"default","tag":"Decisions","count":9},{"language":"default","tag":"Practice","count":7},{"language":"default","tag":"The corridor problem","count":6},{"language":"default","tag":"The core","count":5},{"language":"default","tag":"Foundations","count":5},{"language":"default","tag":"Work through it","count":5},{"language":"default","tag":"Start here","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--arc-teal: #2dd4bf;--arc-teal-deep: #14b8a6;--arc-amber: #f59e0b;--arc-rose: #fb7185;--arc-ground: #0d1117;--arc-raised: #151b23;--arc-sunken: #090d13;--arc-hairline: #232b36;--arc-ink: #e6edf3;--arc-ink-dim: #9aa7b4;--arc-ink-faint: #6b7785;--arc-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace}.light{--arc-ground: #ffffff;--arc-raised: #f7f9fa;--arc-sunken: #eef2f5;--arc-hairline: #dfe5ea;--arc-ink: #0d1117;--arc-ink-dim: #4a5561;--arc-ink-faint: #78838f}body{font-feature-settings:'cv05', 'ss01', 'tnum';letter-spacing:-0.006em}h1,h2,h3,h4{letter-spacing:-0.024em;font-weight:650}h1{letter-spacing:-0.032em}h2::before{content:'▚ ';color:var(--arc-teal);font-family:var(--arc-mono);font-weight:500;opacity:0.55}table{font-variant-numeric:tabular-nums}table td:not(:first-child),table th:not(:first-child){text-align:right;font-family:var(--arc-mono);font-size:0.86em}table td:first-child{font-family:var(--arc-mono);font-size:0.86em}code,pre,kbd{font-family:var(--arc-mono);font-feature-settings:'liga' 0}:not(pre)>code{border:1px solid var(--arc-hairline);border-radius:4px;background:var(--arc-sunken);color:var(--arc-teal);padding:0.1em 0.36em;font-size:0.86em;font-weight:500}pre{border:1px solid var(--arc-hairline);border-radius:6px;box-shadow:none}.arc-eyebrow{display:block;font-family:var(--arc-mono);font-size:0.7rem;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--arc-teal);margin-bottom:0.6rem}.arc-eyebrow--amber{color:var(--arc-amber)}.arc-eyebrow--dim{color:var(--arc-ink-faint)}.arc-stats{display:grid;grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));gap:1px;background:var(--arc-hairline);border:1px solid var(--arc-hairline);border-radius:6px;overflow:hidden;margin:1.75rem 0}.arc-stat{background:var(--arc-raised);padding:1rem 1.1rem}.arc-stat__value{display:block;font-family:var(--arc-mono);font-size:1.45rem;font-weight:600;line-height:1.1;color:var(--arc-teal);font-variant-numeric:tabular-nums}.arc-stat__label{display:block;margin-top:0.4rem;font-size:0.78rem;line-height:1.4;color:var(--arc-ink-dim)}.arc-stat__source{display:block;margin-top:0.35rem;font-family:var(--arc-mono);font-size:0.66rem;letter-spacing:0.04em;color:var(--arc-ink-faint)}.arc-claim{border-left:2px solid var(--arc-teal);background:linear-gradient(90deg, rgba(45, 212, 191, 0.06), transparent 70%);padding:0.9rem 1.1rem;margin:1.6rem 0;border-radius:0 5px 5px 0}.arc-gap{border-left:2px solid var(--arc-amber);background:linear-gradient(90deg, rgba(245, 158, 11, 0.06), transparent 70%);padding:0.9rem 1.1rem;margin:1.6rem 0;border-radius:0 5px 5px 0}.arc-claim p:last-child,.arc-gap p:last-child{margin-bottom:0}.arc-symptom{font-size:1.08rem;line-height:1.6;color:var(--arc-ink);border:1px solid var(--arc-hairline);border-radius:6px;background:var(--arc-sunken);padding:1.15rem 1.3rem;margin:1.5rem 0 2rem}.arc-symptom::before{content:'SYMPTOM';display:block;font-family:var(--arc-mono);font-size:0.66rem;letter-spacing:0.16em;color:var(--arc-rose);margin-bottom:0.55rem}.arc-cite{font-size:0.82rem;color:var(--arc-ink-faint);font-family:var(--arc-mono)}.mermaid{background:var(--arc-sunken);border:1px solid var(--arc-hairline);border-radius:6px;padding:1rem}"}],"page":{"pagePath":"stories","slug":"/stories","pageMetadata":{"title":"IRL Scenarios: Seven Payments Failures and Their Fixes","sidebarTitle":"Overview","description":"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.","icon":"book","keywords":["payments failures","fintech war stories","production incidents","engineering case studies"],"href":"/stories/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,hr:`hr`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Card,CardGroup,Columns,Heading,Note,Tab,Tabs}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(`span`,{className:`arc-eyebrow`,children:`IRL Scenarios · seven of them`}),`\n`,_jsx(_components.p,{children:`Architecture documentation explains what a system does. It is much worse at explaining why anyone bothered, because the reason is always a failure, usually one somebody else already had, expensively.`}),`\n`,_jsx(_components.p,{children:`These are that layer: the things that actually go wrong in payments infrastructure, written as the scenarios they are. Each one opens on a symptom, walks the diagnosis the way it would really go, and ends at the specific mechanism in Arc that prevents it. They are self-contained and readable in any order.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Two of these describe things that genuinely happened while building Arc: a mutation that passed sixteen tests, and a boundary rule that silently did not apply. Those are marked. The rest are the standard failures of this domain, written as scenarios because that is how they are actually learned.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`start-here-if-you-read-one`,children:`Start here if you read one`}),`\n`,_jsxs(Card,{title:`The journal that balanced and lied`,icon:`triangle-exclamation`,href:`/stories/the-journal-that-balanced-and-lied`,children:[_jsx(_components.p,{children:`Compensation ran in the wrong order. The ledger balanced perfectly. All sixteen tests passed. The audit trail was fiction.`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The lesson:`}),` balance is necessary but not sufficient. This is the best argument on the site for why correctness needs more than one kind of assertion, and it is the scenario most worth retelling in an interview.`]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`by-theme`,children:`By theme`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Exactness`,id:`exactness`,children:_jsxs(CardGroup,{cols:1,children:[_jsx(Card,{title:`The cent that vanished`,icon:`coins`,href:`/stories/the-cent-that-vanished`,children:_jsxs(_components.p,{children:[`The trial balance is off by €0.03. Nobody can find it, because it was never in one place. It was 0.00995 of a cent, three hundred times, rounded away into nothing. `,_jsx(_components.strong,{children:`Mechanism:`}),` residuals posted to a rounding account.`]})}),_jsx(Card,{title:`The journal that balanced and lied`,icon:`triangle-exclamation`,href:`/stories/the-journal-that-balanced-and-lied`,children:_jsxs(_components.p,{children:[`A balanced ledger with a false audit trail, and a mutation test that caught what sixteen assertions did not. `,_jsx(_components.strong,{children:`Mechanism:`}),` reverse-order compensation, asserted directly.`]})})]})}),_jsx(Tab,{title:`Distributed failure`,id:`distributed-failure`,children:_jsxs(CardGroup,{cols:1,children:[_jsx(Card,{title:`The payout that paid twice`,icon:`clone`,href:`/stories/the-payout-that-paid-twice`,children:_jsxs(_components.p,{children:[`The rail timed out. The retry succeeded. So did the original. `,_jsx(_components.strong,{children:`Mechanism:`}),` idempotency keys, and `,_jsx(_components.code,{children:`retryable`}),` as a field rather than a guess.`]})}),_jsx(Card,{title:`The boundary that wasn't`,icon:`shield-halved`,href:`/stories/the-boundary-that-wasnt`,children:_jsxs(_components.p,{children:[`The architecture rule was in CI, green on every build, and had been silently skipping half the violations it existed to catch. `,_jsx(_components.strong,{children:`Mechanism:`}),` two independent enforcement layers, both probed.`]})})]})}),_jsx(Tab,{title:`Time and money`,id:`time-and-money`,children:_jsxs(CardGroup,{cols:1,children:[_jsx(Card,{title:`The fastest chain that settled last`,icon:`gauge-high`,href:`/stories/the-fastest-chain-that-settled-last`,children:_jsxs(_components.p,{children:[`Routing to the chain with the shortest block time made settlement twelve times slower. Solana, Base and Polygon all behave differently, and only one of those differences is visible in a block-time column. `,_jsx(_components.strong,{children:`Mechanism:`}),` finality depth, not block time, as the routing input.`]})}),_jsx(Card,{title:`The cut-off that cost a day`,icon:`clock`,href:`/stories/the-cutoff-that-cost-a-day`,children:_jsxs(_components.p,{children:[`The payment was submitted at 16:00. It arrived Tuesday. Missing a batch window by an hour costs a day, not an hour. `,_jsx(_components.strong,{children:`Mechanism:`}),` cut-off arithmetic that compounds, asserted exactly.`]})}),_jsx(Card,{title:`The quote that aged`,icon:`hourglass-half`,href:`/stories/the-quote-that-aged`,children:_jsxs(_components.p,{children:[`A customer held a quote open for four minutes while the rate moved. `,_jsx(_components.strong,{children:`Mechanism:`}),` a 30-second TTL, and a property test that the customer never beats mid-market.`]})})]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`why-this-format`,children:`Why this format`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsxs(`div`,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`A mechanism explained is forgettable.`})}),_jsx(_components.p,{children:`“Rails are idempotent on the caller’s key” is a true sentence that will not survive the week.`})]}),_jsxs(`div`,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`A mechanism that solved a specific disaster is not.`})}),_jsx(_components.p,{children:`“The rail timed out, we retried, and the beneficiary got paid twice” is remembered, and the mechanism comes with it.`})]})]}),`\n`,_jsx(_components.p,{children:`Every scenario ends with the code that prevents it and a link to the architecture page that specifies it, so the narrative is an entry point rather than a substitute.`}),`\n`,_jsx(Card,{title:`Prefer the specification?`,icon:`layer-group`,href:`/architecture/overview`,children:_jsx(_components.p,{children:`The architecture tab covers the same mechanisms without the narrative framing.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"IRL Scenarios: Seven Payments Failures and Their Fixes","sidebarTitle":"Overview","description":"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.","icon":"book","keywords":["payments failures","fintech war stories","production incidents","engineering case studies"],"href":"/stories/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Start here if you read one","slug":"start-here-if-you-read-one","depth":2,"children":[]},{"title":"By theme","slug":"by-theme","depth":2,"children":[]},{"title":"Why this format","slug":"why-this-format","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"arc-doc","siteName":"Arc","title":"IRL Scenarios: Seven Payments Failures and Their Fixes - Arc","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-14T01:20:45.558Z","originalFileLocation":"stories/index.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Arc\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"IRL Scenarios: Seven Payments Failures and Their Fixes - Arc\">\u003cmeta data-mint-head property=\"og:description\" content=\"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Arc\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://arc.udokaam.dev/stories\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://arc-doc.mintlify.site/_mintlify/api/og/v2?division=IRL+Scenarios\u0026amp;title=IRL+Scenarios%3A+Seven+Payments+Failures+and+Their+Fixes\u0026amp;description=Seven+real-world+failure+scenarios.+Each+opens+on+a+symptom%2C+walks+the+diagnosis%2C+and+lands+on+the+Arc+mechanism+that+prevents+it+from+happening+again.\u0026amp;theme=a62ca8cb35008bd1421320f2\u0026amp;signature=515ee6bd7aaafd004d165b8dd5fbb07db04a7a9f47a6636a801892e5ab3f1e81\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"IRL Scenarios: Seven Payments Failures and Their Fixes - Arc\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://arc-doc.mintlify.site/_mintlify/api/og/v2?division=IRL+Scenarios\u0026amp;title=IRL+Scenarios%3A+Seven+Payments+Failures+and+Their+Fixes\u0026amp;description=Seven+real-world+failure+scenarios.+Each+opens+on+a+symptom%2C+walks+the+diagnosis%2C+and+lands+on+the+Arc+mechanism+that+prevents+it+from+happening+again.\u0026amp;theme=a62ca8cb35008bd1421320f2\u0026amp;signature=515ee6bd7aaafd004d165b8dd5fbb07db04a7a9f47a6636a801892e5ab3f1e81\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/arc-doc/8qf7D6aInLMuoIah/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Arc\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#14B8A6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://arc.udokaam.dev/stories\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/stories.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://arc.udokaam.dev/#organization\",\"name\":\"Arc\",\"url\":\"https://arc.udokaam.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/arc-doc/m0ZoL8ScOCykrqmD/logo/arc-light.svg?fit=max\u0026auto=format\u0026n=m0ZoL8ScOCykrqmD\u0026q=85\u0026s=90e2e1d537056757a14f4f611ff78d11\"}},{\"@type\":\"WebSite\",\"@id\":\"https://arc.udokaam.dev#website\",\"name\":\"Arc\",\"url\":\"https://arc.udokaam.dev\",\"publisher\":{\"@id\":\"https://arc.udokaam.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://arc.udokaam.dev/stories#webpage\",\"url\":\"https://arc.udokaam.dev/stories\",\"name\":\"IRL Scenarios: Seven Payments Failures and Their Fixes\",\"description\":\"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.\",\"dateModified\":\"2026-08-14T01:20:45.558Z\",\"isPartOf\":{\"@id\":\"https://arc.udokaam.dev#website\"},\"breadcrumb\":{\"@id\":\"https://arc.udokaam.dev/stories#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://arc.udokaam.dev/stories#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Arc\",\"item\":\"https://arc.udokaam.dev\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IRL Scenarios: Seven Payments Failures and Their Fixes\",\"item\":\"https://arc.udokaam.dev/stories\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://arc.udokaam.dev/stories#article\",\"headline\":\"IRL Scenarios: Seven Payments Failures and Their Fixes\",\"name\":\"IRL Scenarios: Seven Payments Failures and Their Fixes\",\"description\":\"Seven real-world failure scenarios. Each opens on a symptom, walks the diagnosis, and lands on the Arc mechanism that prevents it from happening again.\",\"url\":\"https://arc.udokaam.dev/stories\",\"mainEntityOfPage\":{\"@id\":\"https://arc.udokaam.dev/stories#webpage\"},\"dateModified\":\"2026-08-14T01:20:45.558Z\",\"keywords\":\"payments failures, fintech war stories, production incidents, engineering case studies\",\"publisher\":{\"@id\":\"https://arc.udokaam.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://arc.udokaam.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Arc\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Arc\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/stories.md","siteName":"Arc","nav":{"global":null,"tabs":[{"tab":"Guide","pages":[{"title":"Guide","href":""}]},{"tab":"Architecture","pages":[{"title":"Architecture","href":"/architecture/overview"}]},{"tab":"IRL Scenarios","groups":[{"group":"IRL Scenarios","icon":"book","pages":[{"title":"IRL Scenarios: Seven Payments Failures and Their Fixes","sidebarTitle":"Overview","icon":"book","href":"/stories"},{"title":"The Cent That Vanished: Rounding Residuals Explained","sidebarTitle":"The Cent","description":"The trial balance is off by €0.03. Every transfer reconciles. Nobody can find it, because it was never in one place to begin with.","icon":"coins","href":"/stories/the-cent-that-vanished"},{"title":"The Journal That Balanced and Lied: Audit Trail Correctness","sidebarTitle":"The Journal","icon":"triangle-exclamation","href":"/stories/the-journal-that-balanced-and-lied"},{"title":"The Fastest Chain That Settled Last: Block Time vs Finality","sidebarTitle":"The Fastest Chain","icon":"gauge-high","href":"/stories/the-fastest-chain-that-settled-last"},{"title":"The Payout That Paid Twice: Idempotency Under Timeout","sidebarTitle":"The Double Payout","icon":"clone","href":"/stories/the-payout-that-paid-twice"},{"title":"The Cut-Off That Cost a Day: Banking Rail Cut-Off Windows","sidebarTitle":"The Cutoff","icon":"clock","href":"/stories/the-cutoff-that-cost-a-day"},{"title":"The Boundary That Wasn't: CI Enforcement Rule Gaps","sidebarTitle":"The Boundary","icon":"shield-halved","href":"/stories/the-boundary-that-wasnt"},{"title":"The Quote That Aged: Stale FX Rates as Unhedged Loss","sidebarTitle":"The Quote","icon":"hourglass-half","href":"/stories/the-quote-that-aged"}]}]},{"tab":"Practice","pages":[{"title":"Practice","href":"/practice"}]}]},"basePath":"","title":"IRL Scenarios: Seven Payments Failures and Their Fixes - Arc","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":[],"chunks":[]}