Engagement and process
QA audit and test strategy
A QA audit and test strategy engagement assesses how a fintech currently tests payment states, failure paths, reconciliation, regulatory requirement traceability, and release gates for ledger changes. Buyers receive a QA maturity assessment, a risk-based test strategy, a prioritised roadmap with effort estimates, and a due diligence summary for investors or partners.
What a fintech QA audit covers
Payment states and failure paths
We map every state that a payment, payout, refund, and dispute can reach, from provider event types, webhook handlers, and the state machine in code. Each transition is marked as automated, manual, or untested. The gaps that cost money are usually off the main path:
- Timeout after the provider accepted the request. The client retries without an idempotency key, and the customer is charged twice. The payment idempotency guide shows the test.
- Webhooks out of order or delivered twice. A refund event processed before its capture event leaves the payment stuck, and a repeated payout event moves a balance twice.
- Returns after funds are available. An ACH debit comes back as returned after the platform has let the user spend the pay-in, and the negative balance becomes a loss for the business.
- Partial operations. A partial capture followed by a partial refund, or a BNPL instalment schedule recalculated after a partial refund, produces amounts that single-step tests never check.
Where a flow has no usable suite, the roadmap points to the scope of payment flow testing.
Reconciliation checks
We check whether reconciliation logic is tested before release or only runs in production under the operations team. The assessment answers three questions from evidence:
- Does CI fail when a journal does not balance per currency, or when a stored balance differs from the sum of its postings?
- Do test bank statements and processor settlement files contain injected breaks, such as duplicates, missing lines, reversals, and entries booked on the next business day?
- Does a parser change or a new partner bank trigger a replay of the reconciliation scenarios?
Without these tests, a break first appears in the finance team's month-end close, after payouts calculated from a wrong balance have left. Ledger and reconciliation testing is the follow-on scope for these gaps.
Regulatory requirement traceability
We take the requirements that your compliance team maps to the product, such as disclosure timing, dispute and error resolution deadlines, fee caps, and authentication rules. Each requirement is traced to its test cases, the last run result, and the stored evidence. Typical findings:
- a requirement in a policy document with no test case behind it;
- a test case whose only evidence is an undated screenshot with no build or environment named;
- a requirement tested once at launch and never rerun after the flow changed.
When a partner bank or an examiner asks for evidence of a control, each of these gaps forces the team to rebuild evidence under a deadline. Segment pages list the evidence requested per jurisdiction, for example Banking-as-a-Service and card issuing.
Release gates for ledger and money logic changes
We read the change history for posting rules, fee and interest calculations, rounding, the chart of accounts, and balance migrations, and record which gate each change passed. Failure patterns we look for:
- a fee rounding hotfix released with unit tests only, which leaves a residue on every transaction until finance sees the drift;
- an interest accrual change in a lending product deployed without comparing accrued amounts per loan before and after the change;
- a migration that rewrites balances, run without count and sum comparisons between the old and new tables and without a rollback plan;
- a feature flag that sends some customers to new posting logic while reconciliation still expects the old entries.
Environments, test data, and automation
We check whether the test environment can produce events that a provider sandbox does not send on demand, such as returns, chargebacks, and late or repeated webhooks. We also list the regression suites that fail intermittently or run too long to gate each release, since a suite that is skipped before a release blocks no defect.
Technical due diligence before funding or acquisition
An investor, acquirer, or partner bank asks which money flows have automated coverage, how a ledger change is approved, which money-affecting defects reached production, and what remains open. The due diligence summary answers from the evidence gathered in the assessment. The technical due diligence scenario sets out the sequence.
Inputs and duration
We need read access to repositories and CI configuration, exports from the test management tool and defect tracker, the incident list, and the compliance requirement register. We interview the engineering lead, the QA lead, finance operations, and compliance, and sample recent releases that changed money logic. As an engineering estimate, one product with card and bank transfer flows needs two to four elapsed weeks from access to readout. Each added provider, rail, or jurisdiction extends that range. A due diligence summary on an investor deadline can be limited to the flows the investor names.
Related
Segments
Guides
Deliverables
QA maturity assessment
A rating of each testing area, including payment state coverage, reconciliation checks, requirement traceability, and release gates, with the evidence reviewed and each gap tied to the money flow it exposes, for the CTO and the engineering lead.
Risk-based test strategy
A test strategy that ranks money flows by financial and regulatory impact and sets the test types, environments, test data, and release gates for each flow, for the engineering lead and the QA lead.
Prioritised roadmap with effort estimates
An ordered list of work items that close the assessed testing gaps, each with the risk it reduces, its dependencies, an effort estimate as a range of engineer-weeks, and an owner role, for sprint planning.
Due diligence summary for investors or partners
A written summary of test coverage per money flow, release controls, open testing risks, and planned remediation, prepared as input to the technical review of an investor, acquirer, or partner bank.
How the audit and strategy fit your release process
- During the assessment. Your releases continue on their normal schedule. We work from read-only access to repositories, CI, and the tracker, and follow at least one release that changes money logic from merge to production. We need no production access. The test data review checks whether staging holds copies of production account or cardholder data, and the strategy names the synthetic or masked data that replaces it.
- Gates by pipeline stage. The risk-based test strategy assigns each check to a stage. On merge: ledger invariants and calculation tests. Before a release that changes money logic: provider event simulations and a reconciliation replay. After release: a smoke test on the first settlement file and review of the first business-day reconciliation.
- Roadmap in your tracker. Each roadmap item becomes a ticket with the risk it reduces, its dependencies, an effort range in engineer-weeks, and an owner role. Testing work then competes with feature work on stated financial risk.
- Readout and handover. We present the findings to the engineering lead, the QA lead, and compliance. The assessment, the strategy, the roadmap, and the evidence behind each finding stay in your repository or document store.
- Follow-up. A second review against the same criteria after the first roadmap items ship shows which gaps closed. A new review fits before a funding round, a new partner bank, or a launch in a new jurisdiction.
Your team owns prioritisation, implementation, and release approval. If the roadmap needs engineering capacity your team lacks, test automation builds the suites in your CI. If slow regression cycles triggered the audit, the QA bottlenecks scenario describes that sequence.
Sample deliverable
Sample, synthetic data
| Step ID | From state | Event (webhook or file) | To state | Ledger effect | Test cases |
|---|---|---|---|---|---|
| PFM-CARD-01 | Card pay-in created | Webhook payment.authorised for 150.00 XTS | Card pay-in authorised | No journal entry; the 150.00 XTS authorisation hold is stored as a memo record | TC-PF-001, TC-PF-002 (duplicate webhook delivery) |
| PFM-CARD-02 | Card pay-in authorised | Webhook payment.captured for 150.00 XTS | Card pay-in captured | Dr Processor receivable 150.00 XTS / Cr Merchant payable 150.00 XTS | TC-PF-010, TC-PF-011 (capture retried with the same idempotency key) |
| PFM-CARD-03 | Card pay-in captured | Processor settlement file line for the capture, with a 4.35 XTS fee line | Card pay-in settled | Dr Settlement bank cash 145.65 XTS and Dr Processing fee expense 4.35 XTS / Cr Processor receivable 150.00 XTS | TC-PF-020, TC-PF-021 (settlement line with no matching capture) |
| PFM-ACH-01 | ACH debit pay-in pending | Nacha return file entry with return code R01 (Insufficient Funds) | ACH debit pay-in returned | Dr Customer available balance 200.00 XTS / Cr ACH clearing 200.00 XTS, reversing the provisional credit | TC-RL-030, TC-RL-031 (return received after the customer spent the provisional funds) |
| PFM-ACH-02 | ACH debit pay-in settled | Nacha return file entry with return code R10 (unauthorised debit), inside the 60-day extended return window | ACH debit pay-in returned as unauthorised | Dr Customer available balance 200.00 XTS / Cr ACH clearing 200.00 XTS, with any shortfall moved to a negative balance receivable | TC-RL-032, TC-RL-033 (return that drives the customer balance below zero) |
| PFM-ACH-03 | ACH credit payout sent | Nacha return file entry with return code R03 (No Account/Unable to Locate Account) | ACH credit payout returned | Dr ACH clearing 500.00 XTS / Cr Beneficiary payable 500.00 XTS, restoring the amount owed to the beneficiary | TC-RL-040, TC-RL-041 (payout retry blocked until bank details change) |
| PFM-INST-01 | Instant payout submitted | ISO 20022 pacs.002 with transaction status ACSC | Instant payout completed | Dr Instant payout clearing 75.00 XTS / Cr Settlement bank cash 75.00 XTS | TC-RL-050, TC-RL-051 (pacs.002 received after the client timeout) |
| PFM-INST-02 | Instant payout submitted | ISO 20022 pacs.002 with transaction status RJCT and reason AC04 (Closed Account Number), sent to the client as webhook payout.failed | Instant payout failed | Dr Instant payout clearing 75.00 XTS / Cr Customer available balance 75.00 XTS, reversing the payout debit | TC-RL-052, TC-RL-053 (payout.failed webhook delivered before payout.submitted) |
Amounts use XTS, the ISO 4217 code reserved for testing. States, webhook names, and ledger accounts are generic, and no real account or card data appears.
Questions
What is a QA audit?
What is audit testing in software quality assurance?
What does a QA auditor do?
Scope your QA audit
Send your money flows, your CI setup, and the requirements your partner bank or regulator checks, and we return an assessment scope and a timeline.
Scope your testing