SelectwinDOCS
Cartões

Consultar um cartão

Recupera os dados de um cartão tokenizado a partir do seu identificador. A resposta traz informações seguras (apenas dígitos parciais, nunca o número completo nem o CVV) e o estado atual do cartão — i

Recupera os dados de um cartão tokenizado a partir do seu identificador. A resposta traz informações seguras (apenas dígitos parciais, nunca o número completo nem o CVV) e o estado atual do cartão — ideal para exibir o meio de pagamento salvo de um cliente ou conferir se ele ainda está válido antes de cobrar.

GET /v1/cards/{cardId}

Como funciona

Quando você cria um cartão na Selectwin (veja Criar cartão), os dados sensíveis (número completo, o chamado PAN, e o código de segurança) não ficam armazenados — eles são substituídos por um token, uma referência opaca representada pelo id do cartão (ex.: card_01hqzvabc). "Tokenizar" é justamente esse processo: trocar o dado sensível por uma referência segura que você pode guardar e reutilizar.

O endpoint de leitura recebe esse id e devolve a representação atual do cartão: os dígitos parciais para identificação visual, a bandeira detectada e um conjunto de flags de estado (ativo, válido, verificado, associado e principal). Por baixo, é uma operação somente leitura e idempotente — chamá-la quantas vezes quiser não altera nada no servidor nem dispara cobranças.

Cartões são imutáveis: não existe endpoint para editar os dados de um cartão já cadastrado. Para "alterar" um cartão (por exemplo, atualizar a validade), você exclui o antigo e cria um novo. Por isso, a leitura é a forma canônica de obter o estado mais recente — não confie em cópias antigas guardadas no seu lado.

As flags de estado

FlagSignificado
activeO cartão está habilitado para uso.
validPassou nas validações (formato, Luhn) e não está expirado.
verifiedFoi verificado (ex.: validação junto ao emissor).
associatedEstá vinculado a um cliente.
primaryÉ o cartão principal do cliente. Pode vir null quando não definido.

Nota

Na leitura individual, as flags vêm com nomes "planos": active, valid, verified, associated, primary. Já na listagem, os itens são projeções mais leves e essas mesmas flags aparecem com o prefixo is (isActive, isValid, isPrimary, …). Trate-as como booleanos de estado nos dois casos, mas atente para o nome do campo conforme o endpoint.

Quando usar (e quando não usar)

Use a consulta individual quando você já tem o id do cartão e precisa do estado completo e atual:

  • Exibir o meio de pagamento salvo na tela do cliente (bandeira + últimos 4 dígitos).
  • Conferir, antes de cobrar, se o cartão está active e valid.
  • Confirmar para o usuário qual cartão será usado em um pagamento.

Quando não usar:

  • Para descobrir todos os cartões de um cliente, use Listar cartões com o filtro holderid. Não tente "adivinhar" IDs.
  • A leitura não valida fundos nem autoriza pagamentos — isso acontece no momento da transação. As flags refletem o estado do token, não a disponibilidade de crédito no banco emissor.

Requisição

Headers

CabeçalhoObrigatórioDescrição
SelectKeySimSua chave de API. Em produção começa com sl_live_; em sandbox, com sl_test_. Veja Autenticação.

Esta é uma operação de leitura, então não há corpo nem necessidade de Content-Type ou X-Idempotency-Key. As demais convenções (camelCase, dinheiro em centavos, datas ISO 8601 UTC, IDs opacos) seguem o padrão geral — veja Convenções.

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
cardIdstringSimIdentificador do cartão a consultar (ex.: card_01hqzvabc). Trate-o como string opaca — não faça parsing do prefixo.

Exemplo

curl https://api.selectwin.io/v1/cards/card_01hqzvabc \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"

Resposta

Em caso de sucesso, retorna 200 OK com o objeto do cartão.

{
  "id": "card_01hqzvabc",
  "holderName": "JOÃO SILVA",
  "brand": "visa",
  "firstDigits": "411111",
  "lastDigits": "1111",
  "expirationMonth": "12",
  "expirationYear": "2025",
  "primary": null,
  "active": true,
  "valid": true,
  "verified": true,
  "associated": true,
  "updatedAt": "2026-04-12T17:56:33.000Z",
  "createdAt": "2026-04-12T17:56:33.000Z",
  "metadata": null,
  "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." },
    "create": { "href": "https://api.selectwin.io/v1/cards",                "method": "POST",   "description": "Create a new card." },
    "update": { "href": "https://api.selectwin.io/v1/cards/card_01hqzvabc", "method": "PUT",    "description": "Update the 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." }
  }
}

