The problem and decision criteria

The order screen shows KRW 190,000, but only KRW 135,800 has reached the bank account. Placing the order file beside the payment gateway settlement file for the same date still does not reconcile the totals. First distinguish cancellations, additional fees, and money that has not arrived yet. We will work through these numbers using fictional data below.

Reconciliation should use linked records of the same transactions, rather than the total shown on one screen. Connect orders to approvals and cancellations, select the transactions included in this settlement, and compare the payout statement with the bank deposit. A difference between order value and deposits is not necessarily an error; matching totals do not establish that every transaction was recorded correctly.

In practice, separate the questions. The order system answers how much should have been collected; gateway transaction records answer how much was approved or canceled; the settlement statement explains which items produced the payout; and the bank record establishes what actually arrived. Start by keeping answers to these different questions in separate columns.

This article uses Toss Payments as a concrete Korean payment gateway example, based on official documentation checked on September 26, 2026. The linking structure and exception handling below are implementation design proposals. They do not establish accounting revenue recognition or tax treatment.

Matching files by the same date can misalign the scope

First make the meaning of the comparison table's date column explicit.

DateEvent it identifiesReconciliation use
Order creation dateWhen the order was createdSelecting the order population
Approval or cancellation dateWhen each payment event was processedCollecting approval and cancellation history
Settlement reference dateThe gateway's basis for grouping items for settlementIdentifying the settlement to which an item belongs
Scheduled payout dateWhen the statement says payment is dueChecking expected deposits and delays
Bank deposit dateWhen the receiving account records the depositConfirming actual receipt

Check settlement cycles and fee terms against the contract. Toss Payments also explains that the settlement sales date does not always match the payment date. Subtracting results selected by order period from results selected by deposit period can therefore compare different transaction populations. Settlement concepts and cycles.

Toss Payments transaction queries use transactionAt and can retrieve today's records. Settlement queries are available from the following day; dateType defaults to soldDate, while payout-date queries use paidOutDate. Distinguish a settlement record that is not yet queryable from an actual omission. Core API: transaction and settlement queries.

Record the collection cutoff time alongside the query conditions. Setting the end date to today does not cover the whole day if collection finished in the morning. Without query boundaries, time zones, and confirmation that every page was collected, mismatch alerts can confuse collection problems with transaction problems.

How the service works

Turn transaction data into closing evidence — Reconcile orders, authorizations and deposits using shared keys, then carry exception records through closing.

Do not reduce an order to a single transaction row

The model must accommodate an order paid in two installments and a payment canceled partially several times. Toss Payments describes an approval and each full or partial cancellation as separate transactions. Retaining only the order's current balance makes it difficult to trace which settlement included a cancellation. Transactions and transaction records.

The following linking table is recommended. Internal identifiers on the right are values your system manages, not fields automatically issued by the gateway.

Records to connectIdentifiersRelationship to design
Business order → payment requestInternal order ID ↔ order ID sent to the gatewayA mapping for each split payment request
Payment request → gateway paymentGateway order ID ↔ payment identifierDistinguish failures and retries from successful payments
Payment → approval or cancellation eventPayment identifier ↔ individual transaction identifierAllow multiple events for one payment
Transaction → settlement itemTransaction identifier ↔ original settlement rowPreserve the basis for linking adjustments and corrections
Settlement item → payout batchGateway payout reference or verified batch mappingPreserve batch membership and net payout
Payout batch → bank depositPayout reference ↔ bank transaction ID and deposit referenceAllow several items in one deposit

In Toss Payments, paymentKey identifies the payment and transactionKey identifies the approval or cancellation transaction. The cancellation array also contains individual transaction keys. Core API, Cancel a payment.

Include provider, merchant ID, and test or production environment in stored keys. Do not connect transactions across merchants or environments merely because internal order numbers match. If one business order produces several payment requests, manage its business order ID separately from each request's order ID sent to the gateway.

An explicit settlement batch ID may be unavailable. The public Toss Payments Settlement schema does not document a common payout batch ID or bank deposit reference. Settlement object. Rows with the same payout date are therefore not automatically confirmed members of one bank deposit. Confirm the merchant, currency, payout statement, and deposit notification before finalizing the mapping; retain a candidate batch when evidence is insufficient.

If you also process international payments, preserve provider differences. Stripe's Payout reconciliation report describes transaction batches around automatic payouts and directs manual payouts to a separate Balance report. It does not establish that the same batch structure applies to Korean gateways. Stripe payout reconciliation report.

Align the meaning of amounts and statuses before linking

Combining source CSV files in one sheet is different from producing data that can be reconciled. Put the following items into collection rules first.

Amounts, currencies, and signs. Confirm the provider's units and currency and preserve the original values. This article's examples use integer amounts in KRW won; do not force that unit onto other currencies or reports. PostgreSQL documentation also recommends exact numeric types instead of floating point when exact monetary calculations are required. Choose integers with sufficient range or an explicit decimal precision, and define rounding separately according to the provider's actual rules. PostgreSQL numeric types.

