vaayaa Inclusive Education

Digital Payment Systems Case Studies

Finance5 Case StudiesUpdated Sep 2026

Digital payment systems move a card tap, a wallet transfer or a refund between parties, and every step must agree with the ledger, the bank and the customer's view. When that agreement breaks, the cost shows up as declined sales, unbalanced books, exposed data or a model that treats some merchants unfairly. The five cases that follow come from across that work, covering an outage after a release, a reconciliation gap, a suspected compromise, a ledger design decision and an automated review tool. Each follows the same arc, and the reasoning matters as much as the outcome.

1

Case Study 1

Authorization failures after a holiday release

Calder Ridge Payments, a card acceptance processor routing transactions for about 4,000 independent merchants across three regions.

The situation

Calder Ridge had shipped a routing change to its authorization service on the Thursday before a long holiday weekend, a release meant to shave a few milliseconds from each transaction. By Friday afternoon the holiday traffic had arrived, and the approval rate for card-present sales fell below its usual level. Merchants started calling the support line within the hour. Terminals that normally cleared in under two seconds were timing out, and some customers retried payments that had already gone through, creating duplicate holds that would take days to reverse. The on-call engineer, Marcus, could see the error rate climbing but could not yet tell whether the release, the traffic surge, or a slow partner bank was responsible.

The challenge

The company had promised its largest merchant group that authorization latency would stay under a fixed threshold at peak, with service credits if it did not. Finance was already tracking the value of held funds. The operations lead, Priya, had to decide whether to roll back a release the platform team believed was correct, knowing a rollback would bring back a fraud scoring fault fixed in the same build. Each hour of delay meant more declines and more tied-up money.

Analysis

Teams grounded in Digital Payment Systems tend to begin an incident by writing down what the business is protecting, because that decides how much risk is acceptable in the first hour. Here the objectives were a restored approval rate, a contained duplicate-charge problem and no further breach of the peak latency commitment. The evidence was uneven. Dashboards showed the timeout rise, but the release, the traffic and the partner bank all produced similar symptoms, so the team split its attention and lost time comparing graphs that could not separate the causes.

The constraints shaped the fix more than the diagnosis did. Rolling back the whole release would have restored the old routing path quickly, but it would also have reintroduced the scoring fault that fraud analysts had spent a week closing. A hotfix needed a second reviewer and a pipeline that was already queued with other changes. Stakeholders pulled in different directions: merchants wanted speed, the risk team wanted no new fraud exposure, and the finance group wanted the duplicate holds reversed without customers seeing two charges on their statements. Naming those trade-offs in writing made it possible to choose a path everyone could defend.

Response options by impact and restore speed
Business impact, low to high
Hotfix under pressureHigh impact and slow to ship; needs a second engineer reviewing the patch.
Feature flag rollbackHigh impact but fast to reverse; restores authorizations within minutes.
Defer to next windowLow impact and slow; schedule with the normal release train.
Configuration timeout changeLow impact and fast; adjust retry timeouts without deploying code.
Restore speed, slow to fast

Actions taken

  1. Freeze further deployments and open a single incident channel with one named commander, so the routing, traffic and partner bank lines of investigation stop competing for the same engineers.
  2. Pin the routing service to its previous container image in one region first, comparing approval rates against an untouched region for twenty minutes before deciding on a global rollback.
  3. Apply the fraud scoring fix as a separate, reviewed patch on the old path so the scoring defect stays closed while the routing change is reverted.
  4. Queue reversals for duplicate holds in batches, and send affected merchants a plain notice explaining that the customer will see one final charge, not two.

Results

Approval rates returned to normal within the first evening, as each region was reverted. The scoring fix stayed in place, and fraud losses did not rise during recovery. Duplicate holds were reversed over the following days, and the number of customers who reported a double charge fell to a small handful of cases needing manual review. The company stayed inside its latency commitment for the rest of the holiday, but it still issued service credits for the failure window. Afterward, releases pass through a canary stage that carries a small share of live traffic first.

Questions for discussion

  • Which evidence would have let the team separate the release from the partner bank within the first twenty minutes?
  • How should a team decide when a known fault in one component is an acceptable cost of restoring service?
  • What would a merchant need to see in a status update to keep trust while the root cause is still unclear?
2

Case Study 2

Settlement reports disagreeing across three internal views

Orchard Hill Settlement, a clearing service that reconciles card and wallet transactions for regional banks and their merchant partners.

The situation

Orchard Hill's finance team closed the month with a fee revenue figure that did not match the risk team's chargeback summary, and the merchant portal showed a third number that matched neither. The gap was small but enough to block sign-off. The clearing platform handles roughly 38,000 transactions a day from card and wallet sources, and the three views draw from the same warehouse through different transformation jobs. One wallet partner had begun sending files with missing currency codes for some refunds, and the warehouse defaulted those rows to the base currency without raising a flag. A deduplication step keyed on a reference field that the partner reused across retries.

