> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jointransfer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Redeem checkout token

> Exchange a single-use token in a trusted checkout client.

```http theme={"theme":{"light":"github-light","dark":"vesper"}}
POST /api/v1/cards/me/checkout/redeem
Authorization: Bearer tr_agent_YOUR_PRIVATE_KEY
Content-Type: application/json
```

```json theme={"theme":{"light":"github-light","dark":"vesper"}}
{
  "checkout_token": "tr_checkout_REPLACE_WITH_THE_TOKEN_YOU_JUST_REQUESTED"
}
```

The example values are placeholders. Obtain a real token from [Request checkout token](/api-reference/get-payment-details) or [Get payment card](/mcp/get-payment-card). Send the complete token in the JSON body using the **same agent bearer key**. Never include it in a URL or query string. The body must contain only `checkout_token`, use `Content-Type: application/json`, and be at most 4 KB.

## Successful response

A `200` response contains a `card_checkout_details` resource in `data`, identified by the assigned card's ID:

| Attribute | Meaning |
| - | - |
| `number` | The assigned card's actual number, as a string. |
| `expiryMonth` | Two-digit month, as a string. |
| `expiryYear` | Four-digit year, as a string. |
| `cvc` | Always `null`; Transfer never collects or stores external CVC. |
| `requiresOwnerCvc` | `true`; owner CVC entry may be needed at the merchant. |

> [!WARNING]
>
> This response contains actual payment-card details. Handle it only in a
> trusted checkout client. Do not return it to a language model, print it to
> logs, send it to analytics, or persist it in browser storage. It is private
> and not cached.

The response does not authorize a purchase or guarantee that a merchant accepts the card. The owner may need to enter CVC directly at the merchant or complete bank authentication. Credential retrieval itself makes no charge.

## Token lifecycle and access changes

Tokens expire within 60 seconds and are consumed atomically once. The database stores token hashes, not reusable plaintext tokens. A second redemption fails, including after a lost response or a downstream failure; request a new token when appropriate.

Redemption verifies the current agent key, active status, linked-card binding, ciphertext snapshot, and Transfer access. Revoking or replacing a key, pausing an agent, disabling access, or removing or replacing its card blocks outstanding-token redemption. Another agent's key cannot redeem the token.

After the actual card details have been returned, Transfer cannot recall a client's copy or restrict where it is entered. Freeze or replace the bank card to stop bank-side spending. Local sandbox mode permits only public test cards; live storage requires an approved deployment following security and PCI review.

See [Errors and rate limits](/api-reference/errors) for failure handling. This endpoint has no simulation-card redemption flow.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.