Check whether cancellations are positive or negative in the source before converting them to internal signs. Avoid subtracting an already negative cancellation again, or deducting the cancellation once more from a post-cancellation balance. For currency conversion, distinguish payment currency, settlement currency, exchange rate and timing, and conversion-related items. Keep won and dollar totals separate when no conversion basis exists.

Transaction, settlement, and deposit statuses. Do not merge these into one completed state. In Toss Payments Payment.status, DONE means payment approval; card acquireStatus describes acquisition status. Neither does paidOutDate replace bank deposit evidence. Core API status and settlement fields.

The following separate internal columns are proposed. These names are not official gateway status codes.

Internal dimensionExample valuesWhen not to finalize automatically
Transaction verificationApproval confirmed / cancellation confirmed / unconfirmedA cancellation was requested but completion is unproven
Settlement inclusionScheduled / included / held / needs reviewClassifying a hold without supporting gateway evidence
Bank reconciliationNot yet due / matched / difference / needs reviewOnly amounts match, or the deposit reference is unclear

Fees, duplicates, and corrections. Separate the total settlement deduction from its components. Toss Payments documentation distinguishes fees, supplyAmount, vat, and payOutAmount. Settlement object. Multiple fields are not necessarily independent costs to add together: check how totals include components. This article does not specify VAT rates or journal entries.

Also distinguish transaction linkage keys from source-row deduplication keys. Manage transaction and settlement files separately. If one transaction expands into several settlement rows for fees or adjustments, retain the provider's row ID or item and sequence fields. Do not delete distinct settlement rows just because their transaction keys match, or repeatedly sum the payment principal for every linked row.

A renamed file does not represent new transactions. Preserve source file hashes and collection history, and check duplicates using that format's row identity rules. Identical content under the same key is recollection; changed amounts or statuses under the same key are correction candidates. Do not overwrite history with a rule that the latest file is always correct.

Work through how KRW 190,000 becomes KRW 135,800

This is a design example, not actual customer data, a gateway response, contractual fees, or a settlement schedule. Assume one fictional merchant, integer KRW amounts, and data collected through September 21, 2026, 23:59:59 Korea time. Initial order amounts represent the final charges, and all orders were approved. Apart from the cancellations and fees below, the example has no additional tax deductions, holds, currency conversion, adjustments, or chargebacks.

O-A was paid for KRW 100,000 and then partially canceled for KRW 20,000. O-B split KRW 60,000 into two payments. O-C's KRW 30,000 is outside this payout batch and must be checked in a later settlement.

Business orderOrder dateInitial order amountRequest-specific gateway order ID → payment ID
O-ASeptember 14KRW 100,000PG-A01 → P-A
O-BSeptember 14KRW 60,000PG-B01 → P-B1, PG-B02 → P-B2
O-CSeptember 21KRW 30,000PG-C01 → P-C
TotalKRW 190,0003 business orders, 4 approved payments

The next table expands those orders into individual transaction events. Fee deductions are positive for amounts taken from the payout and negative for amounts returned. The KRW 600 fee reversal on cancellation is also an assumption specific to this example.

Transaction IDOrder / paymentProcessing date and typeTransaction changeFee deductionPayout batch
T-A1O-A / P-ASeptember 14 approval+KRW 100,000+KRW 3,000B-01
T-A2O-A / P-ASeptember 15 cancellation−KRW 20,000−KRW 600B-01
T-B1O-B / P-B1September 14 approval+KRW 40,000+KRW 1,200B-01
T-B2O-B / P-B2September 14 approval+KRW 20,000+KRW 600B-01
T-C1O-C / P-CSeptember 21 approval+KRW 30,000UnconfirmedOutside this batch

B-01 is an internal batch ID assigned after checking the four transaction rows in the original settlement. Assume a fictional statement with September 14 and 15 settlement reference dates and a September 21 scheduled payout. Items with different reference dates can be reconciled together when the statement confirms they belong to the same batch.

B-01 settlement rowCalculationNet payout contribution
T-A1100,000 − 3,000+KRW 97,000
T-A2−20,000 − (−600)−KRW 19,400
T-B140,000 − 1,200+KRW 38,800
T-B220,000 − 600+KRW 19,400
TotalTransaction change 140,000 − net fee deduction 4,200KRW 135,800

The bank record is deposit transaction D-01 on September 21 for KRW 135,800. Assume the gateway deposit notification and bank record share a usable reference REF-01, and the responsible person has verified the REF-01 to B-01 mapping.

The cross-check is therefore:

All orders KRW 190,000 − confirmed cancellations KRW 20,000 = net payments KRW 170,000
Net payments KRW 170,000 − transactions outside this batch KRW 30,000 = batch transaction change KRW 140,000
Batch transaction change KRW 140,000 − net fee deductions KRW 4,200 = payout KRW 135,800
Payout KRW 135,800 − corresponding bank deposit KRW 135,800 = reconciliation difference KRW 0

The KRW 34,200 difference between net payments and the bank deposit consists of KRW 4,200 in fees and KRW 30,000 in principal outside this batch. That KRW 30,000 is transaction principal not yet included in this payout, not the amount of the next deposit itself. Later fees and settlement records still need checking. Do not treat this equation as a universal settlement formula for every period and gateway.

