SelectwinSelectwin

Cartões - Criar

Visão Geral

Este endpoint permite registrar um novo cartão de crédito de forma segura, possibilitando usá-lo em transações futuras, mediante autorização do titular.

Precauções

  • Segurança: Os dados do cartão são transmitidos de forma segura usando criptografia TLS/SSL.
  • Conformidade PCI: Garanta que sua aplicação esteja em conformidade com as diretrizes PCI DSS ao capturar dados de cartões.
  • Validação: O sistema realiza validações básicas do número do cartão antes do processamento.
  • Tokens: Considere usar tokenização para minimizar o manuseio direto de dados de cartão.

Descrição

O endpoint Criar Cartão permite cadastrar um novo cartão no sistema, associando-o a um cliente específico. Os dados são validados e o cartão é tokenizado para uso em transações futuras.

Requisição

HTTP
POST /v1/cards

Corpo da Requisição

Forma 1 — token do navegador (recomendada para página própria):

JSON
{
  "customerId": "cus_123456789",
  "token": "a1b2c3d4e5f6…",
  "primary": true
}

Forma 2 — dados completos do cartão:

JSON
{
  "numbering": "4111111111111111",
  "holderName": "João Silva",
  "expirationMonth": 12,
  "expirationYear": 2030,
  "securityCode": "123",
  "customerId": "cus_123456789",
  "primary": true
}

Parâmetros da Requisição

ParâmetroTipoObrigatórioDescriçãoExemplo
customerIdstringSimID do cliente (cus_*) ao qual o cartão será associado"cus_123456789"
tokenstringSim*Token de uso único cunhado no navegador (Tokenização no navegador). *Alternativa aos dados completos; quando enviado, nenhum campo de cartão pode vir junto"a1b2c3d4e5f6…"
holderNamestringSim**Nome completo do titular (3 a 255 caracteres). **Obrigatório sem token"João Silva"
numberingstringSim**Número completo do cartão (validado por Luhn). **Obrigatório sem token"4111111111111111"
expirationMonthintegerSim**Mês de validade (1 a 12). **Obrigatório sem token12
expirationYearintegerSim**Ano de validade. Aceita 4 dígitos (2030) ou 2 dígitos (30 → 2030). Não pode estar no passado. **Obrigatório sem token2030
securityCodestringSim**Código de segurança / CVV (3 ou 4 dígitos). Nunca é retornado. **Obrigatório sem token"123"
primarybooleanNãoDefine se este é o cartão principal do cliente. Quando omitido, assume truetrue

Resposta - 201 Created

Se a requisição for bem-sucedida, um objeto JSON com os detalhes do cartão criado é retornado.

Exemplo de Resposta

Resposta root (create retorna shape completo de leitura do cartão tokenizado + merchant/_links).

JSON
{
  "id": "card_01hqzvabc",
  "holderName": "João Silva",
  "brand": "Visa",
  "firstDigits": "411111",
  "lastDigits": "1111",
  "expirationMonth": "12",
  "expirationYear": "2030",
  "primary": true,
  "active": true,
  "valid": true,
  "verified": false,
  "associated": false,
  "updatedAt": "2026-04-12T17:56:33.000Z",
  "createdAt": "2026-04-12T17:56:33.000Z",
  "merchant": {
    "name": "Seller Name",
    "merchantId": "bus_1234567890",
    "isSubAccount": false
  },
  "_links": {
    "self": {
      "href": "https://api.selectwin.io/v1/cards/card_01hqzvabc",
      "method": "GET",
      "description": "Read a card."
    },
    "delete": {
      "href": "https://api.selectwin.io/v1/cards/card_01hqzvabc",
      "method": "DELETE",
      "description": "Delete the card."
    },
    "list": {
      "href": "https://api.selectwin.io/v1/cards",
      "method": "GET",
      "description": "List all cards."
    }
  }
}

Atributos da Resposta

AtributoTipoDescrição
idstringIdentificador único (card_*)
holderNamestringNome do titular (normalizado para Title Case)
brandstringBandeira capitalizada (Visa, Mastercard, Amex, Elo, ...)
firstDigitsstringBIN (6 primeiros dígitos). Num cartão criado por token, os 4 primeiros
lastDigitsstringÚltimos 4 dígitos
expirationMonthstringMês de validade (2 dígitos, ex.: "12")
expirationYearstringAno de validade (4 dígitos, ex.: "2030")
primarybooleanCartão principal
activebooleanAtivo (true na criação)
validbooleanVálido (true na criação)
verifiedbooleanVerificado (false na criação)
associatedboolean | nullAssociado ao cliente. false na criação pelos dados completos (a associação roda em seguida; depois, true ou false). null (pendente) na criação por token — o token foi cunhado no navegador de um comprador, então é uma porta do comprador, como o checkout hospedado, o portal e o payment.card de uma cobrança/assinatura — até a 1ª cobrança aprovada com o cartão; o cartão já pode ser cobrado. Ver Visão geral
createdAt / updatedAtstring (date-time)Timestamps ISO 8601
merchantobjectBloco do merchant (name, merchantId, isSubAccount)
_linksobjectHATEOAS (self, create, delete, list)

