Redeem Notification

The LATAM Pass Redeem API processes redemptions and cancellations asynchronously. After submitting a request, partners receive the final transaction status via webhook notification.

There are two options for checking the final status:

  1. Redeem Notification (webhook) — recommended. The API automatically sends a POST to your configured endpoint when processing is complete.
  2. Get Redemption Status — polling via GET endpoint.
Important

We strongly recommend using webhook notification. If you decide to implement both, polling should only be used if a notification is not received after 24 hours.

Two types of webhook notifications exist:

  • Redeem notification: sent when a Create Redeem transaction reaches a final status (PROCESSED, ERROR, or CANCELLED).
  • Recredit notification: sent when a Cancel Redeem transaction reaches a final status (REFUNDED, CANCELLED, or ERROR).

To link the notification to the original request, store the correlationId returned in the initial 201 response.

If the partner's endpoint responds with 4xx or 5xx codes during notification delivery, the system activates automatic retries for up to 7 days.


Data required to configure integration

The webhook configuration for Redeem uses the same structure as Accrual. The key differentiator is the source field, which must be set to "REDEEM".

To configure your Redeem webhook, provide the following to LATAM Pass Support:

DataRequiredDescription
Partner server URLYesHTTPS endpoint where LATAM Pass will send webhook notifications. Must be a publicly accessible HTTPS URL (no private IPs, no localhost). Example: https://api.mycompany.com/redeem-webhook
sourceYesMust be "REDEEM" — distinguishes from Accrual webhook configuration
Authentication methodAt least oneBasic auth (username + password), OAuth token, or additional headers
Username (Basic Auth)ConditionalUsername for basic authentication on your endpoint
Password (Basic Auth)ConditionalPassword for basic authentication on your endpoint
Additional headersOptionalAny HTTP headers required by your endpoint (key-value pairs)
OAuth token configConditionalIf using OAuth: token endpoint URL, request headers/body to obtain the token, field names for sending and retrieving the token

Any modification or deletion of configurations must be managed via a request to LATAM Pass Support, by environment (sandbox or production).


Notification content

Both notification types (Redeem and Recredit) share the same payload structure. Fields with null values are omitted.

FieldTypeDescription
correlationIdUUIDCorrelation ID linking this notification to the original request
statusStringFinal status of the transaction (see Status Values below)
descriptionStringDescription of the product or service from the original redeem request
ffnStringLATAM Pass member number (partially masked)
milesIntegerFor Redeem notifications: miles debited. For Recredit notifications: miles re-credited
partnerTransactionIdStringTransaction ID from the partner side
redemptionIdStringID assigned by the points system. Present when status is PROCESSED or REFUNDED
errorExceptionString (JSON)Error detail when status is ERROR or CANCELLED. Serialized as a JSON string

Status values — Redeem notification (Create Redeem):

StatusMeaning
PROCESSEDMiles successfully debited. Eligible for cancellation
ERRORProcessing failed. See errorException for details. Contact LATAM Pass Support if recoverable
CANCELLEDRequest cancelled. Miles were not debited

Status values — Recredit notification (Cancel Redeem):

StatusMeaning
REFUNDEDMiles successfully re-credited to the member's account
CANCELLEDRecredit could not be completed (non-recoverable)
ERRORRecredit failed. See errorException for details

Notification examples

Redeem notification — PROCESSED (miles debited successfully)

curl --request POST \
  --url https://partner-server-url/ \
  --header 'Content-Type: application/json' \
  --data '{
    "correlationId": "ec909ee0-d890-44f4-b3f9-01797d591bc2",
    "status": "PROCESSED",
    "description": "Demo API redeem",
    "ffn": "10*******11",
    "miles": 15,
    "partnerTransactionId": "TXN-TEST-1769171650",
    "redemptionId": "4541318701061"
  }'

Redeem notification — CANCELLED (request rejected)

curl --request POST \
  --url https://partner-server-url/ \
  --header 'Content-Type: application/json' \
  --data '{
    "correlationId": "ec909ee0-d890-44f4-b3f9-01797d591bc2",
    "status": "CANCELLED",
    "description": "Demo API redeem",
    "ffn": "10*******11",
    "miles": 15,
    "partnerTransactionId": "TXN-TEST-1769171650",
    "errorException": "{\"status\":\"ERROR\",\"message\":\"The account balance is insufficient\",\"code\":10,\"instructions\":\"Check the available balance or add funds to continue.\"}"
  }'

Recredit notification — REFUNDED (miles re-credited successfully)

curl --request POST \
  --url https://partner-server-url/ \
  --header 'Content-Type: application/json' \
  --data '{
    "correlationId": "ec909ee0-d890-44f4-b3f9-01797d591bc2",
    "status": "REFUNDED",
    "description": "Demo API redeem",
    "ffn": "10*******11",
    "miles": 15,
    "partnerTransactionId": "TXN-TEST-1769171650",
    "redemptionId": "4541318701061"
  }'