Atualizar cliente
curl --request PATCH \
--url https://api.sandbox.z2pay.com/v1/customers/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"email": "jsmith@example.com",
"document": "<string>",
"phone": "<string>"
}
'const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
email: 'jsmith@example.com',
document: '<string>',
phone: '<string>'
})
};
fetch('https://api.sandbox.z2pay.com/v1/customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.z2pay.com/v1/customers/{id}"
payload = {
"name": "<string>",
"email": "jsmith@example.com",
"document": "<string>",
"phone": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"id": "cust_kyz6cwnbm55aax1lhxewn01o4",
"name": "Maria Oliveira",
"email": "maria.oliveira@example.com",
"type": "individual",
"document": "12345678909",
"documentType": "cpf",
"phone": "+5511987654321",
"address": {
"street": "Av. Paulista",
"number": "1578",
"complement": "Apto 142",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postalCode": "01310-200",
"country": "BR"
},
"createdAt": "2025-06-29T13:45:30.000Z",
"updatedAt": "2025-06-29T13:45:30.000Z"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"issues": [
{
"path": "status",
"message": "Status inválido. Valores aceitos: pending, waiting_payment, paid, refused, canceled, refunded"
},
{
"path": "startDate",
"message": "Data deve ser ISO 8601 com timezone (ex.: 2026-06-24T00:00:00Z)"
}
]
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Customer not found"
}
}{
"error": "A request with this idempotency key is already being processed"
}{
"error": "Idempotency key already used with a different request body"
}Clientes
Atualizar cliente
Atualiza os dados de um cliente. Só os campos enviados mudam, e o endereço é substituído por inteiro.
PATCH
/
customers
/
{id}
Atualizar cliente
curl --request PATCH \
--url https://api.sandbox.z2pay.com/v1/customers/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"email": "jsmith@example.com",
"document": "<string>",
"phone": "<string>"
}
'const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
email: 'jsmith@example.com',
document: '<string>',
phone: '<string>'
})
};
fetch('https://api.sandbox.z2pay.com/v1/customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.z2pay.com/v1/customers/{id}"
payload = {
"name": "<string>",
"email": "jsmith@example.com",
"document": "<string>",
"phone": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"id": "cust_kyz6cwnbm55aax1lhxewn01o4",
"name": "Maria Oliveira",
"email": "maria.oliveira@example.com",
"type": "individual",
"document": "12345678909",
"documentType": "cpf",
"phone": "+5511987654321",
"address": {
"street": "Av. Paulista",
"number": "1578",
"complement": "Apto 142",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postalCode": "01310-200",
"country": "BR"
},
"createdAt": "2025-06-29T13:45:30.000Z",
"updatedAt": "2025-06-29T13:45:30.000Z"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"issues": [
{
"path": "status",
"message": "Status inválido. Valores aceitos: pending, waiting_payment, paid, refused, canceled, refunded"
},
{
"path": "startDate",
"message": "Data deve ser ISO 8601 com timezone (ex.: 2026-06-24T00:00:00Z)"
}
]
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Customer not found"
}
}{
"error": "A request with this idempotency key is already being processed"
}{
"error": "Idempotency key already used with a different request body"
}PATCH /customers/:id
Faz parte do recurso Clientes — o objeto e o que o torna único estão lá.
Todos os campos são opcionais: só o que você envia muda, o resto fica como está. A resposta traz
o cliente já atualizado, e o updatedAt é sempre reescrito, mesmo que nenhum valor tenha mudado de
fato.
Apesar do verbo, o corpo é parcial. Enviar
{ "phone": "..." } altera só o telefone — nome,
e-mail e documento continuam intactos. Não existe forma de limpar um campo obrigatório: mandar
null em name, email, document, documentType, phone ou type responde 400.O endereço é substituído por inteiro, não mesclado. O objeto
address exige as oito chaves —
enviar { "address": { "city": "Rio de Janeiro" } } responde 400, e não uma atualização só da
cidade. Para mudar uma linha do endereço, envie o bloco completo com os demais valores repetidos;
as chaves que você não souber vão como null.Omitir address é diferente de enviá-lo: omitido, o endereço atual é preservado.Documento e e-mail continuam únicos na atualização. Apontar para um valor que já pertence a
outro cliente da sua conta responde 409, não
400 — é conflito com um cadastro existente. O
formato do erro está em Erros.Exemplo
curl -X PATCH https://api.sandbox.z2pay.com/v1/customers/cust_g5kcy5ueag2hatims8e5qx7g6 \
-H "x-api-key: SUA_CHAVE_DE_SANDBOX" \
-H "Content-Type: application/json" \
-d '{
"phone": "+5511988887777",
"address": {
"street": "Avenida Paulista",
"number": "1000",
"complement": null,
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postalCode": "01310100",
"country": "BR"
}
}'
{
"id": "cust_g5kcy5ueag2hatims8e5qx7g6",
"name": "Maria Silva",
"email": "maria.silva@example.com",
"type": "individual",
"documentType": "cpf",
"document": "12345678909",
"phone": "+5511988887777",
"address": {
"street": "Avenida Paulista",
"number": "1000",
"complement": null,
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postalCode": "01310100",
"country": "BR"
},
"createdAt": "2026-06-24T14:30:00.000Z",
"updatedAt": "2026-08-05T11:02:44.000Z"
}
Authorizations
API Key da Credential (gerada no Backoffice)
Headers
Chave única para garantir idempotência da requisição
Path Parameters
ID do cliente
Body
application/json
Minimum string length:
2Available options:
individual, company Minimum string length:
6Tipo do documento: cpf, cnpj ou passport. Obrigatório quando type é company; em individual, omitir assume cpf.
Available options:
cpf, cnpj, passport Minimum string length:
1Show child attributes
Show child attributes
Response
Cliente atualizado
Identificador único do registro.
Nome do registro.
E-mail de contato.
Tipo de lançamento (sale, refund, chargeback, withdrawal, fee, etc)
Documento (CPF ou CNPJ) do titular.
Tipo de documento: cpf ou cnpj.
Telefone de contato.
Endereço do cliente.
Show child attributes
Show child attributes
Data e hora de criação do registro (ISO 8601).
Data e hora da última atualização do registro (ISO 8601).