curl --request PATCH \
--url https://api.sandbox.z2pay.com/v1/recipients/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"companyType": "<string>",
"companyLegalName": "<string>",
"companyFoundingDate": "<string>",
"annualRevenue": 50000000000000,
"corporationType": "<string>",
"birthDate": "<string>",
"motherName": "<string>",
"profession": "<string>",
"monthlyIncome": 50000000000000,
"legalRepresentativeInfo": {
"name": "<string>",
"document": "<string>",
"email": "jsmith@example.com",
"motherName": "<string>",
"birthdate": "<string>",
"monthlyIncome": 50000000000000,
"profession": "<string>",
"phone": "<string>",
"selfDeclaredRepresentative": true
},
"pixKeyType": "<string>",
"pixKey": "<string>",
"website": "<string>",
"address": {
"address": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"referencePoint": "<string>"
},
"files": {
"identificationDocument": "<string>",
"selfie": "<string>",
"addressProof": "<string>",
"socialContract": "<string>",
"powerOfAttorney": "<string>"
}
}
'const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
email: 'jsmith@example.com',
phone: '<string>',
companyType: '<string>',
companyLegalName: '<string>',
companyFoundingDate: '<string>',
annualRevenue: 50000000000000,
corporationType: '<string>',
birthDate: '<string>',
motherName: '<string>',
profession: '<string>',
monthlyIncome: 50000000000000,
legalRepresentativeInfo: {
name: '<string>',
document: '<string>',
email: 'jsmith@example.com',
motherName: '<string>',
birthdate: '<string>',
monthlyIncome: 50000000000000,
profession: '<string>',
phone: '<string>',
selfDeclaredRepresentative: true
},
pixKeyType: '<string>',
pixKey: '<string>',
website: '<string>',
address: {
address: '<string>',
number: '<string>',
complement: '<string>',
neighborhood: '<string>',
city: '<string>',
state: '<string>',
postalCode: '<string>',
referencePoint: '<string>'
},
files: {
identificationDocument: '<string>',
selfie: '<string>',
addressProof: '<string>',
socialContract: '<string>',
powerOfAttorney: '<string>'
}
})
};
fetch('https://api.sandbox.z2pay.com/v1/recipients/{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/recipients/{id}"
payload = {
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"companyType": "<string>",
"companyLegalName": "<string>",
"companyFoundingDate": "<string>",
"annualRevenue": 50000000000000,
"corporationType": "<string>",
"birthDate": "<string>",
"motherName": "<string>",
"profession": "<string>",
"monthlyIncome": 50000000000000,
"legalRepresentativeInfo": {
"name": "<string>",
"document": "<string>",
"email": "jsmith@example.com",
"motherName": "<string>",
"birthdate": "<string>",
"monthlyIncome": 50000000000000,
"profession": "<string>",
"phone": "<string>",
"selfDeclaredRepresentative": True
},
"pixKeyType": "<string>",
"pixKey": "<string>",
"website": "<string>",
"address": {
"address": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"referencePoint": "<string>"
},
"files": {
"identificationDocument": "<string>",
"selfie": "<string>",
"addressProof": "<string>",
"socialContract": "<string>",
"powerOfAttorney": "<string>"
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"id": "rec_gk1o75xv3ioi4eoqosorz9s62",
"accountName": "Loja do Joao",
"name": "Joao da Silva",
"email": "joao.silva@example.com",
"phone": "+5511987654321",
"document": "12345678901",
"type": "individual",
"companyType": null,
"companyLegalName": null,
"companyFoundingDate": null,
"annualRevenue": null,
"corporationType": null,
"birthDate": "1990-04-12T00:00:00.000Z",
"motherName": "Maria da Silva",
"profession": "Comerciante",
"monthlyIncome": 850000,
"legalRepresentativeInfo": null,
"pixKeyType": "email",
"pixKey": "joao.silva@example.com",
"website": "https://lojadojoao.com.br",
"mainAddress": {
"id": "radr_n5t8wqz2mxk9rpf4hc7ydv3bj",
"recipientId": "rec_gk1o75xv3ioi4eoqosorz9s62",
"address": "Rua das Flores",
"number": "123",
"complement": "Apto 45",
"neighborhood": "Centro",
"city": "Sao Paulo",
"state": "SP",
"postalCode": "01001000",
"referencePoint": null,
"isMain": true,
"isActive": true
},
"defaultBankAccount": {
"id": "rba_bg9eddocogegc2pbjyexzd104",
"recipientId": "rec_gk1o75xv3ioi4eoqosorz9s62",
"status": "active",
"bankHolderName": "Joao da Silva",
"bankHolderDocument": "12345678901",
"bankHolderType": "individual",
"bankCode": "341",
"bankName": "Itau Unibanco",
"bankAgency": "1234",
"bankAccount": "567890",
"bankAccountDigit": "1",
"bankAccountType": "checking"
},
"documents": [],
"role": "seller",
"status": "active",
"splitValue": 10,
"splitType": "percentage",
"pixAntecipationDays": null,
"bankSlipAntecipationDays": null,
"creditCardAntecipationDays": null,
"approvedAt": "2025-06-20T14:30:00.000Z",
"refusedAt": null,
"analysisComplete": true,
"pendencies": [],
"pendenciesSummary": {
"open": 0,
"blocking": 0,
"warning": 0
},
"createdAt": "2025-06-18T09:15:00.000Z",
"updatedAt": "2025-06-20T14:30:00.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": "A request with this idempotency key is already being processed"
}{
"error": "Idempotency key already used with a different request body"
}Atualizar recebedor
Corrige os dados cadastrais de um recebedor que você cadastrou.
curl --request PATCH \
--url https://api.sandbox.z2pay.com/v1/recipients/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"companyType": "<string>",
"companyLegalName": "<string>",
"companyFoundingDate": "<string>",
"annualRevenue": 50000000000000,
"corporationType": "<string>",
"birthDate": "<string>",
"motherName": "<string>",
"profession": "<string>",
"monthlyIncome": 50000000000000,
"legalRepresentativeInfo": {
"name": "<string>",
"document": "<string>",
"email": "jsmith@example.com",
"motherName": "<string>",
"birthdate": "<string>",
"monthlyIncome": 50000000000000,
"profession": "<string>",
"phone": "<string>",
"selfDeclaredRepresentative": true
},
"pixKeyType": "<string>",
"pixKey": "<string>",
"website": "<string>",
"address": {
"address": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"referencePoint": "<string>"
},
"files": {
"identificationDocument": "<string>",
"selfie": "<string>",
"addressProof": "<string>",
"socialContract": "<string>",
"powerOfAttorney": "<string>"
}
}
'const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
email: 'jsmith@example.com',
phone: '<string>',
companyType: '<string>',
companyLegalName: '<string>',
companyFoundingDate: '<string>',
annualRevenue: 50000000000000,
corporationType: '<string>',
birthDate: '<string>',
motherName: '<string>',
profession: '<string>',
monthlyIncome: 50000000000000,
legalRepresentativeInfo: {
name: '<string>',
document: '<string>',
email: 'jsmith@example.com',
motherName: '<string>',
birthdate: '<string>',
monthlyIncome: 50000000000000,
profession: '<string>',
phone: '<string>',
selfDeclaredRepresentative: true
},
pixKeyType: '<string>',
pixKey: '<string>',
website: '<string>',
address: {
address: '<string>',
number: '<string>',
complement: '<string>',
neighborhood: '<string>',
city: '<string>',
state: '<string>',
postalCode: '<string>',
referencePoint: '<string>'
},
files: {
identificationDocument: '<string>',
selfie: '<string>',
addressProof: '<string>',
socialContract: '<string>',
powerOfAttorney: '<string>'
}
})
};
fetch('https://api.sandbox.z2pay.com/v1/recipients/{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/recipients/{id}"
payload = {
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"companyType": "<string>",
"companyLegalName": "<string>",
"companyFoundingDate": "<string>",
"annualRevenue": 50000000000000,
"corporationType": "<string>",
"birthDate": "<string>",
"motherName": "<string>",
"profession": "<string>",
"monthlyIncome": 50000000000000,
"legalRepresentativeInfo": {
"name": "<string>",
"document": "<string>",
"email": "jsmith@example.com",
"motherName": "<string>",
"birthdate": "<string>",
"monthlyIncome": 50000000000000,
"profession": "<string>",
"phone": "<string>",
"selfDeclaredRepresentative": True
},
"pixKeyType": "<string>",
"pixKey": "<string>",
"website": "<string>",
"address": {
"address": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"referencePoint": "<string>"
},
"files": {
"identificationDocument": "<string>",
"selfie": "<string>",
"addressProof": "<string>",
"socialContract": "<string>",
"powerOfAttorney": "<string>"
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"id": "rec_gk1o75xv3ioi4eoqosorz9s62",
"accountName": "Loja do Joao",
"name": "Joao da Silva",
"email": "joao.silva@example.com",
"phone": "+5511987654321",
"document": "12345678901",
"type": "individual",
"companyType": null,
"companyLegalName": null,
"companyFoundingDate": null,
"annualRevenue": null,
"corporationType": null,
"birthDate": "1990-04-12T00:00:00.000Z",
"motherName": "Maria da Silva",
"profession": "Comerciante",
"monthlyIncome": 850000,
"legalRepresentativeInfo": null,
"pixKeyType": "email",
"pixKey": "joao.silva@example.com",
"website": "https://lojadojoao.com.br",
"mainAddress": {
"id": "radr_n5t8wqz2mxk9rpf4hc7ydv3bj",
"recipientId": "rec_gk1o75xv3ioi4eoqosorz9s62",
"address": "Rua das Flores",
"number": "123",
"complement": "Apto 45",
"neighborhood": "Centro",
"city": "Sao Paulo",
"state": "SP",
"postalCode": "01001000",
"referencePoint": null,
"isMain": true,
"isActive": true
},
"defaultBankAccount": {
"id": "rba_bg9eddocogegc2pbjyexzd104",
"recipientId": "rec_gk1o75xv3ioi4eoqosorz9s62",
"status": "active",
"bankHolderName": "Joao da Silva",
"bankHolderDocument": "12345678901",
"bankHolderType": "individual",
"bankCode": "341",
"bankName": "Itau Unibanco",
"bankAgency": "1234",
"bankAccount": "567890",
"bankAccountDigit": "1",
"bankAccountType": "checking"
},
"documents": [],
"role": "seller",
"status": "active",
"splitValue": 10,
"splitType": "percentage",
"pixAntecipationDays": null,
"bankSlipAntecipationDays": null,
"creditCardAntecipationDays": null,
"approvedAt": "2025-06-20T14:30:00.000Z",
"refusedAt": null,
"analysisComplete": true,
"pendencies": [],
"pendenciesSummary": {
"open": 0,
"blocking": 0,
"warning": 0
},
"createdAt": "2025-06-18T09:15:00.000Z",
"updatedAt": "2025-06-20T14:30:00.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": "A request with this idempotency key is already being processed"
}{
"error": "Idempotency key already used with a different request body"
}PATCH /recipients/:id
Faz parte do recurso Recebedores — os estados do vínculo, o ciclo de aprovação
e o catálogo de pendências estão lá.
Atualização parcial: envie só os campos que quer alterar. É por aqui que se corrige o que a análise
apontou em pendencies.
403.document e kind não são alteráveis. O documento é o que identifica o recebedor na
plataforma inteira — trocá-lo seria outra pessoa. Se o documento está errado, o caminho é
cadastrar de novo com o correto e
desvincular o antigo.GET /recipients/{id} ou pelos webhooks recipient.* — ver
Ciclo de aprovação.address, bankAccount ou files cobra o cadastro completo, igual ao
POST — a diferença é que aqui a conferência olha o cadastro já
mesclado, não só o que você enviou. Quem já passou pelo formulário não precisa reenviar
documento nem selfie para corrigir um campo; mas completar um recebedor que ainda está em new
exige o pacote inteiro do type dele, listado em
Criar recebedor.legalRepresentativeInfo é gravado inteiro. Envie o objeto completo, inclusive
legalRepresentativeInfo.role — um objeto sem esse campo apaga o vínculo que estava gravado.company cujo representante está gravado sem role precisa recebê-lo para qualquer
correção nesses blocos. Como a conferência olha o cadastro mesclado, e nele não há o vínculo,
mandar address, bankAccount ou files responde 400 em legalRepresentativeInfo.role até o
objeto do representante chegar com o campo. Já a procuração enviada num KYC anterior conta como
enviada e não precisa ser reenviada — ver
Criar recebedor.phone com DDD e número, CPF do representante legal
válido, e pixKeyType e pixKey sempre em par. O que não passar volta em 400, com todos os
campos de uma vez em error.issues[].Exemplo
curl -X PATCH https://api.sandbox.z2pay.com/v1/recipients/rec_v57bi6ruyolouw3cpaq2ofy1k \
-H "x-api-key: SUA_CHAVE_DE_SANDBOX" \
-H "Content-Type: application/json" \
-d '{
"phone": "+5511912345678",
"website": "https://lojadojoao.com.br"
}'
{
"id": "rec_v57bi6ruyolouw3cpaq2ofy1k",
"name": "Loja do João ME",
"document": "12345678000190",
"email": "financeiro@lojadojoao.com.br",
"phone": "+5511912345678",
"website": "https://lojadojoao.com.br",
"role": "seller",
"status": "pending"
}
Authorizations
API Key da Credential (gerada no Backoffice)
Headers
Chave única para garantir idempotência da requisição
Path Parameters
ID do recebedor
Body
2individual, company 0 <= x <= 1000000000000000 <= x <= 100000000000000Show child attributes
Show child attributes
1024no, yes, related Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Recebedor atualizado
Identificador único do registro.
Nome da conta do recebedor.
Nome do registro.
E-mail de contato.
Telefone de contato.
Documento (CPF ou CNPJ) do titular.
Tipo do recebedor: individual (pessoa física) ou company (pessoa jurídica).
Tipo ou natureza jurídica da empresa.
Razão social da empresa.
Data de fundação da empresa (ISO 8601).
Faturamento anual do recebedor, em centavos.
Tipo societário da empresa.
Data de nascimento do recebedor (ISO 8601).
Nome da mãe do recebedor.
Profissão do recebedor.
Renda mensal do recebedor, em centavos.
Dados do representante legal da empresa.
Tipo da chave PIX (ex.: email, cpf, cnpj, phone, random).
Chave PIX do recebedor.
Site do recebedor.
Endereço principal do recebedor.
Conta bancária padrão do recebedor.
Documentos enviados para verificação (KYC) do recebedor.
Papel do recebedor no split (ex.: seller).
Situação da conta bancária. Valores: active, inactive, pending.
Valor do split do recebedor (percentual ou fixo, conforme splitType).
Tipo do valor de split do recebedor (ex.: percentage, fixed).
Prazo de antecipação para PIX, em dias.
Prazo de antecipação para boleto, em dias.
Prazo de antecipação para cartão de crédito, em dias.
Data e hora em que o recebedor foi aprovado (ISO 8601).
Data e hora em que o recebedor foi recusado (ISO 8601).
Indica se a análise cadastral terminou. false enquanto houver rodada de análise aberta para este recebedor na sua conta.
Pendências apontadas pela análise. Cada item traz code (estável, para automação), field, severity (blocking ou warning), status (open ou resolved), message e action (texto traduzido) e as datas do grupo.
Contagem das pendências abertas: open (total), blocking e warning.
Data e hora de criação do registro (ISO 8601).
Data e hora da última atualização do registro (ISO 8601).