Cancel Redemption

The Cancel Redemption endpoint allows partners to reverse a previously processed redemption, re-crediting the miles to the member's account. This operation is also referred to as a recredit.

Processing is asynchronous: a 201 Created response indicates that the request was accepted, not that the recredit has been completed. The final result is delivered via webhook notification.

Both total and partial cancellations are supported. A partial cancellation re-credits only the specified miles; the remaining miles from the original redemption are unaffected.

Important
  • Only redemptions in PROCESSED status are eligible for cancellation.
  • A partial cancellation can only be performed once per correlation ID. Multiple partial cancellations for the same correlation ID are not supported.

Request

Endpoint

POST https://api.latampass.com/sandbox/v1/customer/eloyalty/partner/redeem/cancel

Request body

FieldTypeRequiredConstraintsDescription
correlationIdString (UUID)YesMust be a valid UUIDCorrelation ID of the redemption to cancel. Must reference a PROCESSED redemption.
descriptionStringYesMax 500 charactersDescription of the cancellation reason.
milesNumberYesMin: 0.001 / Max: total miles of the original redemptionMiles to re-credit. Decimal values are rounded to the nearest integer internally.

Example — total cancellation

curl https://api.latampass.com/sandbox/v1/customer/eloyalty/partner/redeem/cancel \
  --request POST \
  --header 'x-latam-test: LatamPass' \
  --header 'Access_token: <YOUR_UUID_ACCESS_TOKEN>' \
  --header 'client_id: <YOUR_CLIENT_ID>' \
  --header 'Content-Type: application/json' \
  --data '{
    "correlationId": "<YOUR_CORRELATION_ID>",
    "description": "Customer requested cancellation",
    "miles": 15
  }'

Example — partial cancellation

curl https://api.latampass.com/sandbox/v1/customer/eloyalty/partner/redeem/cancel \
  --request POST \
  --header 'x-latam-test: LatamPass' \
  --header 'Access_token: <YOUR_UUID_ACCESS_TOKEN>' \
  --header 'client_id: <YOUR_CLIENT_ID>' \
  --header 'Content-Type: application/json' \
  --data '{
    "correlationId": "<YOUR_CORRELATION_ID>",
    "description": "Partial refund for returned item",
    "miles": 5
  }'

Headers

One authentication flow is accepted for this endpoint.

Flow B — Portal API Client Credentials

HeaderValue
Content-Typeapplication/json
x-latam-testLatamPass (sandbox only)
Access_token<UUID_ACCESS_TOKEN>
client_id<YOUR_CLIENT_ID>

Business rules

  • Only redemptions in PROCESSED status are eligible for cancellation. Attempting to cancel a redemption in PROCESSING, ERROR, or CANCELLED status returns 422.
  • The correlationId must be a valid UUID obtained from a previous Create Redemption 201 response.
  • The miles field must be positive (minimum 0.001) and cannot exceed the total miles of the original redemption.
  • Decimal mile values are rounded to the nearest integer internally before processing.
  • Cancellation can be total (full original miles) or partial (any amount up to the original total).
  • A 201 response returns the same correlationId as the original redemption — no new correlation ID is generated.
  • If a cancellation is already in progress for the given correlationId, a 422 is returned to prevent duplicate processing.
  • The final recredit result is delivered exclusively via webhook notification:
StatusMeaning
REFUNDEDMiles were successfully re-credited to the member's account.
CANCELLEDRecredit could not be completed (non-recoverable).
ERRORRecredit failed — see errorException in the webhook payload for details.

Response

201 Created — Request accepted

{
  "trace": {
    "correlationId": "<YOUR_CORRELATION_ID>",
    "returnedDateTime": "2026-03-04 10:30:00.000+0000"
  },
  "error": null
}

The correlationId in the response matches the original redemption's correlation ID. The final recredit status is not available synchronously — it is delivered via webhook.


Common errors

400 — Validation error (invalid payload)

{
  "message": "Request payload has problems with validation",
  "code": 400,
  "instructions": null,
  "details": {
    "correlationId": "correlationId must be UUID valid"
  },
  "issueDateTime": "2026-03-04T15:54:25.044344Z"
}

400 — Redemption not found

{
  "message": "Redeem not found for correlation ID: ec909ee0-d890-44f4-b3f9-01797d591bc2",
  "code": 400,
  "instructions": null,
  "details": null,
  "issueDateTime": "2026-03-04T15:55:00.000000Z"
}

400 — Cancellation amount exceeds original total

{
  "message": "Cancellation amount cannot be greater than the total amount",
  "code": 400,
  "instructions": [
    { "field": "miles", "message": "Invalid amount" }
  ],
  "details": null,
  "issueDateTime": "2026-03-04T15:56:00.000000Z"
}

422 — Redemption not eligible for cancellation

Returned when the redemption exists but its current status does not allow cancellation (e.g., PROCESSING, ERROR, or CANCELLED).

{
  "message": "Redeem is not eligible for cancellation. Current status: PROCESSING",
  "code": 31,
  "instructions": [
    { "field": "correlationId", "message": "Invalid status" }
  ],
  "details": null,
  "issueDateTime": "2026-03-04T15:57:00.000000Z"
}

422 — Cancellation already in progress

Returned when a cancellation request for the same correlationId is already being processed. Do not retry until the current operation concludes.

{
  "message": "Cancellation already in progress for this correlationId.",
  "code": 31,
  "instructions": [
    { "field": "correlationId", "message": "Cancellation conflict" }
  ],
  "details": null,
  "issueDateTime": "2026-03-04T15:57:00.000000Z"
}

405 — Method Not Allowed

{
  "timestamp": "2026-03-04T15:57:12.663+00:00",
  "status": 405,
  "error": "Method Not Allowed",
  "path": "/v1/customer/eloyalty/partner/redeem/cancel"
}

500 — Internal Server Error

Retry the request with the exact same payload.

{
  "message": "Internal server error on processing cancel redeem.",
  "code": 33,
  "instructions": [
    { "field": "error", "message": "Please try again later or contact support if the issue persists" }
  ],
  "details": null,
  "issueDateTime": "2026-03-04T15:58:00.000000Z"
}
Important

If the error persists after retrying, contact LATAM Pass Support and provide the issueDateTime and the correlationId used in the request.