The challenge

The sign-off deadline was tied to the lender's covenant reporting, and the chief financial officer, Dana, needed one number she could defend. The risk team had already flagged two merchants for review based on chargeback counts that might be understated. Product wanted the merchant portal fixed before the next partner launch, and each team had built its own adjustment spreadsheet to explain the differences. Nobody could say which source was authoritative, and the adjustments themselves were starting to diverge.

Analysis

Reconciliation gaps are often treated as data problems first, but here the more useful question was which decision each number was supposed to support. The sign-off needed a revenue figure the lender would accept, the risk team needed chargeback counts it could act on, and the portal needed to show merchants what they had been charged. Those are three definitions, and the disagreement grew partly because nobody had written them down. The lineage was the best evidence available: each job logged row counts, so the team could follow a transaction from the partner file to every output and find where the totals split.

The fix had to respect the schedule. Reprocessing the full month would take the warehouse most of a night and would block the nightly merchant payouts, so the team could not simply rerun everything and hope. The partner's files could not be corrected at source before the deadline, which meant the transformation had to handle the missing currency codes explicitly. Stakeholders disagreed about how much to disclose. Finance wanted a single adjusted number with a documented bridge, the risk team wanted the affected merchants flagged rather than averaged away, and the partner management group worried that a public correction would strain a contract still under negotiation.

Ranked causes of the settlement gap
Currency default in refunds9/10
Silent default applied to refund rows lacking codes; largest share.
Duplicate key collision7/10
Reused reference field merged distinct retry attempts into one row.
Timezone cutoff mismatch4/10
Refund feed used a different day boundary than card settlements.
Late partner file3/10
Late arrivals shifted some rows into the following reporting day.
Rounding in portal display1/10
Display rounding explained the final few cents of difference.

Scores set by the review team in this scenario, 10 = highest priority.

Actions taken

  1. Write down the definition of each revenue, chargeback and portal figure, with the owner who signs off on it, before any further adjustment is made.
  2. Add a currency validation rule at ingestion that rejects or quarantines any refund row without an explicit code, rather than letting the default apply silently.
  3. Replace the deduplication key with a composite of partner identifier, attempt number and amount, then rerun only the affected refund partitions overnight.
  4. Publish a reconciliation bridge that lists each adjustment, its row count and its status, and share it with the lender and the risk group the same day.

Results

The rerun finished before the sign-off deadline, and the three views agreed within a rounding difference that the bridge explained line by line. The refund partition with missing currency codes accounted for most of the original gap. The risk team flagged four merchants whose chargeback counts had been understated, and two needed a formal reserve review. Quarantine rules caught a second partner file the following month, which was resolved before it reached any report. Finance now runs a daily check that compares totals across the three views and posts the result to a shared channel.

Questions for discussion

  • Which of the three definitions would have been hardest to agree on, and who should have the final say?
  • When a source file is known to be unreliable, which checks belong at ingestion and which belong in reporting?
  • How would you explain a reconciliation gap to a lender before the root cause is confirmed?
3

Case Study 3

Possible credential compromise at a payment gateway

Ferrous Gate Payments, a hosted payment gateway serving online retailers and two point-of-sale integrators.

The situation

Ferrous Gate's fraud analytics group noticed a cluster of refund requests that did not fit any merchant's normal pattern. The requests came from about forty accounts, most of them inactive for several months, and they all originated from a hosting provider's address range no merchant had reported. Two of the refunds had been approved automatically under the gateway's low-value rule before anyone looked at them. The security operations desk had access logs for the gateway, but logs for the internal admin tool were kept for a shorter period, and the first investigator, Rafael, could not yet tell whether a stolen merchant key, a misconfigured integration or a compromised staff login was behind the activity.

The challenge

The gateway's contract with its merchants requires notice within a fixed window of confirmed exposure, and the chief security officer, Naomi, had to decide how much to tell customers before the scope was known. Containment could mean suspending keys for forty accounts, which would stop legitimate payments for some of the merchants during their trading hours. Revenue leadership pushed back on any action that could be read as an outage. Naomi also needed to avoid tipping off the actor while the logs were still being collected.

Analysis

A compromise investigation is shaped by what the business has to keep running and what it has to prove afterward. For a gateway, the objectives are to protect cardholder data, keep the merchants that are not involved processing payments, and produce a record that stands up to the acquiring bank and the card networks. The evidence is uneven. Access logs for the gateway were complete, which made the external pattern visible, but the administrative logs had a shorter retention window. That gap meant the team had to decide quickly which records to copy before they aged out, and it could not wait for a full picture before preserving them.

