Reconciliation Guide

Formulas, daily and monthly workflows, and data-quality checks for closing the books against FlexFactor data.

How to reconcile FlexFactor report data against your own order, ledger, and bank systems. This page consolidates the calculation formulas and gives the daily, monthly, and exception-handling workflows plus the data-quality checks that catch discrepancies early. Field-level detail for each report is in the Field Schema Reference; to pick the right report for a task, use the Report Catalog.

Report delivery and timing

  • Delivery. Reports are delivered by scheduled SFTP drop and scheduled email, and can be downloaded from the FlexFactor dashboard. Daily reports are produced automatically; reports for an ad-hoc date range can be generated on demand.
  • Reports are immutable snapshots. Once generated, a report never changes. Late-arriving events (disputes, corrections) appear in the reports of the period in which they occur — prior-period reports are never restated. Re-pulling the same period always returns the same numbers.
  • Settlement schedule. The lag between a transaction (EventTimestamp) and its payout (SettlementDate) is set by your merchant agreement. Build your expected-deposit calendar from your contracted schedule.
  • Refunds and chargebacks post on their own event date. An exception lands in the settlement batch whose window contains the refund or chargeback event — which can be a later period than the original sale. Expect cross-period exceptions at close.
  • All period windows are UTC. Daily reports cover a UTC calendar day and monthly reports a UTC calendar month. If your ledger runs on a local timezone, account for the boundary offset.

Sign conventions

Three conventions apply, by report family. Confirm which one a column follows before summing it:

Report familyConventionHow to aggregate
Flat-report aggregate columns (activity-summary, settlement-summary, monthly reports, fees)Positive magnitudes — ReturnsAmount = 500.00 means 500.00 of returnsSubtract reduction columns per the formulas below
Transaction detail rows (activity-detail Amount; settlement-detail ConsumerAmount, DepositAmount)Signed per row — return rows carry negative amountsSum the column; sales net against refunds automatically
disbursement-fee RS sectionSigned — Refunds, Disputes, and Net Fees are negativeSum straight through: NetDisbursedAmount = Sales + Refunds + Disputes + Other + NetFees

Reconciliation formulas

Each derived amount below is what the corresponding report expects to balance to. Amounts are two-place decimals; negative values are reductions.

Activity Summary

NetAmount        = TotalProcessedAmount - ProcessingFees
Expected Revenue = NetAmount - ReturnsAmount - ChargebacksAmount

Settlement Summary

SettlementAmount = TotalProcessedAmount
                   - ProcessingFees
                   - ReturnsAmount
                   - ChargebacksAmount
                   - ReserveAmount
                   + ReserveReleaseAmount
                   - ReserveUtilizationAmount
                   + Adjustments

Settlement Detail

DepositAmount = ConsumerAmount - ConsumerFee - FlexFactorFee

For returns, ConsumerAmount is negative, so DepositAmount is negative.

Monthly Settlement Summary

NetSettlement = TotalSettledAmount - TotalFees

Disbursement Fee (RS section)

NetDisbursedAmount = Sales + Refunds + Disputes + Other + NetFees

Refunds, Disputes, and NetFees are negative values.

How the reports fit together

The three levels of report reconcile against each other, so a discrepancy at one level can be traced up or down:

  • Transaction level — activity-detail and settlement-detail hold one row per transaction. Sum of settlement-detail DepositAmount within a batch equals the batch SettlementAmount before batch-level reserve movements and Adjustments (those apply at the batch level and have no per-transaction rows — see the worked example below).
  • Batch level — settlement-summary holds one row per settlement batch. Each row matches one bank deposit.
  • Period level — activity-summary and monthly-settlement-summary aggregate a period. The sum of a month's daily settlement-summary SettlementAmount equals the monthly NetSettlement.

Reserve movements (ReserveAmount, ReserveReleaseAmount, ReserveUtilizationAmount) sit only at the settlement level and explain most gaps between gross processed volume and the actual bank deposit.

Daily reconciliation

  1. Download the activity-detail and settlement-detail reports.
  2. Match transactions by ExternalId to your order system.
  3. Verify settlement amounts match bank deposits (settlement-summary SettlementAmount to deposit).
  4. Track exceptions (refunds, chargebacks) separately via activity-exceptions.
  5. Maintain a running reserve balance from the settlement reserve fields.

Monthly reconciliation

  1. Run monthly-settlement-summary for the period totals.
  2. Verify against the sum of daily settlements.
  3. Verify total fees deducted from settlements against the fees report summed by FeeType. Fees are net-settled — deducted from payouts, never invoiced separately — so the fees report is the fee statement of record.
  4. Review activity-summary for performance metrics.
  5. Close any outstanding exceptions.
  6. Update reserve accounting from the month's reserve movements.

