---
title: "Add card to customer"
method: POST
path: "/customers/{uuid}/cards"
tags: ["Customers"]
---

# Add card to customer

`POST /customers/{uuid}/cards`

## Request

- Base URL: `https://your-subdomain.truust.io/2.0`
- URL: `https://your-subdomain.truust.io/2.0/customers/{uuid}/cards`
- Auth: HTTP bearer

Adds a card to a customer. The behaviour depends on `payin_type`:

- `DCP`, `DCP_AUTH`: tokenizes a card. The response includes a `tokenization_link` the customer must visit to enter the card details.
- `STRIPE`: issues a virtual card against `wallet_id`. See [Stripe Authorization](/guides/stripe-authorization).
- `M2P_ISSUING` (only when card issuing is enabled): issues a card linked to a wallet previously created with `POST /wallets` and `type: M2P_ISSUING`. Issuance is asynchronous: the card is returned with `confirmed: false` and becomes `confirmed: true`, with the issuer token in `gateway_reference_id`, once the issuer confirms it.

## Path parameters

- `uuid` string, required

## Request body

- object
  - `payin_type` 'DCP' | 'DCP_AUTH' | 'STRIPE' | 'M2P_ISSUING', required
  - `wallet_id` integer: ID of the wallet that backs the card. Required for `STRIPE` and `M2P_ISSUING`. Must belong to the customer.
  - `ficha_beneficiario` object: `M2P_ISSUING` only. Optional cardholder data; cards are issued anonymous by default.
    - `nombre` string
    - `primer_apellido` string
    - `segundo_apellido` string
    - `nif` string
    - `email` string, email
    - `telefono` string
    - `fecha_nacimiento` string, date
    - `calle` string
    - `numero` string
    - `codigo_postal` string
    - `localidad` string
  - `product_id` string: `M2P_ISSUING` only. Card product identifier.
  - `card_type` string: `M2P_ISSUING` only. Card type or program code.

## Response `200`

Card created

- Card
  - `id` integer
  - `self` string
  - `uuid` string
  - `type` string, nullable: Card brand (e.g. `VISA`, `MASTERCARD`).
  - `cardholder` string, nullable
  - `alias` string, nullable: Masked card number alias (e.g. `4242XXXXXXXX4242`).
  - `expiration` string, nullable
  - `issuing_country` string, nullable
  - `issuing_bank` string, nullable
  - `is_3d_secure` boolean, nullable
  - `confirmed` boolean: Whether the card has been successfully tokenized and confirmed.
  - `payin_type` string, nullable: Payment type this card is associated with.
  - `tokenization_link` string, uri, nullable: URL to complete card tokenization. Only present immediately after creation.
  - `gateway_reference_id` string, nullable: Identifier of the card at the issuer (`STRIPE`, `M2P_ISSUING`). Only present for cards linked to a wallet.
  - `created_at` string, date-time, nullable
  - `connections` Connections: Hypermedia links to related resources.

## Other responses

- `404`: Customer or wallet not found, or the wallet is not an `M2P_ISSUING` wallet of this customer.
- `422`: Validation error

## Changes

- **2026-10-07** `0c5e1fce2355`: 1 breaking
  - the `wallet_id` request property type changed from `string` to `integer`
- **2026-10-07** `7f77734f1503`: 1 info
  - endpoint added
- **2026-03-12** `ff825f6602c8`: 1 breaking
  - api removed without deprecation

[Operation history](https://skmtc.dev/truust-io/apis/truust-api/changes/customers/:uuid/cards/post.md)

---

[API](https://skmtc.dev/truust-io/apis/truust-api.md) - [All operations](https://skmtc.dev/truust-io/apis/truust-api/llms.txt) - [OpenAPI document](https://skmtc.dev/truust-io/apis/truust-api/revisions/bd85b563eec2?raw)
