The settlement report: the only reliable record of what the PSP owes the merchant
The settlement report is the document in which the PSP breaks each payout down into its components: settled transactions, refunds, chargebacks, fees and adjustments. It is the core document for level 2 reconciliation, because it is the only one that ties the amount actually received to the transactions that make it up. Without it, a payout amount cannot be matched to any specific sale.
Transaction reports, which list authorized and captured payments, serve a different purpose. A captured transaction is not yet settled, and a settled transaction may land in a different batch than expected after a retry, a dispute or an adjustment. The settlement report connects the two layers: transactions on one side, the money actually paid out on the other.
- Transaction-level detail: one line per event (settlement, refund, chargeback, per-transaction fee), which automated matching requires.
- Batch-level detail: totals per settlement batch, useful for consistency checks and bank reconciliation.
- Key identifiers: PSP reference (
pspReference,balance_transaction), merchant reference (order number), batch or payout number.
Gross settlement vs. net settlement
The settlement model is how the PSP deducts its fees from the funds it pays the merchant. Two models coexist. With net settlement (Stripe, Adyen, PayPal and others), the PSP deducts its fees from each payout, which arrives short and matches no sales total. With gross settlement (the traditional model of in-store acquirers such as Worldline and the banks that acquire CB transactions), the full batch amount is credited and fees are billed on a separate invoice, often monthly and debited in one go.
| Criterion | Net settlement | Gross settlement + invoice |
|---|---|---|
| Bank statement readability | Poor: the transfer matches no sales total | Good: credit = batch total |
| Fee reconciliation | Line by line in the settlement report (commission, interchange and scheme fee columns) | Check the monthly invoice against processed volume |
| Posting | You must rebuild the gross: revenue at gross, fees as expenses (in France, account 627) | Direct: batches at gross, invoice as an expense |
| Cash flow | Fees spread evenly as you go | Fees debited in one lump (monthly spike) |
| VAT on fees | Must be rebuilt from the report (fees are often VAT-exempt, but not all) | Shown on the invoice |
Mapping transactions to payouts
Transaction-to-payout mapping is the chain of keys that links an individual transaction to the transfer received at the bank, one link at a time, with no gaps. All of level 2 reconciliation depends on this chain. Each PSP uses its own terms, but the structure never changes and always has four links: transaction → settlement batch → payout → bank entry.
- At Adyen:
pspReference(transaction) →Batch Number(batch) → theMerchantPayoutline in the same batch → a transfer whose description includes the batch number. - At Stripe:
charge id→balance_transaction→automatic_payout_id(po_…) → a transfer whose description or reference includes the payout ID or the statement descriptor. - At a traditional CB acquirer: batch number (end-of-day upload) → batch credit at D+1. The key is the batch upload receipt printed by the POS terminal.
EndToEndId). Most PSPs offer this as a setting. Bank matching then goes from probabilistic (amount + date) to deterministic (exact reference), with no tolerance window to tune and no judgment calls to make.Example: Adyen’s Settlement details report
For each batch, Adyen generates a Settlement details report (CSV, about 30 columns) with one line per event booked to the batch. The amount columns separate gross (Gross) from net (Net) and split fees into four components: Commission (Adyen’s margin), Markup, Scheme Fees (card network fees) and Interchange (the interchange fee paid to the issuer).
# Lines starting with # are annotations for teaching purposes (not in the real file).
# 1 line = 1 event booked to settlement batch no. 43, paid out on 2026-07-11.
Company Account,Merchant Account,Psp Reference,Merchant Reference,Type,Creation Date,Gross Currency,Gross Debit (GC),Gross Credit (GC),Net Currency,Net Debit (NC),Net Credit (NC),Commission (NC),Markup (NC),Scheme Fees (NC),Interchange (NC),Batch Number
# Settled sale: gross 120.00 - fees 1.06 (0.11+0.10+0.10+0.75) = net 118.94
AcmeGroup,AcmeECOM_FR,LZM7XW9T2QK8N5D2,CMD-100234,Settled,2026-07-08 14:12:33,EUR,,120.00,EUR,,118.94,0.11,0.10,0.10,0.75,43
# Second settled sale: gross 45.50 - fees 0.48 = net 45.02
AcmeGroup,AcmeECOM_FR,QW83JD0S7PL2M4A9,CMD-100235,Settled,2026-07-08 16:41:05,EUR,,45.50,EUR,,45.02,0.11,0.05,0.07,0.25,43
# Refund: gross 30.00 debited + 0.11 processing fee = 30.11 net debit
AcmeGroup,AcmeECOM_FR,PK52RB8V1XC3T7E6,CMD-100198,Refunded,2026-07-09 09:02:11,EUR,30.00,,EUR,30.11,,0.11,,,,43
# Chargeback: the original transaction (CMD-100150) is clawed back in full
AcmeGroup,AcmeECOM_FR,HD91MN4Q6ZS8W2R5,CMD-100150,Chargeback,2026-07-09 18:55:47,EUR,89.90,,EUR,89.90,,,,,,43
# Flat chargeback fees, billed to the batch (Fee line, no pspReference)
AcmeGroup,AcmeECOM_FR,,,Fee,2026-07-09 23:59:59,,,,EUR,15.00,,,,,,43
# MerchantPayout line: the transfer sent to the merchant's bank. It balances the batch:
# credits 118.94 + 45.02 = 163.96; debits 30.11 + 89.90 + 15.00 = 135.01; payout = 28.95
AcmeGroup,AcmeECOM_FR,,,MerchantPayout,2026-07-11 06:00:00,,,,EUR,28.95,,,,,,43- Common line types:
Settled,Refunded,Chargeback,ChargebackReversed,SecondChargeback,Fee,InvoiceDeduction,DepositCorrection,Balancetransfer,MerchantPayout. Merchant Referenceholds the merchant’s order number: it is the key for level 1 matching (sales ↔ PSP).Batch Numberis the key for level 3 matching: Adyen’s bank transfer references this number.
MerchantPayout line) = 0.00. This integrity check should run automatically whenever a report arrives, before matching even starts. A failure means the file is incomplete or corrupted, and there is no point trying to reconcile it.Example: balance transactions and payout reconciliation at Stripe
Stripe’s model is built on the balance transaction (txn_…). Every money movement (charge, refund, dispute, fee, payout) creates a line in the Stripe balance with gross, fee and net. The payout_reconciliation.itemized report lists every balance transaction tied to a given payout, which makes it the functional equivalent of Adyen’s settlement details report.
# Every line below belongs to the same automatic payout po_1PcgT4KiAcme8812.
balance_transaction_id,created_utc,available_on_utc,currency,gross,fee,net,reporting_category,source_id,description,automatic_payout_id
# Sale 120.00 - fees 2.05 (1.5% + EUR 0.25, standard EU card) = net 117.95
txn_3PZkX1KiAcme0451,2026-07-08 14:12:33,2026-07-10 00:00:00,eur,120.00,2.05,117.95,charge,ch_3PZkX1KiAcme0451,CMD-100234,po_1PcgT4KiAcme8812
# Sale 45.50 - fees 0.93 = net 44.57
txn_3PZmB4KiAcme0777,2026-07-08 16:41:05,2026-07-10 00:00:00,eur,45.50,0.93,44.57,charge,ch_3PZmB4KiAcme0777,CMD-100235,po_1PcgT4KiAcme8812
# Refund: negative gross; the original fees are not returned
txn_3PZnC5KiAcme0810,2026-07-09 09:02:11,2026-07-10 00:00:00,eur,-30.00,0.00,-30.00,refund,re_3PZnC5KiAcme0810,REFUND CMD-100198,po_1PcgT4KiAcme8812
# Dispute: 89.90 clawed back + 15.00 dispute fee = net -104.90
txn_3PZpD6KiAcme0933,2026-07-09 18:55:47,2026-07-10 00:00:00,eur,-89.90,15.00,-104.90,dispute,du_3PZpD6KiAcme0933,DISPUTE CMD-100150,po_1PcgT4KiAcme8812
# Check: 117.95 + 44.57 - 30.00 - 104.90 = EUR 27.62 = exact amount of payout po_1PcgT4Ki...The available_on_utc column shows when funds become available (the settlement schedule). A charge made on July 8 becomes available on July 10 and goes out in that day’s payout. Through the API, GET /v1/balance_transactions?payout=po_… returns the same breakdown in JSON, which is convenient for built-in reconciliation without file transfers.
description contains the order reference because the merchant passed it in the charge metadata. Passing the order reference in every payment call is the highest-return design decision in the whole reconciliation chain: it carries the order number through to the PSP’s report, where it becomes the key for level 1 matching.Reconciling fees and managing payout frequency
Checking fees means recalculating them line by line from the contract rate card and comparing the result with the fee columns in the settlement report. With interchange++ pricing, each component can be checked on its own; with blended pricing, only the overall rate can.
| Model | Components | What you can check | Pitfalls |
|---|---|---|---|
| Blended | A single rate (e.g., 1.4% + €0.25) regardless of card type | Easy to recompute: rate × gross + fixed fee, to the cent | The “average” rate hides commercial and non-EEA cards, which are often overcharged |
| Interchange++ | Actual interchange (capped at 0.2%/0.3% for EEA consumer cards, Reg. (EU) 2015/751) + actual scheme fees + PSP markup | Check each component against published Visa/Mastercard rate tables | Complex interchange tables (hundreds of rows); make sure the markup is the PSP’s only compensation |
| Provider | Default frequency | Time to availability | Gross / net |
|---|---|---|---|
| Stripe | Daily (rolling) | D+2 to D+3 business days in France | Net |
| Adyen | Daily or weekly (configurable) | D+1 to D+2 depending on payment method | Net, fees itemized per line |
| PayPal | Continuous, to the merchant balance | Withdrawal to the bank: 1 to 3 business days | Net |
| Traditional CB acquirer | Per batch (daily end-of-day upload) | D+1 (business day) | Gross + monthly fee invoice |
| American Express | Per contract | D+3 to D+7 (faster option for a fee) | Net of discount fee |