FBA fees · intermediate · 4 min read
Settlement reconciliation, end to end
Every Amazon settlement line ties to an order, return, fee, or adjustment. This guide shows how to set up daily reconciliation that finds discrepancies.
By Kenderson Tripaldi · April 14, 2026
A clean settlement reconciliation is the difference between an FBA business that knows its margin and one that's flying blind. Every dollar Amazon pays you, every dollar Amazon takes back, every dollar in fees, every dollar in adjustments — they all flow through settlement reports, and the report is the only ground truth. This guide walks through how to set up a reconciliation process that catches the discrepancies most operators miss.
What a settlement actually contains
Amazon issues settlements on a fortnightly cycle (most marketplaces) or biweekly cycle, depending on your account history and risk profile. Every settlement is a flat list of line items, each one tagged with a type. The types you actually need to think about:
- Order: principal payment for an order that shipped during the cycle.
- Refund: principal returned for a refunded order.
- Fee: a positive amount Amazon owes you, or (more commonly) a negative amount Amazon is taking out — referral fees, FBA fulfillment fees, storage fees, removal fees, return-processing fees.
- Adjustment: a one-off correction. Reimbursements arrive here, as do manual corrections from Seller Support.
- Other: a catch-all that's worth investigating when it appears.
Every line should reconcile to something — an order, a return, a fee schedule entry, or a tracked reimbursement case. Lines that don't reconcile are where the money leaks happen.
The MarginLock data model
When MarginLock pulls a settlement report, it produces three kinds of rows:
Settlement— one per settlement period, with totals.SettlementLine— one per line in the report, typed and amount-bearing.FeeAdjustmentandReimbursement— derived rows, produced by the fee engine and reimbursement detectors after the lines land.
The reconciliation flow is: SP-API report → SettlementLine rows → detector
pass → FeeAdjustment and Reimbursement rows → human review queue.
Setting up daily reconciliation
Most reconciliation guides tell you to do it monthly. Don't. Monthly reconciliation means the average leak goes undetected for two weeks, and a fee dispute window can elapse before you've even noticed the discrepancy. Run reconciliation daily.
Pull settlement reports as they close
The Amazon report-request API takes about 10–30 minutes from settlement close to report availability. MarginLock polls automatically; if you're rolling your own, set up a 30-minute poll on the
_GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2_report type.Tie every line to a parent record
For order and refund lines, match on
order-id. For fee lines, match onorder-idandfee-type. For adjustment lines, match onadjustment-id. Lines that don't tie are where you investigate.Run the detector pass
For each fee line, check it against the fee schedule. For each refund line, check it against the original order. Discrepancies produce
FeeAdjustmentrows.Queue mismatches for human review
Untied lines, unexpectedly large fees, and reimbursements that don't tie to a tracked case all go to a daily review queue. Most days the queue is short; the days it's not are exactly the days you wanted to know about.
The five most common discrepancies
In rough order of frequency:
- Misclassified referral fee. A SKU's category at sale time differs from the category Amazon billed against. This is silently common after category changes.
- Dim-weight overcharge. Amazon's measurement of your box came back higher than your manifest, and the FBA fulfillment fee billed on the inflated dim-weight tier.
- Duplicate return. A return arrives, gets processed, then arrives again because of an Amazon system bug or buyer-side reshipment. You get charged the return-processing fee twice.
- Reimbursement that doesn't tie. A reimbursement line shows up but doesn't match any case you opened. (Most of the time this is a good surprise. Always verify.)
- Storage-fee tier mistake. A SKU was charged at long-term storage rates that shouldn't apply because the inventory was newer than the threshold.
What to do when something doesn't tie
The dispute window for most fee categories is 90 days. If a discrepancy is small (under $50, say) and one-off, it's often not worth the operational cost of disputing — you can let it go. If it's large, or if it's a pattern across multiple SKUs or settlements, file a case immediately.
The MarginLock review queue surfaces both the dollar amount of the discrepancy and a recommended action — file a case, batch with similar discrepancies, or write off. The recommendation is advisory; the operator makes the call.
Beyond daily
Once daily reconciliation is in place, the next step is alerts on outliers. "Tell me when a single settlement has more than $500 of unreconciled fees" catches the cases worth dropping everything for. Set the threshold at ~1% of your weekly Amazon revenue and tune from there.