There is another trap. Omitting both T-A2's −KRW 19,400 and T-B2's +KRW 19,400 leaves the payout total unchanged at KRW 135,800. A totals-only check misses an omitted cancellation and approval. Check that B-01 contains all four members, T-A1, T-A2, T-B1, and T-B2, and that each key and amount corresponds to the source.

How the service works

From transaction alerts to response and provider review — Follow symptom-based checks to establish transaction status and handle incidents, refunds and recurring issues.

Separate automatic matches from items requiring human review

Limit automatic matches to records that pass both identity checks and amount reconciliation. Confirm the same provider, merchant, and currency; linkage through transaction keys; correct interpretation of approvals and cancellations; and no assignment of one row to multiple batches. The bank stage also needs verified payout references and membership.

If the sender and amount match but two statements could correspond, there are two candidate matches. Do not choose the first row found or finalize a combination merely because its total fits. Amounts and dates narrow candidates; they do not establish identity. Human confirmation must also record the selected originals, supporting evidence, reviewer, and time.

Do not use tolerance as a way to erase every difference. Specify the item, currency, rounding basis, and limit to which it applies, and report differences accepted within tolerance separately. An unexplained KRW 1 difference should remain unexplained.

Difference typeEvidence to check firstHandling and owner
Not yet reflectedCollection cutoff, query reference date, contractual scheduleOperations records the next query time; investigate delay after the deadline
Fee differenceItemized statement, applicable contract, rounding and total/component relationshipsSettlement owner checks the formula and period; do not force a match with an arbitrary average fee rate
Cancellation timing differenceOriginal payment and cancellation keys, processing status, later settlementsOperations retains cancellation as a separate event and tracks inclusion
Missing, duplicate, or corrected collectionFile hash, pagination records, previous values for the same keyEngineering recollects and reprocesses sources without deleting or overwriting history
Hold or releaseGateway-provided reason, amount, and release detailsClassify only with evidence; settlement owner sets a review deadline and contact route
Adjustment, chargeback, or disputeProvider item code, original transaction, adjustment or dispute recordsDistinguish from ordinary cancellation and follow a separate operating procedure
Unconfirmed deposit or duplicate assignmentPayout statement, bank original, payout reference, existing allocationsSettlement owner checks gateway and bank evidence; equal amounts alone remain unconfirmed

Handle cancellations after settlement separately. Toss Payments' cancellation guide explains offsetting them against a later settlement. Instead of replacing a past deposit with a post-cancellation value, link the original payment, cancellation, and subsequent inclusion to explain both historical records and later changes. Cancel a payment.

The hold, adjustment, and chargeback categories above do not mean every gateway offers identical fields. Stripe, for example, separately describes balance transaction categories for disputes, dispute reversals, and reserves. Map Korean gateway records only to items verified in their contracts, statements, or notices. Leave unknown codes as unclassified exceptions, rather than miscellaneous fees. Stripe reporting categories.

Explain earlier decisions even after retrieving a file again

Keeping only reconciliation results makes it difficult to explain a previous close when the source file is corrected. Manage collected originals, calculation results, and human exception decisions separately.

Collection records should contain source, merchant, period, query conditions, collection time, file hash, and completeness. Calculation records should join source version, transformation rule version, reconciliation rule version, and processing run ID. Exception records should retain owner, review deadline, rationale, reprocessing history, and whether the case reopened. If the same originals and rules produce different results, investigate processing before transaction differences.

Preserve a correction as a new source version and use provider documentation and verification results to identify which earlier rows it replaces or adjusts. Retain past confirmed results, recalculate only affected batches, and define when closed exceptions reopen. Adding the entire corrected file to the previous file confuses recollection with new transactions.

Preserving originals does not mean retaining credentials and personal information indefinitely. Minimize collection and specify access permissions and retention periods. Prefer read-only permissions for reconciliation and separate permissions for refunds, payout requests, and finalizing accounting entries. A reconciliation program finds differences; discovering a difference should not automatically move money.

A small team can start with a spreadsheet

With few data sources, stable keys, and an owner able to resolve exceptions, organize original records, mapping tables, and difference categories before purchasing a new system. First explain the calculation for one merchant, one currency, and one payout batch. Automating link rules before you can explain the result also repeats incorrect matches faster.

Consider automating collection and history when corrected files recur across merchants and channels, past results are difficult to reproduce, or ownerless exceptions accumulate. Do not judge success only by a higher automatic match rate. Also track unclassified differences, overdue payouts, records without keys, duplicate assignments, and exceptions past their handling deadline.

The existing Payment reconciliation rules and operating runbook template provides a structure for shared keys, mismatch handling, and a runbook. Use this article's example to understand the connections, then record actual operating rules in that resource.

Ultimately, answer four questions: Which transaction is this, which settlement included it, did the money actually arrive, and who will investigate the remaining difference? Only then does a zero difference have meaning. Settlement amounts are not accounting revenue or profit, and reconciliation records do not replace the accounting ledger.

When data sources, linkage keys, and exception handling need to be designed together, review the scope of IXC's reconciliation automation service.