Submit PO to Supplier
PUT/api/purchase-orders/:purchase_order/submit
Submit a purchase order to the supplier and record it as submitted.
purchase-orders:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Whether an email is actually sent depends on the order's submission format. Every email format sends the purchase order to the supplier's purchase order email. The manual format deliberately sends nothing — the order is recorded as submitted and finalized, and contacting the supplier is left to you. The response reports which happened via emailed_to_supplier and last_emailed_to_supplier_at; last_submitted_at records the submission either way and must not be read as proof an email went out.
Authentication: Requires Bearer token.
Requires permission: purchase_orders.approve
Body fields
supplier_message(string, optional, max 5000) - vendor-facing note saved to the order before it is sent. Omit to keep the saved message; send an empty string to clear it.reason(string, optional, max 255) - recorded against the submission snapshot.notify_supplier(boolean, optional, defaulttrue) - sendfalseto record the order as submitted without emailing the supplier. This is the only way to submit an order whose supplier has no purchase order email on file; withtrue(the default) such an order is rejected with 422.submission_format(string, optional) - send this one order in a different format than the supplier's default, and persist that format on the order. Use it to email an order whose supplier is set tomanualwithout changing the supplier record. Accepted values:email_pdf_attachment,email_xlsx_attachment,email_pdf_xlsx_attachments,email_csv_attachment,email_pdf_csv_attachments.manualis rejected with 422 — this field can only turn a send on, never off; usenotify_supplier: falsefor that. Ignored whennotify_supplierisfalse.
Approval policy:
While the purchase-order approval policy is enabled, a draft order is approved and sent in this call only when you can approve it directly (403 approval_limit_exceeded when its amount is over your limit; 422 approval_pending while a request is waiting on someone else). An open order whose changes await re-approval cannot be re-sent (422 approval_pending, or approval_required after the change was rejected). Under a policy the purchase_orders.approve permission alone no longer lets anyone exceed their limit.
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
Response Headers
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Unprocessable Content
Response Headers
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.