Markdown Editor

Payment Fraud Detection System Design Template

Real-time payment fraud scoring: latency budget, streaming features, rules plus ML, review queues, label delay, selection bias, model monitoring

시스템 설계전체designfrauddetection

사용법: Use it when designing fraud scoring in the payment authorisation path. Fill the decision economics (2.2), latency budget and fallback (7.1) and the label delay deep dive (7.5) first. The main pitfall is training only on approved payments, so each new model learns from a world the old one already filtered.

미리보기

System Design: [Fraud platform name] real-time payment fraud detection

Reference design for scoring card and account-to-account payments for fraud at authorisation time. It covers the decision API and its latency budget, features computed from the transaction and from streaming aggregates, the online and offline feature stores, rules combined with a machine-learning score, decisions (allow, challenge, review, block), manual review queues, label delay, feedback loops and selection bias, and model monitoring. It follows the structure of the System Design Document template and is pre-filled with a worked design to adapt. Replace every [bracketed] value and every row marked Example; values marked Example are assumptions, not benchmarks. This is an engineering format, not legal, card-network or supervisory advice.

Document control

FieldValue
Document ID[SDD-FRD-001]
System / feature[Real-time fraud scoring]
Version[0.1]
Status[Draft / In review / Approved / Implemented / Superseded]
Owner[@owner]
Author(s)[@author]
Approvers / reviewers[@reviewer-1], [@reviewer-2]
Last updatedYYYY-MM-DD
Classification[Confidential]
Payment types in scope[Card not present / card present / bank transfer / wallet]
Model risk tier[High / Medium / Low per internal policy]
Related[Model card], [Model monitoring plan], [Data contract], [DPIA], [Threat model]

Approvals

RoleNameDecisionDate
Tech lead[@name][Approved / Changes requested]YYYY-MM-DD
Data science lead[@name][Decision]YYYY-MM-DD
Fraud risk owner[@name][Decision]YYYY-MM-DD
Fraud operations (review)[@name][Decision]YYYY-MM-DD
Privacy[@name][Decision]YYYY-MM-DD
SRE / operations[@name][Decision]YYYY-MM-DD

Revision history

VersionDateAuthorChange summary
0.1YYYY-MM-DD[@name]First draft for design review
0.2YYYY-MM-DD[@name]Example: Moved velocity features to the streaming pipeline
0.3YYYY-MM-DD[@name]Example: Added exploration sample for blocked traffic
1.0YYYY-MM-DD[@name]Example: Approved

Contents

1. Overview

1.1 Problem statement

