Execute Reconciliation
POST/api/stock-takes/:stockTake/reconcile
Execute reconciliation for an open stock take, handling fulfillment conflicts and applying adjustments.
inventory:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
fulfillment_ids_to_cancel: optional array of fulfillment IDs to cancel before reconciling.
proceed_despite_failures: if true, continue even if some items fail.
item_actions: per-item action overrides.
Returns 400 if protected inventory conflicts exist or insufficient inventory.
Requires permission: inventory.count
downgraded_allocations: open Allocated reservations that were downgraded to Planned because the counted reduction exceeded the pool's unallocated stock (reconciliation treats the 3PL count as authoritative). Each entry is also written to the reconciliation logs with action allocation_downgraded.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 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.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
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.