Create Redemption

The LATAM Pass Redeem API allows partners to debit miles from a LATAM Pass member's account for non-air product or service redemptions, according to the commercial agreement between the parties.

Processing is asynchronous: a 201 Created response indicates only that the request was accepted — it does not mean the miles have been debited. The final result (PROCESSED, ERROR, or CANCELLED) is delivered exclusively via webhook notification.

Important

Do not design the member experience to wait for the final result during the API call. Inform the member that the request was submitted and offer a way to check the final status once it is available.


Request

Endpoint

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

Request body

FieldTypeRequiredConstraintsDescription
correlationIdUUIDNoAuto-generated if not providedTracking ID for the transaction
descriptionStringYesMax 500 charactersDescription of the product or service being redeemed
milesIntegerYesMin: 1 — Max: 3,000,000Amount of miles to debit
redemptionCodeStringYesMax 50 chars — alphanumeric (a-z, A-Z, 0-9, _, -, .)Unique redemption code for the product. Provided by LATAM Pass Support
partnerIdStringYesMax 20 chars — alphanumeric (a-z, A-Z, 0-9, _, -, .)Partner identifier. Provided by LATAM Pass Support
partnerTransactionIdStringYesMax 100 chars — alphanumeric (a-z, A-Z, 0-9, _, -, .)Transaction ID on the partner side

This field is not enforced as unique by the API. Multiple requests with the same partnerTransactionId will each create a separate transaction. When retrying after a 500 error, send the exact same payload — including the same partnerTransactionId.

Example request

curl https://api.latampass.com/sandbox/v1/customer/eloyalty/partner/redeem \
  --request POST \
  --header 'x-latam-test: LatamPass' \
  --header 'Authorization: Bearer <YOUR_JWT_ACCESS_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "description": "Demo API redeem",
    "miles": 15,
    "redemptionCode": "<YOUR_REDEMPTION_CODE>",
    "partnerId": "LPS",
    "partnerTransactionId": "<YOUR_PARTNER_TRANSACTION_ID>"
  }'

Headers

HeaderValueDescription
AuthorizationBearer <JWT_ACCESS_TOKEN>Auth0 PKCE member-bound JWT (Flow A)
x-latam-testLatamPassRequired in sandbox only — omit in production
Content-Typeapplication/json

Response

A 201 Created response means the request was accepted for processing. Always wait for the webhook notification to determine the final outcome.

201 Created — accepted for processing

{
  "trace": {
    "correlationId": "<YOUR_CORRELATION_ID>",
    "returnedDateTime": "2026-01-23 07:34:10.557+0000"
  },
  "error": null
}

Store the correlationId — it is your primary key for tracking the transaction via webhook or GET.

Transaction status values

StatusTypeDescription
PROCESSINGIntermediateRequest is being processed
PROCESSEDFinalMiles successfully debited — eligible for cancellation
ERRORFinalProcessing failed — check errorException in the webhook payload for details
CANCELLEDFinalRequest was cancelled

Reasons for a request to result in ERROR or CANCELLED

ReasonCodeInstructions to Partner
Member not foundMemberDoesNotExistValidate the member before processing
Invalid membership number formatInvalidMemberFormatThe member field must be valid. Verify the format and try again
Invalid membership numberInvalidMembershipNumberValidate the membership number format
Partner not registeredPartnerDoesNotExistContact LATAM Pass Support to set up the necessary configurations
Member account is restrictedMemberBlacklistedMember must contact LATAM Pass Support for assistance
Member account is not activeAccountNotActiveMember must activate the account to proceed
Member account is closedMemberClosedMember must reactivate the account to proceed
Member is deceasedMemberDeceasedContact LATAM Pass Support for assistance
Insufficient account balanceInsufficientAccountBalanceCheck the member's available balance before processing
Insufficient cross-program pointsCrossProgramInsufficientPointsReview the available points before trying again
No active partner contractNoActivePartnerContractContact LATAM Pass Support to review contract status
No active redemption contract for partnerActiveRedemptionContractNotExistsForPartnerContact LATAM Pass Support to verify contract details
Invalid partner for this rewardInvalidPartnerForRewardContact LATAM Pass Support to check the partner code
Redemption partner not foundRedemptionPartnerDoesNotExistContact LATAM Pass Support to validate the redemption partner
Reward not foundRewardDoesNotExistVerify the redemptionCode and try again
Reward not activeRewardNotActiveCheck the reward status or try again later
Reward validity expiredRewardValidityExpiredUse a valid reward or contact LATAM Pass Support
Reward pricing rule rejectedRewardPricingRuleRejectedContact LATAM Pass Support for assistance
Reward pricing rule not configuredRewardPricingRuleNotConfiguredContact LATAM Pass Support — configuration required
Member's country not eligible for this partner's redemptionCoalitionMismatchContact LATAM Pass Support to set up the necessary configurations
Authorization failed (recoverable)AuthorisationFailedPlease try again later or contact LATAM Pass Support if the issue persists
Settlement failed (recoverable)SettlementFailedPlease try again later or contact LATAM Pass Support if the issue persists
Certificate issuance failed (recoverable)IssueCertificateFailedPlease try again later or contact LATAM Pass Support if the issue persists
System error during rule processing (recoverable)RuntimeErrorPlease try again later or contact LATAM Pass Support if the issue persists

Common errors

400 — Missing required fields or invalid values

{
  "message": "Request payload has problems with validation",
  "code": 400,
  "instructions": null,
  "details": {
    "miles": "Miles must be positive"
  },
  "issueDateTime": "2026-01-23T12:54:25.044344Z"
}

400 — Duplicate correlationId

Returned when the provided correlationId has already been used and the transaction is not yet fully processed.

{
  "message": "A redeem with this correlationId already exists.",
  "code": 400,
  "instructions": [{"field": "correlationId", "message": "Already exists"}],
  "details": null,
  "issueDateTime": "2026-01-23T12:54:25.044344Z"
}

409 — Conflict

Returned when the provided correlationId has already been fully processed. Do not retry — use the GET endpoint to check the existing transaction status.

500 — Internal Server Error

{
  "message": "Internal server error on processing redeem.",
  "code": 33,
  "instructions": [{"field": "error", "message": "Please try again later or contact support if the issue persists"}],
  "details": null,
  "issueDateTime": "2026-01-23T13:59:27.882744Z"
}

For 500 errors, retry with the exact same payload, including the same partnerTransactionId and correlationId (if one was originally provided).

405 — Method Not Allowed

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

This endpoint only accepts POST requests.


Documentação técnica

Click here to access it.