> ## 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.

# Out 28, 2026 - Tokenization SDK 5.0.0

> O Tokenization SDK 5.0.0 ganha o método destroy() para desmontar uma instância, recusa containers já usados por outra instância e valida os campos antes de tokenizar.

![Mila](https://avatars.githubusercontent.com/u/64020657?v=4)

[Mila](https://github.com/milenacrios)

Software Engineer

A versão 5.0.0 do [Tokenization SDK](https://docs.malga.io/sdks/tokenization/v2/events.md) permite desmontar uma instância de `MalgaTokenization`. Em aplicações de página única, o checkout deixa de acumular iframes e listeners cada vez que a tela é montada de novo.

Esta é uma versão major: quem monta o checkout mais de uma vez sem desmontar a instância anterior precisa ajustar a integração antes de atualizar. Veja a seção Mudanças para quem usa o Tokenization SDK, abaixo.

## Melhorias

### Método destroy()

* `destroy()` remove os iframes dos containers, o listener de mensagens e os callbacks registrados com `on`, apaga os dados do cartão coletados e libera os containers para uma nova instância.
* Chame o método sempre que o checkout sair da tela: na função de limpeza do `useEffect` no React, em `onUnmounted` no Vue ou em `ngOnDestroy` no Angular.
* Depois de `destroy()`, `tokenize()` lança um erro. Chamar `destroy()` mais de uma vez não tem efeito.

Em React, por exemplo, o componente do checkout cria a instância ao montar e a desmonta na função de limpeza do `useEffect`:

```tsx theme={null}
useEffect(() => {
  const instance = new MalgaTokenization(configurations)
  malgaTokenization.current = instance

  return () => instance.destroy()
}, [])
```

Veja o componente completo em React, Vue e Angular em [destroy()](https://docs.malga.io/sdks/tokenization/v2/events.md#destroy).

### Validação dos campos antes de tokenizar

* `tokenize()` confere se todos os campos configurados em `config.fields` foram preenchidos antes de enviar os dados.
* Se faltar algum, o método retorna na hora, sem chamar a API, com `tokenId` vazio e um `error` com `type: 'invalid_request_error'`. O `details` lista os campos que faltam, por exemplo `['cardCvv']`.

Veja [tokenize()](https://docs.malga.io/sdks/tokenization/v2/events.md#tokenize).

## Correções

* Apagar o CVV ou o nome do titular sem sair do campo agora limpa também o valor coletado. Antes, o último valor digitado continuava sendo enviado na tokenização.

## Mudanças para quem usa o Tokenization SDK

> [!WARNING]
>
> **Containers em uso:** o construtor passa a lançar um erro, antes de renderizar qualquer campo, quando o `container` já é usado por outra instância ativa (`ContainerInUseError`) ou aparece em dois campos da mesma configuração (`DuplicatedContainerError`). Até a versão 4.x, essas configurações eram aceitas: os iframes se empilhavam nos mesmos containers e os dados dos cartões se misturavam.
>
> **O que fazer:** se a tela do checkout pode ser montada mais de uma vez (um `useEffect` sem função de limpeza, o `StrictMode` do React ou a volta para a rota), chame `destroy()` na desmontagem. Use também um `container` diferente para cada campo e para cada cartão. Veja [Containers em uso](https://docs.malga.io/sdks/tokenization/v2/events.md#containers-em-uso).

> [!TIP]
>
> Principais novidades:
>
> <ul>
>   <li>Método `destroy()` para desmontar uma instância de `MalgaTokenization`.</li>
>   <li>`ContainerInUseError` e `DuplicatedContainerError` para containers repetidos.</li>
>   <li>`tokenize()` retorna `invalid_request_error` quando falta um campo configurado.</li>
> </ul>

> [!NOTE]
>
> Ficou com dúvida? Fale com a gente pelo e-mail [suporte@malga.io](mailto:suporte@malga.io).


## Related topics

- [Out 21, 2026 - Mais de um cartão no Tokenization SDK](https://docs.malga.io/release-notes/2026-10-21-Release-Notes.md)
- [Pagamentos com cartão de crédito na Malga](https://docs.malga.io/documentations/payment-methods/credit-card.md)
- [Mais releases](https://docs.malga.io/release-notes/releases.md)
- [Out 26, 2026 - Extrato no Dashboard](https://docs.malga.io/release-notes/2026-10-26-Release-Notes.md)


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