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

# Tokenizar cartão

> Tokeniza os dados sensíveis do cartão e devolve um `token` opaco para usar na cobrança. Número e CVV nunca trafegam na rota de cobrança.

Tokeniza os dados sensíveis do cartão e devolve um `token` opaco. Use esse token no campo `card.cardToken` ao [criar a cobrança](/api-reference/cartao-cobranca) — número e CVV **nunca** trafegam na rota de cobrança.

<Warning>
  Esta é a única rota que recebe número e CVV do cartão. Chame-a a partir do seu back-end, sobre HTTPS.
</Warning>


## OpenAPI

````yaml POST /v1/card-token
openapi: 3.0.3
info:
  title: API Ephra
  description: >-
    API REST para gerar cobranças (PIX, cartão e boleto), consultar transações e
    gerenciar webhooks.
  version: 1.0.0
servers:
  - url: https://api.ephra.io
    description: Servidor de produção
security:
  - bearerAuth: []
tags:
  - name: Autenticação
    description: Login e obtenção do token de acesso
  - name: Pagamentos
    description: Criação de cobranças PIX, cartão e boleto
  - name: Assinaturas
    description: Cobrança recorrente — iniciar, listar, consultar e cancelar assinaturas
  - name: Transações
    description: Consulta de transações
  - name: Webhooks
    description: Cadastro e gerenciamento de webhooks
paths:
  /v1/card-token:
    post:
      tags:
        - Pagamentos
      summary: Tokenizar cartão
      description: >-
        Tokeniza os dados sensíveis do cartão e devolve um `token` opaco para
        usar na cobrança. Número e CVV nunca trafegam na rota de cobrança.
      operationId: tokenizeCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - number
                - holderName
                - expirationMonth
                - expirationYear
                - cvv
              properties:
                number:
                  type: string
                  description: Número do cartão (validado por Luhn)
                  example: '4111111111111111'
                holderName:
                  type: string
                  example: MARIA SILVA
                expirationMonth:
                  type: string
                  description: Mês 01-12
                  example: '07'
                expirationYear:
                  type: string
                  description: 2 ou 4 dígitos
                  example: '28'
                cvv:
                  type: string
                  description: 3 ou 4 dígitos
                  example: '123'
      responses:
        '200':
          description: Token gerado
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  token:
                    type: string
                    example: tok_abc123...
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    BadRequest:
      description: Requisição inválida
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 400
            error: Bad Request
            message: Documento inválido para o tipo selecionado
    Unauthorized:
      description: Token ausente, inválido ou expirado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 401
            error: Unauthorized
            message: Token inválido ou expirado
  schemas:
    Error:
      type: object
      properties:
        statusCode:
          type: integer
          example: 400
        error:
          type: string
          example: Bad Request
        message:
          type: string
          example: Mensagem descritiva do erro
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````