Get Inventory Reconciliation Period
GET/api/ledger/reconciliation/inventory/period
The "reconcile ongoing" discovery for one earmarked inventory control account and month. The header is authoritative and always reconciles: during the month the provider balance moved provider_moved, SKU inventory moved sku_moved, and the divergence went divergence_open -> divergence_close (a gap of provider_moved - sku_moved). The rows break the month's inventory postings down by transaction-type concept, framed by sync status: how much SKU inventory value moved for each concept (context) and where its postings sit in the sync pipeline (gl_synced reached the provider, gl_awaiting is a batch still closing or a manually-syncable opt-out, gl_excluded is structurally held back). Each row also carries syncable_count — how many of its entries can be pushed to the provider right now (the same eligibility the bulk sync_now action enforces), which is always < the awaiting count because an entry waiting on its batch to close cannot be pushed on its own. sync_status is the row's headline disposition and normally follows the amounts, but when they all net to zero while entry_count > 0 (e.g. a warehouse transfer whose out and in legs cancel on this one account) it follows the entries' own dispositions instead — so a row that still owes the provider a sync never reads as none ("no postings"), and none is reserved for a concept with no SKU postings at all. Postings are keyed by their batch period (a monthly batch's consolidated entry is dated at a period boundary), the opening reconciliation adjustment is excluded, and the totals reconcile the ledger side. Authenticate with a Personal Access Token. Reads cached data only (no live provider call).
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Every SKU figure in the header is stated on the accounting calendar: where a lock date pushed a posting out of the month its stock moved in, the value is reported in the month the GL recognises it, so the two sides never disagree over timing that the lock itself created. displaced_open and displaced_close are how much value the lock is holding out of the GL at each end of the month, displaced_moved is the difference between them, and sku_moved + displaced_moved is the raw inventory movement for the month before that restatement. All three are 0 on books with no displacement.
Each row also carries type_breakdown — the ledger types it collapses, when it collapses more than one (Amazon FBA groups shipments, receipts, returns, adjustments and transfers). Those rows carry what is measurable per type: what was posted, what reached the accounting provider, and Check B between them. Rows also carry sku_moved and check_a where inventory movement is attributable per type — Amazon FBA is, because each stock layer records the event that created it and each consumption the event that consumed it. Both are null where it is not, which is not the same as zero: null means the inventory side cannot be asked at this grain, while zero means the two sides agree.
Request
Responses
- 200
- 401
- 403
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.