Skip to content
Linra Omni Developer Docs

Withdraw return request

Withdraw your own return request.

Returns

PATCH/api/v1/scent/return-requests/{id}/withdraw

Withdraws the caller’s own return request while it is still Requested — before any staff action (authorize/decline) has occurred. Moves NO money (nothing before the internal InspectionAccepted transition, far downstream of Requested, ever touches money) and restores the underlying line to full returnable eligibility for a fresh request. Locks permanently the moment any staff action occurs — rejects a request that already left Requested with BUSINESS_RETURN_REQUEST_NOT_PENDING. Fires both order.return-request.updated (newStatus: "Withdrawn") and the dedicated order.return-request.withdrawn event — see the Webhooks guide.

Path parameters

idstring (uuid)Required

The return request’s own GUID (from the create response or the list above) — NOT the order id.

Response

idstring (uuid)
orderIdstring (uuid)

The order this return belongs to — the same Scent order GUID you already hold from order creation/tracking.

fulfillmentGroupIdstring (uuid)
returnRequestNumberstring

Human-facing RMA reference (e.g. “RMA-202608-000142”); null for a pre-RMA-lifecycle row.

statusstring (enum)
declineReasonstring
timeline.requestedAtstring (date-time)
timeline.decidedAtstring (date-time)
timeline.waybillIssuedAtstring (date-time)
timeline.collectionScheduledAtstring (date-time)
timeline.inTransitAtstring (date-time)
timeline.refundReleasedAtstring (date-time)
logistics.waybillNumberstring
logistics.carrierstring
logistics.carrierNameOtherstring
logistics.returnDestinationTypestring (enum)

The destination TYPE only — stamped once at first dispatch, immutable thereafter.

inspection.receivedAtstring (date-time)
inspection.inspectionStartedAtstring (date-time)
inspection.decidedAtstring (date-time)
inspection.outcomestring (enum)

Null until decided. The defect-vs-sound distinction (internal AcceptedDefect/AcceptedSound) collapses to Accepted here — that detail stays internal.

inspection.shippingFeeRefundAppliesboolean

Whether the order’s original shipping fee is refunded with this return — the amount itself is in refund.

refund.currencystring
refund.goodsobject
refund.commissionClawbacknumber (decimal)

Commission clawed back from your own earnings (a debit shown alongside the credit); null when the returned quantity carried no commission.

refund.shippingFeeRefundnumber (decimal)

The order’s shipping fee refunded on an accepted-defect return (VAT-inclusive); null otherwise — a separate wallet leg, not folded into total.

refund.totalnumber (decimal)

Your own actual goods-refund amount, VAT-inclusive gross (== goods.total).

linesarray of object

Other responses

401No bearer token (UNAUTHORIZED_MISSING_TOKEN), an invalid token (UNAUTHORIZED_INVALID_TOKEN) or an expired one (UNAUTHORIZED_TOKEN_EXPIRED — mint a new token). UPSTREAM_AUTH_FAILED is different: a dependent service refused the Gateway itself. That is a server-side fault — retry later and do NOT re-mint your token. See the Errors guide.
403The route is not available to your credential (FORBIDDEN).
404Unknown request, or a cross-tenant id (no existence leak).
422The request already left Requested — some staff action already occurred.
429Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).
502A dependent service returned an invalid response (BAD_GATEWAY). Retry with backoff.
503The service is temporarily unavailable (SERVICE_UNAVAILABLE). Retry with backoff.
504A dependent service did not respond in time (GATEWAY_TIMEOUT). Retry with backoff.
curl --request PATCH \
--url https://api-omni.linra.net/api/v1/scent/return-requests/5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b/withdraw \
--header 'Authorization: Bearer $TOKEN'

Response

{
"state": "SUCCESS",
"payload": {
"id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"orderId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"fulfillmentGroupId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"returnRequestNumber": "string",
"status": "Requested",
"declineReason": "string",
"timeline": {
"requestedAt": "2026-08-22T09:14:03Z",
"decidedAt": "2026-08-22T09:14:03Z",
"waybillIssuedAt": "2026-08-22T09:14:03Z",
"collectionScheduledAt": "2026-08-22T09:14:03Z",
"inTransitAt": "2026-08-22T09:14:03Z",
"refundReleasedAt": "2026-08-22T09:14:03Z"
},
"logistics": {
"waybillNumber": "string",
"carrier": "string",
"carrierNameOther": "string",
"returnDestinationType": "SortingPoint"
},
"inspection": {
"receivedAt": "2026-08-22T09:14:03Z",
"inspectionStartedAt": "2026-08-22T09:14:03Z",
"decidedAt": "2026-08-22T09:14:03Z",
"outcome": "Accepted",
"shippingFeeRefundApplies": true
},
"refund": {
"currency": "SAR",
"goods": {
"net": 0,
"vat": 0,
"total": 0
},
"commissionClawback": 0,
"shippingFeeRefund": 0,
"total": 0
},
"lines": [
{
"id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"scentOrderLineId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"allocationId": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b",
"quantity": 0,
"reasonCode": "string"
}
]
},
"details": null
}