Containment was the hard part, because the obvious step of revoking keys would also interrupt legitimate merchants. The team used a narrower option: it placed the forty accounts on a hold for refunds above a low threshold and required a manual check for any refund to a new payout destination, while leaving card acceptance running. Merchant success managers were briefed before anything reached a merchant's inbox, so support calls would not come first. The record of each step was kept in a case file with timestamps, the approver for each change and the evidence it was based on, because the acquiring bank would ask for that.

Response sequence after the suspicious refunds
  1. 1Preserve evidence firstExport gateway and admin logs to write-once storage with hashes.
  2. 2Scope affected accountsMatch refund requests, source ranges and keys to a defined list.
  3. 3Contain with targeted holdsHold refunds and payouts on suspect accounts, keep card acceptance live.
  4. 4Rotate keys and credentialsReplace exposed merchant keys and reset staff logins that touched the tool.
  5. 5Notify with confirmed factsSend merchant and bank disclosures only after counsel reviews them.

Actions taken

  1. Preserve the gateway and administrative logs by exporting them to write-once storage before any retention job runs, and record the hash of each export.
  2. Place the forty accounts on refund and payout holds, leaving card acceptance running, and confirm each hold with a test transaction before reporting it as complete.
  3. Rotate the merchant keys that the access logs tie to the hosting range, and force a credential reset for any staff account that touched the admin tool from that range.
  4. Draft the merchant notice and the bank disclosure together, limiting each to confirmed facts and a stated next update time, and have counsel review both before release.

Results

The exported logs traced the refund requests to a stolen key from one merchant integration and a staff credential used once from the same range. Rotation stopped the activity within the same afternoon. Holds kept the remaining merchants processing payments, and only the affected merchant reported a short interruption to refunds. The disclosure went to the acquiring bank with a full timeline, and the bank's review closed without a finding. Afterward, admin logs gained the gateway's retention period, and staff tokens now expire sooner when used outside a known network.

Questions for discussion

  • Which records should be preserved first when retention windows differ across systems, and why?
  • What containment step would you take if revoking keys would also halt payments for legitimate merchants?
  • How should notice to affected customers be timed when the scope is still being confirmed?
4

Case Study 4

Choosing a ledger design for a growing wallet

Marrow Bay Mobile Pay, a wallet and in-app payments company whose platform now serves several retail brands.

The situation

Marrow Bay's wallet was built around one relational ledger that recorded each balance movement inside the same database transaction as the payment itself. For most of its life the design was simple and correct, but checkout latency had begun to climb as peak load reached about 1,200 payments a second. A retail partner was preparing a launch that the commercial team expected to triple volume within a single quarter. The primary database was already the largest single cost line in the platform budget, and its read replicas lagged behind during peak hours, so balance screens sometimes showed stale figures to customers.

The challenge

The architecture group had to choose a path before the launch date, and the chief product officer, Tomas, wanted no change that would pause checkout for existing customers. Three options were on the table: scale the existing database vertically and add replicas, shard the ledger by merchant group, or move to an event-based ledger with a separate read model for balances. Each carried different costs in engineering time, cloud spend and the risk of getting money movement wrong during the change.

Analysis

The objectives were not the same as the engineering wish list. Marrow Bay needed checkout that stayed fast at peak, a balance that was never wrong for longer than a few seconds, and a ledger that auditors could trace back to each original payment. The workload had a particular shape: most writes touched one wallet, but a small set of large retail accounts generated a disproportionate share of traffic, which would make naive sharding unbalanced. Security review also narrowed the options. Any design that copied card-linked data into a new store would widen the scope of the compliance review, so the team favored designs that contained sensitive fields.

Operational constraints ruled out the cleanest design on paper. An event-based ledger was attractive, but the existing reconciliation tools, the finance close and the customer support console all read balances straight from the relational tables, so each of them would need rewriting before cutover. A sharded design would have required moving about a third of merchant accounts during the launch window, which operations judged too risky. The team chose a staged path: scale the primary and add a read model for balance screens, then decide on partitioning once launch data was in hand. Support and finance accepted delayed balances on screens as long as the ledger stayed exact.

Staged path from launch to partitioning decision
  1. Before the launchRead model built, primary scaled, reporting queries moved off.
  2. First week of launchPeak latency held inside threshold; retry storm contained by timeouts.
  3. After one billing cycleLaunch data reviewed for partitioning need and merchant concentration.
  4. At the partitioning reviewOnly the largest merchant group moved; the ledger elsewhere unchanged.

Actions taken

  1. Build a read model for balance screens fed from ledger events, with a visible freshness timestamp so customers can see how current the figure is.
  2. Scale the primary database vertically and move reporting queries off it entirely, so launch traffic does not compete with finance reads during the close.
  3. Run a load test at three times forecast peak using anonymized replay traffic, and set a rollback threshold for checkout latency before the test begins.
  4. Write a partitioning design for the ledger now, with a go or no-go review scheduled after the launch data has been analyzed for a full billing cycle.

