Introduction
The PNA Cobrand LATAM Pass API is the way our banking partners manage the lifecycle of benefits delivered to our LATAM Pass members who hold a cobrand card.
The card upgrade occurs when a new higher-category card is approved and the member's current card is cancelled. The new card's data is sent to grant LATAM Pass benefits, and the current card's data is sent to remove them.
Important: A status code
200does not mean the operation was completed successfully. The final result can be queried 24 hours after the processing was created, using thecorrelationIdobtained in the response.
Availability: This endpoint is not available for all issuing banks. Check with the LATAM Pass commercial focal point whether your integration has this functionality enabled before implementing it.
To make requests to the API, you must first obtain an access token. See the Authentication documentation for all the information.
Base Gantt chart
Access the base Gantt chart for each type of program partnership using the following links:
Process flow

Request
| Property | Value |
|---|---|
| Method | POST |
| Path | /v1/customer/loyalty/partner/cobranded/upgrade |
Headers
| Name | Value | Description | Type | Required |
|---|---|---|---|---|
x-issue-bank | <bank code> | Identification of the card-issuing bank | String | Yes |
client_id | <your_client_id> | Value obtained from the Dev Tools > My Apps > Client ID menu | String | Yes |
access_token | <access_token> | Access token obtained during authentication | String | Yes |
x-latam-test | LatamPass | For use in the sandbox environment only. Must not be sent in production | String | No |
Body
CobrandedLifeCycleUpdateRequest
| Field | Type | Description | Required |
|---|---|---|---|
member | object (Member) | LATAM Pass member information | Yes |
update | object (UpdateCard) | Data of the cards to be updated | Yes |
Member
Fields marked with (*) may or may not be required depending on the configuration of the card-issuing bank. Check with the LATAM Pass commercial focal point for the fields required for your integration.
| Field | Type | Description | Required |
|---|---|---|---|
ffn | string | Member number. Ex.: 68245775886 | (*) |
firstName | string | All first names. Ex.: Carlos Jose | (*) |
lastName | string | All last names. Ex.: Silva Santos | (*) |
birthDate | string (date-time) | Date of birth. Ex.: 1998-11-30 | (*) |
gender | string (enum) | Gender: F, FEMALE, M, MALE, I, PREFER_NOT_TO_SAY | (*) |
email | string | Primary email. Ex.: carlos.santos@email.com | (*) |
residenceCountryCode | string | Country of residence (ISO 3166-1 alpha-2). Ex.: BR | (*) |
document | object (Document) | Member's identity document | Yes |
phone | object (Phone) | Member's phone number | No |
Document
| Field | Type | Description | Required |
|---|---|---|---|
documentId | string | Document number. Ex.: 68245775886 | Yes |
documentType | string (enum) | Document type: CPF, FID, NID, RUT, DNI | Yes |
issueCountryCode | string | Document-issuing country (ISO 3166-1 alpha-2). Ex.: BR | Yes |
Phone
If the
phoneobject is sent, thecountryCodeandphoneNumberfields are required.
| Field | Type | Description | Required |
|---|---|---|---|
countryCode | integer (int32) | Calling country code. Ex.: 55 | Yes (if phone exists) |
areaCode | integer (int32) | Area code (without country code). Ex.: 11 | No |
phoneNumber | integer (int32) | Phone number (without country or area code). Ex.: 999998888 | Yes (if phone exists) |
UpdateCard
| Field | Type | Description | Required |
|---|---|---|---|
old | object (Card) | Current card to be cancelled | Yes |
new | object (Card) | New higher-category card to be activated | Yes |
Card
Fields marked with (*) may or may not be required depending on the configuration of the card-issuing bank.
| Field | Type | Description | Required |
|---|---|---|---|
brand | string (enum) | Card brand: AMEX, MASTERCARD, VISA | (*) |
category | string | Card category, provided by the LATAM Pass commercial focal point | Yes |
lastFour | integer (int32) | Last 4 digits of the card. Ex.: 1234 | (*) |
approvedAt | string (date-time) | Submission approval date. Ex.: 2026-06-15T22:06:11.201Z | (*) |
tier | integer (int32) | Card category level. Ex.: 1 | (*) |
Request example
May vary depending on the issuing bank's configuration
Response
200 — Request received
A 200 code indicates that the request was received and processing was created. It does not guarantee that the operation has been completed. When finished, the operation will affect 2 cards: the old card will be cancelled and the new card will be activated. The final result must be queried with the correlationId through the status query endpoint.
CobrandedLifeCycleResponse
| Field | Type | Description | Required |
|---|---|---|---|
member | object (MemberSimplified) | Member information | Yes |
trace | object (Trace) | Processing traceability information | Yes |
MemberSimplified
| Field | Type | Description | Required |
|---|---|---|---|
ffn | string | Member number | Yes |
Trace
| Field | Type | Description | Required |
|---|---|---|---|
correlationId | string | Correlation identifier between LATAM eFFP API resources | Yes |
threadId | string | Identifier of the thread that executed the complete flow | Yes |
receivedDateTime | string | Date and time the request was received | Yes |
returnedDateTime | string | Date and time the response was returned | Yes |
Most common errors
Missing required fields or invalid values
Request limit exceeded
Internal server error
If this error occurs, it is recommended to retry the request. If it persists, contact LATAM Pass support with the correlationId.
ErrorException structure
| Field | Type | Description |
|---|---|---|
code | integer (int32) | LATAM eFFP API internal code |
message | string | Error message description |
instructions | string | Instructions to resolve the error |
issuedDateTime | string | Date and time the error was generated |
details | map<string, object> | Key-value pair with additional error details |
Technical documentation
Click here to access the complete technical specification (Swagger).