Add items to an order from payments
POST/orders/:orderId/add-items
Adds order items from existing payments (selected by id) to an unfulfilled order that has not been sent to your fulfillment provider. The order qualifies while no submission has been attempted (lastSubmissionAttemptedAt is empty) and its tplSubmissionStatus is either pending with submitToTplAt still ahead, or one no provider receives the order from: null, skipped_no_route, skipped_no_country, skipped_no_shippable_items, skipped_route_conflict or skipped_integration_inactive. Any other order is refused with a 400, since your provider would never receive the added items: import the payments as an order of their own with POST /orders/import instead. All-or-nothing: if any payment is already imported, missing, not succeeded, reversed, charged back, failed to capture, has no line items belonging to a product enabled for Order Management, or does not match the order's customer/currency, no items are added and every failing payment is reported.
Request
Responses
- 200
- 202
- 400
- 401
- 403
- 404
- 413
- 429
- 500
- 503
- 504
The merchant is entitled but its OMS environment is not provisioned yet. Provisioning has been kicked off (exactly once) and is in progress; retry the request — it succeeds once the environment is ready. Returned only for identity-token (dashboard) requests bound to an active-entitled merchant, not for secret-key API calls; any such endpoint can return it while provisioning is underway.
The request was rejected. type is invalid_request_error; when the failure is a validation failure code is validation_failed and errors lists every problem found, with field-attributable entries prefixed by the field’s path.
No credentials were supplied, or the identity token / secret key is not valid for the target merchant. type is authentication_error.
The credentials are valid but lack the permission this operation requires. type is permission_error.
No resource exists with the requested identifier. type is not_found_error.
The request exceeded a limit on what this API accepts and was refused before the operation ran, so nothing was created or changed. The body must be under 4 MB. type is invalid_request_error, and message names the limit that was met. Reduce the request below the limit and send it again.
Too many requests. The rate limit is applied per client across all operations. type is rate_limit_error.
The request could not be completed because of an unexpected error. type is api_error.
A dependency needed to serve the request is temporarily unavailable — for every operation the auth service that verifies credentials and resolves entitlement, and on the provisioning routes also the ODUS API the OMS reconciles against. type is api_error. Unlike a plain 500 the condition is transient rather than a fault in the request, so it is worth retrying with backoff.
The request exceeded the processing time limit and was abandoned. type is api_error and code is timeout — unlike a plain 500 the request may still have taken effect.