Create a new RMA (status=authorized)
returns:writeCreate a return merchandise authorization (RMA). Atomic-create: a single POST can create
the RMA, add inline items[], auto-calculate restocking fees, and issue a refund
(auto_refund: true) in one transactional call.
Inline items: pass items[] with order_item_id + quantity to add return line
items atomically with the RMA. The quantity field is accepted as an alias for
quantity_authorized. Items are inserted before the response is returned; the response
includes items[] hydrated inline.
Restocking fee: accepts a flat number (restocking_fee: 25.00) or an object:
{ "type": "percentage", "value": 10 }— 10% ofrefund_amount{ "type": "flat", "value": 30.00 }— flat $30.00
Auto-refund: include auto_refund: true + refund_payment_id to issue the refund
immediately after RMA creation. Requires returns:write + payments:write scopes.
The response includes a refund object if auto_refund succeeded.
Return window: if entities.settings.return_window_days is configured, returns outside
the window are rejected with 422 outside_return_window. Pass override_window: true to bypass.
Guide: https://arcuserp.mintlify.app/guides/fulfillment-and-returns
Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Client-generated unique key for idempotent POST/PATCH/DELETE operations. Alias for the Idempotency parameter. Max 255 chars. On retry with the same key, the original response is returned without re-executing the operation. Keys expire after 24 hours.
255Body
The originating sales order. Required unless this is a standalone RMA.
Customer account. Derived from the original order when original_order_id is provided.
Free-text reason for the return.
Total dollar amount to refund before restocking fee deduction.
Flat number (e.g. 25.00) or object form: { type: 'percentage', value: 10 } or { type: 'flat', value: 30 }.
Inline return line items. Added atomically with the RMA. quantity is accepted as an alias for quantity_authorized.
If true, issue the refund immediately after RMA creation. Requires refund_payment_id and payments:write scope. The response includes a 'refund' object.
Required with auto_refund=true. The original payment to refund against.
Refund routing. 'original' refunds to the original payment method.
original, store_credit, check, cash Bypass the entity's return_window_days check. Requires returns:write.
True when return was initiated via the customer portal.
Response
Created RMA (hydrated with items[] and refund if inline operations ran)
RMA (return merchandise authorization). Phase A -- refund_amount is readOnly via PATCH; written only by POST /v1/returns/{id}/refund.
return Use action endpoints to transition status; PATCH cannot write status.
authorized, expected, received, inspecting, restocked, written_off, closed, sent_to_vendor, cancelled SSOT: written only by POST /v1/returns/{id}/refund (refundReturn canonical). PATCH cannot write this field.
csr, customer_portal, marketplace 
