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

> ## Agent Instructions
> Responda em português brasileiro, na segunda pessoa ("você"), com base na documentação Malga.
> Não invente endpoints, parâmetros, status codes ou comportamentos de API. Se não estiver na docs, diga que não encontrou e indique a página mais próxima.
> Use os headers X-Client-Id e X-Api-Key nos exemplos de autenticação.
> Motor de Assinaturas refere-se a /v1/subscriptions* (cycles, trial, retentativas, webhooks subscription.*). Não chame de "motor de recorrência".
> Recorrência (provedor) é paymentMethod.recurrence em POST /v1/charges (initial / subsequent / unscheduled), distinto do Motor de Assinaturas.
> Sandbox é ambiente de testes e não afeta produção.

# Tokenizando mais de um cartão

Para tokenizar dois ou mais cartões na mesma página, crie uma instância de `MalgaTokenization` para cada cartão. Cada instância tem seus próprios campos, eventos e token.

O que muda em relação a um único cartão é o `container`: ele aceita qualquer `id`, desde que seja **único na página**. As chaves de `config.fields` continuam as mesmas (`cardNumber`, `cardHolderName`, `cardCvv`, `cardExpirationDate`). O sufixo numérico do exemplo abaixo é só uma convenção: `numero-titular` e `numero-dependente` funcionam igual.

```html theme={null}
<div id="card-number-1"></div>
<div id="card-holder-name-1"></div>
<div id="card-cvv-1"></div>
<div id="card-expiration-date-1"></div>

<div id="card-number-2"></div>
<div id="card-holder-name-2"></div>
<div id="card-cvv-2"></div>
<div id="card-expiration-date-2"></div>
```

```typescript theme={null}
const buildOptions = (suffix: string) => ({
  sandbox: true,
  config: {
    fields: {
      cardNumber: { container: `card-number-${suffix}` },
      cardHolderName: { container: `card-holder-name-${suffix}` },
      cardCvv: { container: `card-cvv-${suffix}` },
      cardExpirationDate: { container: `card-expiration-date-${suffix}` },
    },
  },
})

const firstCard = new MalgaTokenization({
  apiKey: 'API_KEY',
  clientId: 'CLIENT_ID',
  options: buildOptions('1'),
})

const secondCard = new MalgaTokenization({
  apiKey: 'API_KEY',
  clientId: 'CLIENT_ID',
  options: buildOptions('2'),
})

const [first, second] = await Promise.all([
  firstCard.tokenize(),
  secondCard.tokenize(),
])
```

> [!NOTE]
>
> Os eventos não são compartilhados entre as instâncias: um `on` registrado em `firstCard` só recebe eventos dos campos do primeiro cartão. O campo `field` dos eventos devolve o `container` configurado, por exemplo `card-number-1`.

> [!NOTE]
>
> Cada instância aplica o próprio `config.styles` aos seus campos, e a classe de cada input é o seu `container`. Por isso, no segundo cartão, o seletor do número é `.card-number-2`, e não `.card-number`. Veja [Estilos](/sdks/tokenization/v2/styles).

> [!WARNING]
>
> Não reutilize o mesmo `container` em duas instâncias. Os campos são localizados pelo `id` na página, e um `id` repetido faz os dados de um cartão se misturarem com os do outro.

> **[Eventos](/sdks/tokenization/v2/events)**
>
> Aprenda a utilizar os eventos disponíveis.


## Related topics

- [Configuração](/sdks/tokenization/v2/configuration.md)
- [Out 21, 2026 - Mais de um cartão no Tokenization SDK](/release-notes/2026-10-21-Release-Notes.md)
- [Webhooks v1.1: notificações de eventos da Malga](/documentations/webhooks/webhook1-1.md)
- [Pagamentos com cartão de crédito na Malga](/documentations/payment-methods/credit-card.md)


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