Error
A valid request URL is required to generate request examples{
"id": "rtv-1f2e3d4c-5b6a-7089-90ab-cdef01234567",
"supplierId": "nike-fr",
"status": "cancelled",
"reason": "defective batch",
"lines": [
{
"skuId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"quantity": 3,
"unitValueCents": 4500
}
],
"creditCents": null,
"createdAt": "2026-07-28T10:00:00.000Z",
"shippedAt": null,
"creditedAt": null
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Procurement
Cancel a return-to-vendor
Cancels a draft or shipped RTV (annule le retour fournisseur), dropping it to the terminal cancelled state (no body). No supplier credit (avoir) is booked and no stock movement is emitted — cancelling a shipped RTV does NOT re-import the goods onto on-hand. A credited RTV can no longer be cancelled. 404s for an unknown RTV; 422s when it is already credited or cancelled.
POST
/
v1
/
return-to-vendors
/
{rtvId}
/
cancel
Error
A valid request URL is required to generate request examples{
"id": "rtv-1f2e3d4c-5b6a-7089-90ab-cdef01234567",
"supplierId": "nike-fr",
"status": "cancelled",
"reason": "defective batch",
"lines": [
{
"skuId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"quantity": 3,
"unitValueCents": 4500
}
],
"creditCents": null,
"createdAt": "2026-07-28T10:00:00.000Z",
"shippedAt": null,
"creditedAt": null
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Path Parameters
The return-to-vendor (retour fournisseur) id.
Minimum string length:
1Response
The cancelled RTV (status cancelled).
The cancelled RTV (status cancelled).
Minimum string length:
1Minimum string length:
1Available options:
draft, shipped, credited, cancelled Minimum string length:
1Minimum array length:
1Show child attributes
Show child attributes
Required range:
0 <= x <= 9007199254740991Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