Exception handling

  1. Monitor the activity-exceptions and settlement-exceptions reports.
  2. Investigate failed settlements immediately (settlement-exceptions ExceptionReason, PayoutStatus).
  3. Match disputes to original orders via the dispute-detail Record ID (transaction) / Order ID.
  4. Classify disputes by the dispute-detail Kind field (dispute stage — e.g. RDR, CHARGEBACK, PRE-DISPUTE, REVERSED), and monitor Reply Before Date for time-sensitive responses. The report does not carry win/loss status — the Outcome, Status, and Amount Won columns are always empty — so track resolution in your own dispute system.
  5. Pre-disputes debit immediately. A PRE-DISPUTE is not only a warning — the disputed amount and the dispute fee are debited when the pre-dispute is received. In the disbursement-fee report it appears as a Dispute / Chargeback row plus a Fees / Dispute Fee row on that date. Book the dispute liability at the pre-dispute stage rather than waiting for a chargeback.
  6. Won disputes: when a chargeback is reversed in your favor, the returned funds post as a credit in the settlement batch covering the reversal date, and a REVERSED row appears in dispute-detail. Book the recovery in the period of the reversal, not the original chargeback.
  7. RDR events appear in two reports: an RDR auto-refund produces a refund row in activity-exceptions (ExceptionType = refunded) and a FlexReturnFee row in the fees report, in addition to its RDR row in dispute-detail. Count the financial impact once — from the activity/fees side — and use dispute-detail for classification only.
  8. Adjust revenue recognition for chargebacks; reserve liability for open disputes and record the loss on those you do not win.

Reserve accounting

The reports carry reserve movements, not a balance — maintain a running reserve balance in your ledger from the three settlement fields:

  • ReserveAmount — held from this batch (increases the balance).
  • ReserveReleaseAmount — released back to you this batch (decreases the balance, increases the payout).
  • ReserveUtilizationAmount — applied to cover losses other than this batch's own chargebacks (those are already deducted in ChargebacksAmount). Both fields appearing in the same batch is normal, not double-counting.

To verify your running balance, request a reserve statement from FlexFactor support. Your reserve terms — percentage held, rolling period, release schedule — are shown in the merchant portal.

In the disbursement-fee report, the RD Adjustments subtypes (Reserve Hold, Reserve Release, Reserve Cancellation, Reserve Utilization, Reserve Deduction) are finer-grained labels of the same movements aggregated in the three settlement-summary fields.

Worked example

One settlement batch for a UTC day (2026-07-21), settling on 2026-07-22 per this merchant's schedule. Three events: two sales and one refund of an earlier order.

settlement-detail (per transaction, signed rows):

ExternalIdTransactionTypeConsumerAmountFlexFactorFeeDepositAmount
ORD-1001Order100.002.5097.50
ORD-1002Order200.005.00195.00
ORD-0994Return-25.001.00-26.00

Sum of DepositAmount = 266.50.

fees report (positive magnitudes): FlexFee 2.50 + FlexFee 5.00 + FlexReturnFee 1.00 = 8.50 — ties to the batch ProcessingFees.

settlement-summary (one row for the batch, positive-magnitude columns):

TotalProcessedAmount   300.00   (completed sales only; the refund is not netted here)
ProcessingFees           8.50
ReturnsAmount           25.00
ChargebacksAmount        0.00
ReserveAmount           30.00   (10% reserve hold per this merchant's terms)
ReserveReleaseAmount     0.00
ReserveUtilizationAmount 0.00
Adjustments              0.00

SettlementAmount = 300.00 - 8.50 - 25.00 - 0.00 - 30.00 + 0.00 - 0.00 + 0.00
                 = 236.50

The bank deposit is 236.50. The tie-out between levels: sum of detail DepositAmount (266.50) minus the batch-level ReserveAmount (30.00) equals SettlementAmount (236.50) — reserve movements and Adjustments apply at the batch level and never appear in per-transaction rows.

Data-quality checks

Run these before trusting a reconciliation result:

  1. Verify all OrderId values are unique within a report.
  2. Check for null or empty required fields.
  3. Validate that date ranges match the request parameters.
  4. Confirm currency consistency within a report.
  5. Validate decimal precision (two places in settlement and disbursement reports; activity-detail may omit trailing zeros — normalize when loading).
  6. Cross-check totals between the summary and detail reports.

Common discrepancies

SymptomLikely causeWhere to look
Deposit is smaller than processed volumeReserve held this batchsettlement-summary ReserveAmount
Expected deposit never arrivedSettlement batch failedsettlement-exceptions ExceptionReason, PayoutStatus
Net revenue lower than salesFees plus returns and chargebacksfees report by FeeType; activity-exceptions
Monthly total does not match sum of dailyMonth-to-date run, or a failed batch excludedmonthly-settlement-detail vs. daily settlement-summary
Transaction in orders but not in reportsDeclined attempt (never reported) or voidedactivity-detail carries processed transactions only — declines never appear; voids show OrderState = voided

Did this page help you?