Skip to main content
Um customer é o comprador — a pessoa física ou jurídica que compra de você. Ele reúne num só lugar a identidade e os dados de cobrança (nome, e-mail, telefone, CPF/CNPJ, nome de cobrança e endereço) e é o fio que liga todo o histórico de uma pessoa: pagamentos, assinaturas, invoices e métodos de pagamento salvos.
O id identifica o customer.O e-mail é um dado de contato e pode aparecer em mais de um customer da mesma organização. Ao criar um customer diretamente pela API, você decide quando reutilizar um id que já conhece e quando criar outro cadastro.

Como os recursos se relacionam

O customer é o ponto de ancoragem. Métodos de pagamento salvos, assinaturas, invoices e pagamentos apontam para ele — por isso o cliente nunca some de verdade quando há histórico (veja Remover um cliente).

Anatomia do cliente

Este é o contrato público completo, retornado em create, get, update, itens de list e em data.object dos webhooks customer.*. O schema público campo a campo está em Objeto customer.
O cliente não carrega organization_id no payload — o escopo já vem da autenticação. E não existe external_id: a correlação com o seu sistema é via metadata (veja Correlação com o seu sistema).

Endereço de cobrança

billing_address é um objeto estruturado. Quando não-nulo, todas as chaves são retornadas — as faltantes vêm como null.

Como um cliente nasce

Há dois caminhos, e ambos chegam no mesmo objeto.
1

Você cria pela API

POST /v1/customers com pelo menos email. Cada chamada de criação aceita um novo customer, mesmo quando outro cadastro já usa o mesmo e-mail. Se houver document, ele não pode pertencer a outro customer ativo da organização.
2

O checkout resolve sozinho no confirm

Quando o comprador confirma um checkout, a Chargefy mantém o customer fixado na sessão. Sem customer fixado, procura primeiro um cadastro ativo com o mesmo CPF/CNPJ e, depois, o cadastro ativo mais antigo com o mesmo e-mail, sempre dentro da mesma organização e do mesmo ambiente. Só cria um novo customer quando nenhum deles existe.
Para controlar sem ambiguidade qual histórico o checkout deve usar, crie a sessão passando customer. A busca por documento ou e-mail existe como resolução do checkout hospedado; ela não transforma o e-mail em chave única da API. Veja Checkout Sessions.

Criar um cliente

Só o email é obrigatório. Envie document quando precisar identificar o cliente por CPF ou CNPJ; esse campo é único por organização.
Repetir o e-mail não causa conflito. O POST /v1/customers retorna 409 customer_document_exists somente quando o CPF/CNPJ informado já pertence a outro customer ativo da organização.

Documento (CPF/CNPJ)

document aceita apenas dígitos — máscara e pontuação são normalizadas. O document_type é opcional:
O documento é a chave soberana da identidade de pagamento. Cartões e demais instrumentos salvos são organizados por essa identidade — documentos diferentes resultam em identidades de pagamento diferentes, com instrumentos salvos separados. Isso protege contra atrelar um cartão à pessoa errada. Por isso o documento entra no fluxo de cobrança, e não apenas no cadastro do cliente.

Atualizar um cliente

O update é merge: você envia só os campos que mudam, e os ausentes ficam como estão. É um POST no próprio recurso (não há PUT/PATCH na API).
A resposta direta do update não traz diff — só o objeto completo atualizado. Quem precisa saber o que mudou (e os valores anteriores) lê o webhook customer.updated, que carrega data.previous_attributes.

Correlação com o seu sistema

Não existe campo external_id no cliente. Para amarrar um customer ao ID do seu próprio sistema, use metadata — um objeto livre string → string que a Chargefy guarda e devolve em toda resposta e em todos os webhooks daquele cliente.
metadata é sempre opcional e nunca interpretado pela Chargefy — é só armazenado e ecoado de volta. Use qualquer chave que faça sentido para você (reference_id, internal_user_id, crm_account).

Métodos de pagamento

Os métodos de pagamento salvos pertencem ao cliente, mas não vêm embutidos no objeto customer. Eles são lidos por um endpoint próprio.
O cliente não expõe um campo de método de pagamento padrão. Para listar ou inspecionar os cartões e demais instrumentos de um cliente, use o recurso Métodos de pagamento.

Listar e filtrar

GET /v1/customers lista os clientes ativos da organização, do mais recente para o mais antigo, com paginação por cursor (starting_after, ending_before, limit). Há um filtro por email.
Clientes removidos não aparecem na listagem. Veja Listar customers para o contrato completo.

Remover um cliente

DELETE /v1/customers/{id} expressa “tirar de uso”. Internamente é um soft-delete: o registro permanece no banco para preservar o histórico financeiro (pagamentos, assinaturas, invoices), mas some de todos os caminhos de leitura — get, list e qualquer fluxo público.
A resposta é { "id": "cus_kmCDW4tZJsBZcEko", "object": "customer", "deleted": true }. Para quem consome a API, o cliente deixou de existir: consultá-lo depois retorna 404 e ele não aparece mais na listagem.
O histórico associado (vendas, assinaturas, invoices) continua íntegro para auditoria e conciliação. O cliente apenas fica invisível na API; nenhum registro financeiro é apagado.
Depois da remoção, aquele id deixa de estar disponível nos caminhos públicos. Você pode criar outro customer com o mesmo e-mail, assim como já pode fazer enquanto existem outros customers ativos com esse endereço.

Webhooks

Mudanças no cliente disparam eventos no payload padrão. O payload sempre carrega o customer completo em data.object; eventos de update também trazem data.previous_attributes com os valores anteriores dos campos alterados.

Autenticação e escopos

As operações exigem escopo read para GET e write para POST/DELETE.

Próximos passos

Objeto customer

Schema público completo e campos retornados.

Criar cliente (API)

Contrato do POST /v1/customers.

Métodos de pagamento

Cartões e instrumentos salvos do cliente.

Assinaturas

Como o cliente vira uma cobrança recorrente.