Campos da resposta

CampoTipoDescrição
idstringIdentificador (token) do cartão.
holderNamestringNome do titular, como impresso no cartão.
brandstringBandeira detectada (ex.: visa, mastercard, elo).
firstDigitsstringPrimeiros dígitos do número (geralmente 6 — o BIN).
lastDigitsstringÚltimos dígitos do número (geralmente 4).
expirationMonthstringMês de validade ("01""12").
expirationYearstringAno de validade.
primaryboolean | nullIndica se é o cartão principal do cliente. null quando não definido.
activebooleanCartão habilitado para uso.
validbooleanPassou nas validações e não está expirado.
verifiedbooleanCartão verificado.
associatedbooleanVinculado a um cliente.
metadataobject | nullObjeto livre com seus dados de correlação. null quando não houver.
createdAtstring (date-time)Data/hora de criação, em ISO 8601 UTC.
updatedAtstring (date-time)Data/hora da última atualização, em ISO 8601 UTC.
merchantobjectDados do estabelecimento dono do cartão (name, merchantId, isSubAccount).
_linksobjectLinks HATEOAS para ações relacionadas (self, create, update, delete, list).

Nota

O número completo do cartão (PAN) e o código de segurança (CVV/CVC) nunca são retornados — só os dígitos parciais. Os campos _links seguem o padrão HATEOAS: cada ação relacionada vem como um link pronto (href + method), o que dispensa montar URLs na mão.

Dica

Trate primary e metadata como possivelmente null. Pela convenção da API, um campo presente com valor null significa "sem valor" — não é a mesma coisa que o campo estar ausente. Veja Convenções.

Erros

Em caso de falha, a API retorna o envelope padrão com um error.code estável — trate sempre pelo code, nunca pela message. Estrutura completa em Tratamento de Erros.

error.codeHTTPQuando ocorre
cardIdIsInvalid400O cardId está malformado (formato inválido).
invalidParameters400Falha de validação genérica (veja error.params).
unauthorized401SelectKey ausente, inválida ou revogada.
forbidden403Autenticado, mas sem permissão para acessar este cartão.
cardNotFound / cardIdNotFound404Não existe cartão com esse id na sua conta.
unprocessableEntity422Não foi possível processar a leitura (regra de negócio).
tooManyRequests429Limite de requisições excedido — repita com backoff.
serverError500Erro interno — tente novamente; se persistir, contate o suporte.

Exemplo de erro para um ID malformado:

{
  "error": {
    "code": "cardIdIsInvalid",
    "statusCode": 400,
    "category": "validation",
    "message": "Card ID is invalid"
  }
}

Atenção

Distinga cardIdIsInvalid (400) de cardNotFound (404). O primeiro significa que o formato do ID está errado (provável bug no seu código ou entrada inválida); o segundo, que o ID é bem formado mas não corresponde a nenhum cartão seu (foi excluído, nunca existiu, ou pertence a outra conta). Catálogo completo em Códigos de Erro.

Boas práticas

  • Leia sob demanda, não em loop. Para reagir a mudanças (ex.: cartão expirado), prefira webhooks (card.expired, card.updated) a ficar consultando — a API desencoraja polling. Veja Proibição de polling.
  • Cache curto. Se cachear a resposta para reduzir chamadas, use TTL baixo e invalide ao receber card.updated ou card.deleted.
  • Exiba só o que é seguro. Mostre bandeira + lastDigits ao usuário; nunca exponha mais do que a API devolve.
  • Cheque o estado antes de cobrar. Confirme active e valid (e, se preciso, alerte sobre expirationMonth/expirationYear próximos do vencimento) antes de criar uma transação com o cartão.
  • Trate 404 como fluxo normal. Um cartão pode ter sido excluído pelo cliente entre uma tela e outra; trate cardNotFound de forma graciosa, sem quebrar a experiência.
  • Não construa nem faça parsing de IDs. Guarde o id inteiro retornado na criação e reutilize-o; o prefixo card_ é só conveniência de leitura.

Veja também

How is this guide?

On this page