POST /v1/accounts/pj
Escopo: subaccounts:create
Idempotency-Key: obrigatório
201 Created.
Corpo
Campos obrigatórios
| Campo | Tipo | Regra |
|---|---|---|
cnpj | string | exatamente 14 dígitos, sem pontuação, com dígito verificador válido |
businessName | string | razão social, 1 a 255 caracteres |
email | string | e-mail válido |
password | string | 8 a 128 caracteres |
phone | string | formato E.164 |
businessType | enum | MEI, EI, EIRELI, LTDA, SA ou OUTROS |
Campos opcionais
| Campo | Tipo | Regra |
|---|---|---|
tradeName | string | nome fantasia, até 255 caracteres |
foundingDate | string | YYYY-MM-DD, precisa ser data passada |
address | objeto | mesmo formato do onboarding PF |
declaredAnnualBilling | enum | faixa de faturamento anual, ver abaixo |
cnaeCode | string | até 20 caracteres |
legalRepresentatives | array | 1 a 3 representantes, ver abaixo |
Campos desconhecidos são rejeitados com
422 invalid_request, inclusive dentro
dos objetos aninhados.declaredAnnualBilling
UP_TO_FIFTY_THOUSAND
MORE_THAN_FIFTY_THOUSAND_UP_TO_ONE_HUNDRED_THOUSAND
MORE_THAN_ONE_HUNDRED_THOUSAND_UP_TO_TWO_HUNDRED_AND_FIFTY_THOUSAND
MORE_THAN_TWO_HUNDRED_AND_FIFTY_THOUSAND_UP_TO_FIVE_HUNDRED_THOUSAND
MORE_THAN_FIVE_HUNDRED_THOUSAND_UP_TO_ONE_MILLION
MORE_THAN_ONE_MILLION_UP_TO_TWO_MILLION_AND_FIVE_HUNDRED_THOUSAND
MORE_THAN_TWO_MILLION_AND_FIVE_HUNDRED_THOUSAND_UP_TO_FIVE_MILLION
MORE_THAN_FIVE_MILLION_UP_TO_TEN_MILLION
MORE_THAN_TEN_MILLION_UP_TO_TWENTY_FIVE_MILLION
MORE_THAN_TWENTY_FIVE_MILLION_UP_TO_FIFTY_MILLION
MORE_THAN_FIFTY_MILLION_UP_TO_ONE_HUNDRED_MILLION
MORE_THAN_ONE_HUNDRED_MILLION_UP_TO_TWO_HUNDRED_AND_FIFTY_MILLION
MORE_THAN_TWO_HUNDRED_AND_FIFTY_MILLION_UP_TO_FIVE_HUNDRED_MILLION
MORE_THAN_FIVE_HUNDRED_MILLION
EXEMPT_COMPANY
INACTIVE_COMPANY
legalRepresentatives
De 1 a 3 objetos. Dentro de cada um:
| Campo | Obrigatório | Regra |
|---|---|---|
cpf | sim | 11 dígitos com dígito verificador válido |
name | sim | 1 a 255 caracteres |
birthDate | sim | YYYY-MM-DD |
email | não | e-mail válido |
phone | não | formato E.164 |
motherName | não | até 255 caracteres |
declaredIncome | não | mesmas faixas do onboarding PF |
pep | não | { "level": "SELF" | "RELATED" | "NONE" } |
address | não | mesmo formato de endereço |
occupation | não | OCP0001 empresário, OCP0002 funcionário, OCP0003 outros |
legalDocumentsUrl | não | URL do documento societário |
Exemplo
curl -X POST https://api.prismapay.com.br/v1/accounts/pj \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 3d5c8a12-2b7f-4d61-9f0a-1c8e7b4a2d90" \
-H "X-Api-Key: pk_live_seu_key_id" \
-H "X-Timestamp: 1767000000" \
-H "X-Signature: assinatura_hex" \
-d '{
"cnpj": "11222333000181",
"businessName": "Prisma Tecnologia Ltda",
"tradeName": "Prisma Tecnologia",
"email": "financeiro@example.com",
"password": "uma-senha-forte",
"phone": "+5511999999999",
"businessType": "LTDA",
"foundingDate": "2020-03-15",
"cnaeCode": "6201500",
"declaredAnnualBilling": "MORE_THAN_FIVE_HUNDRED_THOUSAND_UP_TO_ONE_MILLION",
"legalRepresentatives": [
{
"cpf": "52998224725",
"name": "Maria da Silva",
"birthDate": "1990-05-20",
"email": "maria@example.com",
"occupation": "OCP0001"
}
]
}'
Resposta
{
"id": "4b7c2a11-1f56-4e63-a8c1-81d2cb1b31c8",
"type": "pj",
"status": "pending",
"cnpjMasked": "11.222.333/0001-**",
"businessName": "Prisma Tecnologia Ltda",
"tradeName": "Prisma Tecnologia",
"foundingDate": "2020-03-15",
"externalId": null,
"createdAt": "2026-09-03T12:00:00.000Z",
"onboardingUrl": "https://onboarding.example.com/sessao/..."
}
A resposta PJ usa
id, não accountId. É o mesmo identificador que você passa
em /v1/accounts/{accountId}/... depois.Erros comuns
| Situação | Resposta |
|---|---|
| CNPJ com dígito verificador inválido | 422 invalid_request com details apontando cnpj |
| Já existe conta com esse CNPJ | 409 cnpj_already_registered |
| Já existe conta com esse telefone | 409 phone_already_registered |
businessType fora da lista | 422 invalid_request |
| Mais de 3 representantes | 422 invalid_request |
foundingDate no futuro | 422 invalid_request |
Depois da criação
O fluxo é o mesmo do PF: leve o responsável aoonboardingUrl e acompanhe
GET /v1/accounts/{accountId}/status até approved ou rejected.