[Example: We process payments for 120 000 merchants. Fraud losses rose to 0.11% of volume last year while our false decline rate is estimated at 2%, which merchants report as lost sales. Today's controls are 900 static rules evaluated in the payment service; nobody knows which rules still work. Features such as "cards used on this device in the last hour" are computed by a nightly batch, so a fraud ring testing stolen cards is visible only the next morning. The review team receives 40 000 cases a day and works them in arrival order.]

1.2 Proposed solution

[Example: A fraud decision service is called synchronously in the authorisation path with a 100 ms p99 budget. It joins request features with aggregates kept fresh by a streaming pipeline in an online feature store, runs a gradient-boosted model and a versioned rule set, and returns a decision with reasons. Thresholds map scores to allow, 3-D Secure challenge, review or block per merchant risk profile. Review cases are prioritised by expected loss. Labels from chargebacks, fraud reports and review outcomes flow back into an offline store with point-in-time correct features; models retrain on a fixed cadence and ship through shadow and canary stages under monitoring.]

1.3 Decisions requested from reviewers

IDQuestionRecommended optionSection
Q-01Example: Behaviour when the fraud service times out?Fail open below Example USD 500, fail to challenge above7.1, 9.1
Q-02Example: Streaming or batch velocity features?Streaming for windows up to 24 h; batch for longer7.2
Q-03Example: Rules and model together or separately?Rules for hard policy and fast response to attacks; model for ranking risk7.3
Q-04Example: How to measure fraud in blocked traffic?Small random exploration sample with loss cap7.5
Q-05Example: Review queue order?Expected loss (score x amount), with SLA per merchant tier7.4
[Q-nn][Question][Option][Section]

1.4 45-minute interview path

MinuteCoverNotes
0 to 5Scope: payment types, who decides (us or merchant), latency budgetName the cost of a miss and of a false decline
5 to 10Core requirements; below the line (AML, account opening, chargeback disputes)
10 to 15Estimates with consequences (3.5)Feature reads per second and review capacity
15 to 20Decision API and data model with access patternsEntities: payment, card, device, account, merchant
20 to 30High-level design, then deep dive 1: streaming features and train-serve parity (7.2)Point-in-time joins
30 to 40Deep dive 2: labels and feedback loops (7.5) or rules plus model (7.3)Pick 7.5 to show maturity
40 to 45Failure modes, monitoring, 10x and 0.1xEnd on fail-open versus fail-closed

2. Requirements

2.1 Core functional requirements

IDRequirementPriority
FR-01Example: Score every payment before authorisation and return a decision with reason codesMust
FR-02Example: Compute velocity and aggregate features per card, device, email, IP and merchant over sliding windowsMust
FR-03Example: Evaluate versioned rules written by fraud analysts, with backtest before activationMust
FR-04Example: Map scores to decisions with per-merchant thresholdsMust
FR-05Example: Send payments in the review band to a prioritised review queueMust
FR-06Example: Ingest labels from chargebacks, issuer fraud reports, customer reports and review outcomesMust
FR-07Example: Retrain, evaluate and deploy models through shadow and canary stagesMust
FR-08Example: Explain a decision to a merchant or customer support agent in plain reason codesShould
[FR-nn][Requirement][Must / Should / Could]

2.2 Non-functional requirements and decision economics

IDQualityTargetMeasured as
NFR-01Decision latencyExample: p99 at or below 100 ms, p50 at or below 30 msService timing
NFR-02AvailabilityExample: 99.99% of payments receive a decision or a defined fallbackSLO
NFR-03Feature freshnessExample: Velocity features reflect events older than 2 sEvent-to-store lag
NFR-04Fraud lossExample: Below [x] basis points of volumeMature labels (7.5)
NFR-05False decline rateExample: Below [y]% estimated from exploration sample7.5
NFR-06Review SLAExample: 95% of review cases decided within 2 hQueue metrics
NFR-07Train-serve parityExample: Online and offline feature values agree for 99.9% of sampled requestsParity job
[NFR-nn][Quality][Target][Measurement]

Decision economics (Example): a missed fraud costs the amount plus a chargeback fee and network penalties; a false decline costs the merchant margin and a share of customer lifetime value. The threshold for blocking sits where the expected fraud cost of allowing equals the expected cost of declining a good payment; a challenge band sits between allow and block where 3-D Secure shifts liability or adds friction.

2.3 Below the line (out of scope)

  • [Example: anti-money-laundering transaction monitoring (separate system, different labels)]
  • [Example: account opening and identity verification]
  • [Example: chargeback dispute management]
  • [Example: model training research and feature discovery notebooks]
  • [Example: authorisation routing and the payment ledger (see Payment Ledger System Design (system-design/design-payment-ledger))]
  • [Item deferred, with the release that will take it]

3. Capacity estimation

3.1 Assumptions

InputValueSource
Peak payments per secondExample: 5 000Volume forecast
Peak to average ratioExample: 3Daily curve
Entity keys per payment (card, device, email, IP, account, merchant, and pairs)Example: 12Feature catalogue
Aggregates updated per paymentExample: 40Feature catalogue
Features per model inputExample: 300, 4 bytes eachModel spec
Review band shareExample: 0.02% of paymentsThreshold policy
Analyst minutes per caseExample: 2Ops data
Label maturity windowExample: 90 days for most chargebacksHistorical label curves; check network rules

3.2 Throughput

QuantityCalculationResultConsequence
Online feature reads5 000 x 12 keys60 000 key reads/sBatched multi-get to an in-memory store, co-located with scorer
Aggregate updates5 000 x 40200 000 updates/sStreaming job partitioned by entity key, not per-request writes from the scorer
Average payments/s5 000 / 3about 1 670/s
Payments per day1 670 x 86 400about 144 million

3.3 Storage

QuantityCalculationResultConsequence
Feature vector per payment300 x 4 B1.2 KB
Logged vectors per day144 million x 1.2 KBabout 173 GB/dayLog every served vector for parity and training; columnar storage
Logged vectors per maturity window173 GB x 90about 15.6 TBTraining sets are large; sample negatives (good payments) for training, keep all positives

3.4 Review capacity

QuantityCalculationResultConsequence
Cases per day144 million x 0.000228 800
Analyst hours28 800 x 2 min / 60960 h/dayAbout 120 analysts on 8-hour shifts: the review band width is set by staffing, not by the model

3.5 Summary

QuantityEstimateDesign consequence
Decision budget100 ms p99In-memory features, one model call, no remote joins in the hot path
Feature reads60 000/sOnline store with batched reads
Aggregate updates200 000/sDedicated stream processor
Label delayabout 90 daysTraining lags reality; use early labels and monitor drift without labels
Review28 800 cases/dayPrioritise by expected loss; cap the band to capacity

4. API design

4.1 Endpoints

Method and pathPurposeIdempotent
POST /v1/decisionsScore a payment and return a decisionYes, keyed by payment_id
POST /v1/decisions/{id}/outcomeReport authorisation result and 3-D Secure resultYes
POST /v1/labelsIngest chargeback, fraud report or review outcomeYes, keyed by source reference
GET /v1/decisions/{id}Decision, model and rule versions, reasonsYes (read)
POST /v1/rules/{id}/backtestRun a rule against historical dataYes

4.2 Request and response examples

POST /v1/decisions
Content-Type: application/json
X-Request-Deadline-Ms: 90

{"payment_id": "pay_6f31", "merchant_id": "m_2201", "amount": {"value": 18900, "currency": "USD"}, "card_fingerprint": "cf_a91e", "device_id": "dv_77c0", "ip": "[ip]", "email_hash": "eh_19b2", "channel": "ecommerce"}
HTTP/1.1 200 OK
Content-Type: application/json

{"decision": "challenge", "score": 0.62, "reasons": ["card_new_device", "ip_country_mismatch"], "model_version": "gbm-2026-10-01", "rule_set_version": "rs-418", "fallback": false}
  • If the deadline passes, the caller applies its configured fallback (7.1) and records fallback: true with the later outcome call.
  • Reason codes are stable identifiers documented for merchants; they never reveal thresholds or rule logic.

5. Data model

5.1 Entities

Entities are the things fraud attaches to: cards, devices, emails, IP addresses, accounts and merchants. Features are aggregates keyed by one entity or a pair of entities over a window.

5.2 Storage choices

DataStoreKeyNotes
Online aggregatesExample: In-memory key-value store with replicationentity_type:entity_id:feature:windowLatest value only; TTL equal to longest window
Served feature vectorsColumnar store or data lakepayment_id, date partitionExactly what the model saw
Offline feature historyData lake with event-time columnsentity, event timeFor point-in-time joins
Decisions and labelsRelational or wide-column storepayment_idJoined for training and monitoring
RulesVersioned configuration repositoryrule_id, versionChange review and backtest required
Review casesCase management databasecase_idQueue ordered by expected loss

5.3 Access patterns

IDQueryServed byPartition key rationale
AP-01Example: Fetch 12 entities' aggregates for one paymentBatched multi-get on online storeKeys spread across nodes; one round trip
AP-02Example: Update card velocity on a new eventStream processor keyed by card_fingerprintOne partition owns each key, so updates are ordered
AP-03Example: Build training set as of each payment's timePoint-in-time join of offline history on entity and event timePrevents label leakage from future events
AP-04Example: Next case for an analystPriority index on expected_loss within queueHighest value first
AP-05Example: Fraud rate by model version and score bandDecisions joined with labels, partitioned by dateMonitoring and threshold tuning

6. High-level design

ComponentResponsibilityScales by
Decision serviceAssemble features, call model and rules, apply thresholds, logHorizontally, stateless
Online feature storeLatest aggregates by entityPartitions and replicas
Stream feature jobsSliding-window aggregates from payment eventsPartitions of the event log
Rule engineEvaluate versioned rules in processWith decision service
Review queuePrioritised cases, analyst toolingCase volume
Training pipelinePoint-in-time datasets, training, evaluation, registryBatch compute

7. Detailed design

7.1 Latency budget and fallback

StepBudget (p99)
Request parsing and request-only features5 ms
Online feature multi-get20 ms
Model inference (in process)15 ms
Rule evaluation10 ms
Threshold mapping, logging (asynchronous)5 ms
Network both ways15 ms
Headroom30 ms
Total100 ms

Fallback options: fail open (allow), fail closed (block), fail to challenge, or fall back to rules only. Choice: rules-only path inside the service when features time out; caller-side fail open below a small amount and fail to challenge above it when the service itself is down. Reason: blocking all payments during an outage costs more than a short window of weaker screening, but large amounts deserve friction.

7.2 Deep dive: streaming features and train-serve parity

OptionFreshnessCostParity risk
Batch aggregates (hourly or nightly)HoursLowLow, but stale features miss attacks in progress
Compute on request from raw eventsExactHigh read cost at 5 000/sMedium; queries differ from training code
Streaming aggregates into online storeSecondsMediumMedium; needs shared feature definitions
Streaming plus logging of served vectorsSecondsMedium plus storageLow; train on what was served

Choice: streaming aggregates for windows up to 24 hours, batch for longer windows, and log every served vector. Reason: card-testing and account-takeover attacks unfold in minutes, so velocity features must be fresh; logging served vectors removes the most common parity bug, where training recomputes features differently from serving.

  • Feature definitions live in one registry and generate both the stream job and the offline backfill.
  • Offline training joins use event time, never processing time, so a payment only sees aggregates of events that happened before it.
  • Late events update aggregates but are flagged; the parity job compares a sample of served values against recomputed values daily (NFR-07).
  • Every feature has an owner and a Data Contract (ai-data/data-contract) with the upstream producer.

7.3 Deep dive: rules plus model

OptionStrengthWeakness
Rules onlyTransparent, fast to changeDo not rank risk; rot without measurement
Model onlyRanks risk across many weak signalsSlow to respond to a brand-new attack; harder to explain
Rules as features of the modelOne scoreAnalysts lose fast override
Model score plus a rule layerModel ranks; rules enforce policy and react within minutesTwo systems to govern

Choice: model score plus a rule layer. Rules have three kinds: policy (always block sanctioned or blocked instruments), overrides (merchant allow-lists with expiry) and tactical (temporary rules against an active attack, expiring in Example 14 days unless renewed). Reason: the model handles ranking; humans need a lever that works before the next retrain. Every rule shows its backtest and its live hit and precision rate, and rules with no measured value are retired.

How real systems do it (paraphrased from a public write-up; not copied)

Stripe's guide to machine learning for fraud describes how its Radar product turns each payment into a vector of features drawn from the payment and from activity seen across many businesses, trains models on labelled history, and judges them with precision, recall and score distributions rather than a single accuracy number. It treats the choice of threshold as a business trade-off between blocking fraud and turning away good customers, lets users add their own rules and see how a rule would have performed on past payments before turning it on, and uses manual review as a way to handle the uncertain middle. It also stresses retraining as fraud patterns change. This design mirrors that split: model for ranking, rules with backtests for policy, review for the middle band.

Source: Stripe, "A primer on machine learning for fraud detection", Stripe Guides, last updated 15 December 2021, https://stripe.com/guides/primer-on-machine-learning-for-fraud-protection

7.4 Manual review queues

  • Cases enter only from the review band and only above an amount floor; the band is widened or narrowed so the forecast case count matches staffed capacity (3.4).
  • Priority is expected loss: score times amount, adjusted by merchant tier. Cases older than the SLA escalate.
  • The payment is held (authorised, not captured, or held in a pending state) while under review. If the SLA expires, the default action is set per merchant (release or cancel).
  • Analysts see the reasons, the entity graph (other payments sharing card, device or email) and prior decisions. Their verdict becomes a label with source review.
  • A random sample of decided cases is re-reviewed weekly to measure analyst agreement; low agreement points to unclear guidelines, not bad analysts.

7.5 Deep dive: label delay, feedback loops and selection bias

Labels arrive late and only for some payments:

Label sourceTypical delay (Example)Covers
Review verdictHoursReview band only
3-D Secure failureSecondsChallenged payments only
Customer fraud reportDaysAllowed payments
ChargebackWeeks to monthsAllowed and captured payments

Problems and choices:

  • Delay: a model trained today learns from payments at least one maturity window old. Choice: train on matured data for the main model; monitor recent weeks with early labels and with label-free signals (score distribution, feature drift, decline rate). Reason: waiting for full labels is the only unbiased option; early labels catch breakage sooner.
  • Selection bias: blocked payments never get chargebacks, so their labels are missing and the next model learns from a filtered world. Options: ignore (bias grows with each retrain); infer labels for blocked payments (circular); allow a small random exploration sample of would-be-blocked payments below an amount cap and weight it in training and evaluation. Choice: exploration sample with a strict loss budget approved by the risk owner (Example: 0.1% of blocks, amount at most USD 50). Reason: it is the only source of unbiased estimates of false decline rate (NFR-05) and of the block band's true fraud rate.
  • Feedback loops with rules: a tactical rule that blocks an attack removes those payments from future training labels; record which rule fired so training can include or exclude them deliberately.
  • Adversarial adaptation: fraudsters probe thresholds. Do not expose scores to merchants at full precision and rotate tactical rules.

7.6 Model lifecycle and monitoring

StageExit criterion (Example)
Offline evaluationBetter precision at fixed recall in the business band than the champion on the latest matured month
ShadowScores logged for 7 days without effect; latency and score distribution within limits
Canary5% of traffic for 7 days; decline and challenge rates within agreed bounds
Full rolloutRisk owner approval; champion kept for instant rollback

Monitoring signals, owners and thresholds belong in Model Monitoring Plan (ai-data/model-monitoring-plan); describe the model in a Model Card (ai-data/model-card). If the operator is a US banking organisation, the fraud model may fall under supervisory model risk management guidance (SR letter 26-2, "Revised Guidance on Model Risk Management", 17 April 2026); confirm scope with model risk management and record validation in Model Validation Report (ai-data/model-validation-report).

8. Scalability and performance

ConcernApproachLimit before redesign
Feature readsMulti-get, replicas in each zone, hot-key caching for merchantsExample: 200 000 reads/s per cluster
Hot entitiesMerchant-level aggregates pre-aggregated per secondMerchant event rate
Stream updatesPartition by entity key; scale partitionsPartition count of the event log
Model inferenceIn-process model, no network hopModel size and CPU per request
Training dataSample negatives, keep positivesLake query cost

9. Reliability, security and operations

9.1 Failure modes

IDComponentFailureDetectionBlast radiusMitigationRTO
FM-01Decision serviceDown or over budgetCaller timeoutsAll paymentsCaller fallback (7.1)Example: 5 min
FM-02Online feature storePartition lostRead errors, missing features ratePayments with keys on that partitionRules-only path; rebuild from stream replayExample: 15 min
FM-03Stream jobsLagEvent-to-store lagStale velocity featuresAlert at 30 s; scale consumersExample: 10 min
FM-04ModelBad releaseDecline rate jump, score shiftShare of traffic on canary or allAutomatic rollback to champion on guardrail breachExample: 5 min
FM-05Label feedChargeback file missingFeed freshnessMonitoring and next trainingHold retrain; contact providerExample: 2 days
FM-06Rule changeOver-broad tactical ruleHit rate spikeMerchants matching ruleRule hit caps and automatic disable above capExample: 5 min
[FM-nn][Component][Failure][Signal][Scope][Mitigation][RTO]

9.2 Security and privacy

IDThreat or dutyControl
SEC-01Threshold probingCoarse reason codes, no raw score to merchants, rate limits
SEC-02Insider weakens rulesRule changes reviewed by a second analyst; audit log
SEC-03Personal data in featuresHash identifiers; minimise raw fields; retention limits; DPIA (compliance/dpia)
SEC-04Poisoned labelsLabel sources authenticated; anomaly checks on label volume per merchant
SEC-05Automated decision rightsRecord logic and human review route where the law requires it; this is a format, not legal advice
[SEC-nn][Threat][Control]

9.3 Observability

SignalMetricAlert threshold
LatencyDecision p99Over 100 ms for 5 min
Fallback rateShare of decisions with fallbackAbove 0.5%
Score shiftPopulation stability of score distributionExample: above 0.2 week over week
Decline rateBlocks plus challenges by merchant tierChange above 30% day over day
Review backlogCases past SLAAbove 5%
ParityOnline versus recomputed feature mismatchAbove 0.1%

10. Trade-offs and alternatives

DecisionOptionsChosenWhyWhat we give up
Feature freshnessBatch; streamingStreaming up to 24 h windowsAttacks unfold in minutesStream infrastructure to run
Decision logicRules; model; bothModel plus rule layerRanking plus fast reactionTwo governance processes
Outage behaviourOpen; closed; challengeAmount-based fallbackKeeps sales flowingShort window of weaker screening
Blocked-traffic labelsIgnore; infer; exploreExploration sampleUnbiased estimatesSmall, capped fraud loss
Model familyDeep model; gradient-boosted treesGradient-boosted treesStrong on tabular features, fast inferenceLess benefit from raw sequences
At 10x (50 000 payments/s)Bigger store; regional cellsRegional cells, each with its own feature store and scorer; global features by asynchronous mergeOne cluster's read rate and cross-region latencyGlobal velocity features become seconds stale
At 0.1x (500 payments/s)Full platform; managed service plus rulesRules plus a vendor or managed score, batch features hourlyToo little data to train well in-houseLess control and explainability
[Decision][Options][Chosen][Why][Cost]

11. Delivery plan and risks

11.1 Milestones

MilestoneScopeExit criterionTarget date
M1Decision service with current rules, served-vector loggingLatency within budget at peak loadYYYY-MM-DD
M2Streaming features and online storeParity above 99.9% for 14 daysYYYY-MM-DD
M3Model in shadow, then canaryCanary guardrails met for 7 daysYYYY-MM-DD
M4Review queue by expected lossSLA met at forecast volumeYYYY-MM-DD
M5Exploration sample and bias-corrected evaluationRisk owner approval of loss budgetYYYY-MM-DD

11.2 Risks

IDRiskLikelihoodImpactMitigationOwner
R-01Example: Label definitions differ between chargeback reason codes and our "fraud" labelHighMediumLabel taxonomy agreed with ops; mapping table versioned[@name]
R-02Example: Merchants reject higher challenge rateMediumMediumPer-merchant thresholds; reporting on recovered sales[@name]
R-03Example: Exploration sample seen as deliberate loss by auditorsLowMediumDocumented loss budget, approval, and purpose[@name]
[R-nn][Risk][L / M / H][L / M / H][Mitigation][@name]

12. Appendices

12.1 Traceability

RequirementDesign elementVerification
NFR-017.1 budgetLoad test at peak
NFR-027.1 fallbackFault injection on decision service
NFR-037.2 streamingLag dashboard
NFR-057.5 explorationMonthly estimate with confidence interval
NFR-077.2 served vectors, parity jobDaily parity report
[ID][Element][Test]

12.2 Open questions

IDQuestionOwnerDue
OQ-01Example: Do we share network-level signals across merchants under our contracts?[@name]YYYY-MM-DD
OQ-02Example: Which label wins when review and chargeback disagree?[@name]YYYY-MM-DD
[OQ-nn][Question][@name]YYYY-MM-DD

12.3 Glossary

TermMeaning
Velocity featureCount or sum of events for an entity over a recent window
Point-in-time joinJoining features as they were at the moment of each event
Label maturityTime after which most labels for a payment have arrived
Selection biasDistortion caused by learning only from payments the system let through
Exploration sampleSmall random set of payments allowed despite a block decision, to measure truth
ChallengeStep-up authentication such as 3-D Secure
Champion and challengerCurrent production model and its candidate replacement

12.4 References

ReferenceUse
Stripe, "A primer on machine learning for fraud detection", Stripe Guides (last updated 15 December 2021)Rules, features, thresholds, review (7.3); paraphrased
Board of Governors of the Federal Reserve System, SR 26-2 "Revised Guidance on Model Risk Management", 17 April 2026, https://www.federalreserve.gov/supervisionreg/srletters/SR2602.htmModel governance for banking organisations (7.6)
Model Monitoring Plan (ai-data/model-monitoring-plan)Monitoring signals and owners
ML System Design Document (ai-data/ml-system-design)General ML system structure
Data Contract (ai-data/data-contract)Feature and label feed contracts
Payment Ledger System Design (system-design/design-payment-ledger)Payment states around the decision
Digital Wallet System Design (system-design/design-digital-wallet)Risk hooks for wallet transfers

Standard and licence note

Based on common industry practice for payment fraud scoring and on the public references in 12.4. Company guides were used as inspiration only; the text, diagrams and numbers are original and illustrative. SR letter 26-2 is US supervisory guidance aimed at banking organisations; check its current text and scope before relying on it. Card-network and data protection rules vary and change; this is an engineering format, not legal advice. Template licence: MIT.

관련 템플릿