Mark as Opening-Balance Purchase Order
POST/api/purchase-orders/:purchase_order/opening-balance
Mark a purchase order as an opening-balance ("transition") order. Use this for a purchase order whose stock was received before your inventory start date, so it was loaded as an opening balance rather than as tracked receipts. No request body.
What it does (synchronous):
- closes the purchase order as fully received with no receiving loss, regardless of how many units the tracked ledger shows
- stops its receipt status from later recomputing back to partially/unreceived off the (empty) ledger
- its pre-inventory-start invoices are treated as opening balances and are not posted to your accounting provider (posting them would double-count the balances loaded at go-live)
Requires the purchase-orders:write token scope and receiving permission on purchase orders.
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.