Notas:

  • O corpo da requisição usa primary; a resposta usa os nomes sem prefixo is (primary, active, valid, verified, associated).
  • O recurso de cartão não retorna metadata.
  • Cartões são criados com verified: false; a verificação ocorre posteriormente no fluxo de pagamento.

Respostas de Erro

Todas as respostas de erro seguem o envelope canônico { "error": { status, statusCode, category, code, message, resource, details?, params? } }.

400 Bad Request - Bandeira não suportada

JSON
{
  "error": {
    "status": "Bad Request",
    "statusCode": 400,
    "category": "validation",
    "code": "cardBrandNotSupported",
    "message": "Card brand not supported.",
    "resource": "card",
    "details": "The card brand is not supported. Please check the card brand and try again."
  }
}

400 Bad Request - Cartão expirado

JSON
{
  "error": {
    "status": "Bad Request",
    "statusCode": 400,
    "category": "validation",
    "code": "cardExpired",
    "message": "Card expired",
    "resource": "card",
    "details": "The provided card has expired. Please use a valid card."
  }
}

404 Not Found - Cliente inválido

Retornado quando o customerId informado não existe.

JSON
{
  "error": {
    "status": "Not Found",
    "statusCode": 404,
    "category": "client",
    "code": "invalidCustomerId",
    "message": "Invalid customer ID.",
    "resource": "customer"
  }
}

Códigos de erro deste endpoint

HTTPcodeQuando ocorre
400(validação de campo)Campos ausentes/ inválidos no corpo (Luhn, CVV, mês/ano). Inclui o array params por campo
400cardExpiredMês/ano de validade já passou
400cardBrandNotSupportedBandeira detectada fora da lista de bandeiras aceitas
401—SelectKey ausente ou inválida
403—Chave sem o escopo cards:create
404invalidCustomerIdcustomerId não encontrado
409—Conflito de idempotência
422cardTokenInvalidtoken desconhecido, expirado (1 h) ou já usado
422cardDeclinedO cartão do token foi recusado na validação
422cardTokenCustomerUnavailableO cliente não pôde ser cadastrado para receber o cartão (dados incompletos/recusados)
429cardAssociationRateLimitedNão é mais devolvido por este endpoint. O teto de associações da conta vale para o cadastro com o cartão completo, que é assíncrono: acima do teto o cartão é criado, mas fica associated: false e só é validado na primeira cobrança. Com token (cunhado no navegador do comprador) e nos cartões que os compradores digitam — no checkout hospedado, no portal e o cartão enviado DENTRO de uma cobrança ou assinatura (payment.card) — conta a janela de cada comprador e um teto da loja para essas portas, que nunca responde 429: no teto, a validação prévia é adiada e o cartão é validado antes da cobrança. O cartão do token sai associated: null até a 1ª cobrança aprovada
503cardTokenAssociationFailedA validação do cartão do token não respondeu a tempo. Nada foi cobrado; tente de novo com um token novo
503tokenizationNotConfiguredAmbiente sem tokenização no navegador
500—Erro interno

Casos de Uso

  1. Checkout em E-commerce: Permitir que o cliente salve um novo cartão durante o processo de compra
  2. Registro em Aplicativos: Permitir que usuários adicionem cartões ao se cadastrarem ou posteriormente
  3. Subscrições e Recorrências: Adicionar um cartão para cobranças recorrentes futuras
  4. Atualização após Expiracao: Substituir um cartão expirado por uma nova versão

Melhores Práticas

  1. Validações no Cliente: Realize validações básicas do número do cartão, data de validade e CVV no frontend antes de enviar para a API
  2. Mascaramento de Dados: Mascare os dados do cartão na interface do usuário
  3. Criptografia: Utilize conexões seguras (HTTPS) e considere métodos adicionais de criptografia
  4. Confirmação do Titular: Implemente métodos para confirmar que o usuário tem permissão para usar o cartão
  5. Gestão de Erros: Forneça feedback claro aos usuários quando houver problemas na validação do cartão

Integração com Outros Endpoints

  • Para não lidar com dado de cartão no seu servidor, use a Tokenização no navegador
  • Use Listar Cartões para verificar se o cartão foi adicionado com sucesso
  • Use Excluir Cartão caso o cliente deseje remover o cartão imediatamente
  • Cartões são imutáveis: para alterar dados (ex.: validade), exclua o cartão e cadastre um novo

Atualizado em 17 de outubro de 2026

Preferências de cookies

Hoje o site usa só cookies essenciais: nenhuma ferramenta de medição ou de anúncios está ligada, e nada é compartilhado com terceiros. Se isso mudar, você decide aqui antes de qualquer coisa ser carregada.

  • Mantêm o site funcionando: segurança, a sua escolha sobre cookies e preferências como a versão da documentação. Não dependem de consentimento.

    Sempre ativos