Results

The read model went live before the launch and removed most balance queries from the primary database. Checkout latency at peak stayed inside its threshold through the partner's first week, with the largest single spike coming from a retry storm that the new timeouts contained. Balance screens showed a timestamp and were rarely questioned. Finance closed without a manual reconciliation effort. The partitioning review was held after a full billing cycle, and the team chose to shard only the largest merchant group, which kept the rest of the ledger unchanged.

Questions for discussion

  • What evidence would have justified sharding earlier, and what would the team have lost by doing it?
  • How should a team weigh a stale balance on a customer screen against a delay in the ledger itself?
  • Which stakeholders should be consulted before a read model is allowed to show figures customers act on?
5

Case Study 5

Automated merchant risk scoring under review

Quillmark Commerce, a merchant services company handling card acquiring and chargeback management for small and midsize retailers.

The situation

Quillmark's onboarding team reviewed about 600 merchant applications a week, and each file took up to two days because a person checked identity, trading history and expected card volume by hand. A vendor offered a model that would score every application and send low-risk files to automatic approval, with a pilot showing a large drop in review time. The pilot sample had been drawn by the vendor and was dominated by one retail category. Ines, the compliance lead, also noticed that the training data reflected an older approval mix, and the vendor had not said how the scores behaved for merchants in the smaller categories or regions the company wanted to grow into.

The challenge

The chief operating officer, Samuel, wanted the model live before the next seasonal backlog, and the vendor's discount expired at the end of the quarter. A false approval would let a high-risk merchant start processing, and the chargebacks would land on the acquiring bank relationship. Regulators would expect a documented reason for any automated decision that approved or declined a business. The team had no agreed metrics yet, and the vendor's headline figure, time saved per file, said nothing about errors or about who was being misjudged.

Analysis

The company's goal was faster onboarding without a rise in bad merchants, and those two goals pull in opposite directions unless they are measured separately. A useful evaluation therefore starts with error types rather than an overall accuracy score. A false approval costs chargebacks and possibly a regulatory finding. A false decline costs a lost merchant and a complaint. The vendor's pilot reported neither in a form the company could check. Quillmark asked for a holdout set drawn from applications across categories, labeled by experienced reviewers, and for results broken out by category, region and business size, so any gap in treatment between groups would appear before rollout.

Human oversight had to be designed in rather than added later. The model could handle the clear cases, but the review queue needed to keep a random sample of auto-approved files for ongoing audit, and any application the model scored near its threshold had to go to a person. Reviewers worried that they would become rubber stamps, and the compliance group worried about the opposite problem, that an overloaded reviewer would approve model output without reading it. Merchant relations asked for an explanation when an application was declined, which meant the model's output had to name the factors behind a score in plain language, something the vendor's tool did partly.

Whether the scoring model goes live
Does the model meet error targets in every category?
YesExpand automatic approvalExtend automatic approval one category at a time, keeping the audit sample.
NoKeep human decisionsHold the model in advisory mode, retrain on balanced data, and rerun the holdout.
Advisory mode continues until every category passes its targets.

Actions taken

  1. Run the model in shadow mode on live applications for one full review cycle, recording its scores while humans make every decision as before.
  2. Set error targets before the trial: maximum false approval rate for high-risk categories, maximum false decline rate for each region, and a required human review band.
  3. Release automatic approval first for one low-exposure category, with a daily audit sample of at least one in ten approved files and a kill switch owned by compliance.
  4. Require the vendor to deliver per-decision explanations and model change notices, and write into the contract that retraining needs sign-off from compliance.

Results

The shadow run showed that the model approved low-risk files quickly but also passed a cluster of applications from one small category that reviewers would have declined. The gap was traced to training data that lacked recent examples from that category. Quillmark kept the model in advisory mode, retrained with a balanced sample, and extended automatic approval only to the category where error rates stayed inside target. Review time for that category fell sharply and no approved merchant in the audit sample raised a chargeback in its first quarter. The broader rollout is still waiting on region-level results.

Questions for discussion

  • What false decline rate would you accept in a category where the merchant base is small and growing?
  • Who should hold the authority to switch off an automated decision, and what evidence should trigger it?
  • How would you test whether a model's explanations are accurate rather than merely plausible?

Learning Resources

Finance CASE STUDIES

China, India, United States, Indonesia, Pakistan, Nigeria, Brazil, Bangladesh, Russia, Japan, Mexico, Philippines, Vietnam, Egypt, Turkey, Germany, United Kingdom, France, Italy, Canada, South Korea, Australia, Spain.

Hourly Active: 37,008 Learners