List FBA Reimbursement Reconciliation Exceptions
GET/api/amazon/unified/fba-reimbursement-reconciliation
Lists the exceptions from reconciling three sources against each other: settlement cash, the FBA reimbursements report and the FBA inventory ledger. Only material mismatches old enough that Amazon has had a fair chance to close them are raised; a loss within a week of its claim deadline is raised whatever its age. Exceptions are re-detected daily and resolve themselves when the missing payment, stock or settlement arrives. Returns the standard Laravel paginator.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Filters:
filter[integration_instance_ids]— comma-separated Amazon integration IDs.filter[type]— comma-separated: cash_without_loss, loss_never_paid, reversed_not_returned, paid_not_settled, settlement_without_report, double_compensation.filter[status]— comma-separated: open, explained, resolved.filter[date_from],filter[date_to]— subject date on or after / on or before (m/d/Y).filter[search]— searches id (exact match), fnsku, sku, reference and the product SKU (product.sku), partial match. Restrict it withsearch_columns(comma-separated: id, fnsku, sku, reference, product.sku) and force exact matching per column withsearch_strict_columns.
Sorting: sort=<field> ascending or sort=-<field> descending. Allowed: id, subject_date, value, quantity, claim_deadline, detected_at, type, status. Default: -value.
Advanced operator filters use the syntax filter[column.operator]=value; a bare filter[column]=value is treated as the is operator (except type and status, whose bare key is the comma-separated filter above).
- Text columns (type, status, fnsku, sku, reference, currency) support: contains, does_not_contain, is, is_not, is_one_of, is_not_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty.
- Numeric columns (id, quantity, value) support: is, is_not, is_one_of, is_not_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_empty.
- Date columns (subject_date, claim_deadline, detected_at) support: is, is_not, before, after, on_or_before, on_or_after, between, is_empty, is_not_empty, today, yesterday, tomorrow, past_week, past_month, past_year, next_week, next_month, next_year, days_ago, days_from_now, past_days, next_days. Date values use Y-m-d;
betweentakes two comma-separated values.
Complex AND/OR filter trees can be sent as filter_groups: a base64-encoded JSON tree of the form {"conjunction": "and", "children": [{"type": "condition", "condition": {"column": "value.greater_than", "operator": "greater_than", "value": "100"}}, {"type": "group", "group": {"conjunction": "or", "children": [...]}}]}. Each condition's column is the column.operator key and operator the operator, from the columns and operators above. Other flat filters still apply alongside the tree (AND). An unknown column/operator pair returns 400.
Exception fields:
type— cash_without_loss (a unit payment no loss explains after 45 days), loss_never_paid (a confirmed loss unpaid after the settle window, claim window still open), reversed_not_returned (Amazon took a payment back but the units have not reappeared; it carries only the clawbacks still outstanding and overdue — older than 30 days, or the account's settle window if longer — with found units paying off the oldest clawbacks first, soquantityandvalueare the overdue outstanding units andsubject_datethe oldest of those clawbacks), paid_not_settled (a report payment no settlement carried after 60 days), settlement_without_report (settlement reimbursement cash no report row explains), double_compensation (cash plus replacement units exceed the units lost).type_labelandtype_descriptionare readable versions.subject_typeandsubject_id— the record the exception is about: amazon_fba_loss_event, amazon_fba_reimbursement or amazon_report_settlement_data;amazon_fba_loss_event_id— the related loss event, when there is one.reference— the Amazon reimbursement ID, the loss event's reference, or the settlement ID and description.quantity,value(incurrency; null when unknown). Money in several currencies is never summed: when the exception spans more than one currency,mixed_currencyis true,valueandcurrencyare null, andvalueslists each currency's amount (currency,amount); otherwisemixed_currencyis false andvaluesis null.subject_date,age_days,claim_deadlineanddays_to_deadline(negative once passed; null when there is no deadline).status— open, explained (someone recorded why it is not a problem; detection leaves it alone) or resolved (the mismatch no longer holds).detected_at,resolved_at,explained_at,explained_by(user ID) andnote.
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.