Consignado privado — Operação
Dado pessoal ou sensível deve ser mascarado em outputs, logs e exemplos. Todos os valores desta página são fictícios. Formatos de data, de valor e de taxa: Convenções de dados.
O que é
Esta é a página do fluxo principal: da consulta de margem até a operação assinada e liquidada. Ela assume que os três cadastros de 2. Pré-requisitos e cadastros já existem.
A sequência é rígida por um motivo de negócio: a margem define o teto da parcela, e a parcela define a condição que a operação pode carregar. Pular a consulta de margem produz operação que a averbação recusa.
O que não é rígido é o caminho da simulação: há dois, e os dois são válidos.
Quando usar
- Sempre que houver um trabalhador cadastrado, com autorização
Approved, e um valor a contratar. - Para retomar uma operação em rascunho que precisa de correção antes do envio à aprovação.
Pré-requisitos
| Item | Origem |
|---|---|
Autorização Approved |
2.1 Autorização de margem |
bankAccountId |
2.2 Conta de liquidação |
personId |
2.3 Cadastro do tomador |
productId |
Fornecido pela UY3 no onboarding |
| Token válido | Autenticação |
Endpoints do fluxo principal
Passo 1 — Consultar a margem livre
POST /v1/DataprevEmployee/FreeMarginQuery
GET /v1/DataprevEmployee/FreeMarginQuery
Dispara uma consulta nova de margem consignável no Crédito do Trabalhador. O POST consulta; o GET devolve o histórico de consultas já feitas, útil para não repetir chamada dentro da janela de cache.
| Parâmetro | Local | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
personId |
query | Condicional | Identificador do tomador cadastrado. Forma preferida — identificador estável e sem dado pessoal na query string. | 11111111-1111-1111-1111-111111111111 |
registrationNumber |
query | Condicional | CPF do trabalhador. Use este quando o tomador ainda não foi cadastrado — é o que permite consultar margem logo depois da autorização. | 00000000000 |
creditProductId |
query | Não (envie) | Produto contratado da consulta. Sem ele a margem volta sem o recorte do produto, e a simulação pode ofertar fora da faixa. | 33333333-3333-3333-3333-333333333333 |
curl --location --request POST '{{baseUrl}}/v1/DataprevEmployee/FreeMarginQuery?personId=11111111-1111-1111-1111-111111111111&creditProductId=33333333-3333-3333-3333-333333333333' \
--header 'Authorization: Bearer {{token}}' \
--header 'Accept: application/json'
O retorno traz o vínculo ativo do trabalhador e a margem consignável livre. É dele que saem employeeCode, o CNPJ do empregador e o valor de margem usados nas etapas seguintes. Guarde esses valores: eles reaparecem na garantia da operação.
Exige autorização Approved para o CPF. Se a consulta responder que não há autorização válida, volte a 2.1 Autorização de margem — inclusive quando você acredita que a autorização existe: é essa recusa, e não um cálculo de prazo do seu lado, que decide se ela ainda vale.
Passo 2 — Simular: dois caminhos
A partir daqui existem dois caminhos, e a escolha é sua. Eles não são etapas em sequência: são alternativas.
| Caminho A — Simulação de ofertas | Caminho B — Simulação por amortização | |
|---|---|---|
| Pergunta | Quais condições cabem na margem? | Como fica o plano desta condição? |
| Rota | POST /v1/Amortization/DataprevEmployeeOffers |
POST /v1/Amortization |
| Entrada | CPF, vínculo e uma faixa | produto, valor, taxa e prazo exatos |
| Saída | lista de ofertas elegíveis | um plano de pagamento, parcela a parcela |
| Passa pela proposta ao empregador? | Sim | Não |
| Quando usar | vitrine para o trabalhador escolher | condição já definida |
Nada impede usar os dois: ofertas para o trabalhador escolher, amortização depois para conferir o plano completo da opção escolhida.
Passo 2A — Caminho A: simulação de ofertas
POST /v1/Amortization/DataprevEmployeeOffers
Fora da Referência curada:
creditProductId,employerRegistrationNumber,productIds,productCategory,calculateByValue,requestedValue,rangePaymentAmounts,rangeNumberOfPayments,rateMode,interestRate,offerRequestId,proposalNumber,installmentCount,installmentAmountInCents,loanAmountInCents,releasedAmountInCents,iofAmountInCents,hasWarranty,fgtsBalanceInCents,fgtsRescissionPenaltyInCents,rescissionBenefitPercentage— as rotas do Crédito do Trabalhador não são publicadas na Referência de API. As tabelas desta página são a única fonte campo a campo desses payloads, e ouy3_montar_requisicaodo MCP não consegue conferi-los.
Gera as ofertas dos produtos habilitados que caibam na margem. As rotas de oferta do Crédito do Trabalhador listam apenas produtos com modelo de cálculo Price — é por isso que o consignado privado não tem modelo de cálculo próprio.
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
registrationNumber |
string | Sim | CPF do trabalhador. | 00000000000 |
employerRegistrationNumber |
string | Não (envie) | CNPJ do empregador retornado na consulta de margem. Sem ele a simulação não sabe qual vínculo usar. | 00000000000000 |
employeeCode |
string | Não (envie) | Matrícula do trabalhador no empregador, como veio da consulta de margem. | MAT-000123 |
productIds |
lista de uuid | Não | Restringe a simulação a produtos específicos. Omita para simular todos os habilitados. | ["3333...3333"] |
productCategory |
string | Não | Restringe por categoria de produto contratado. | CONSIGNADO PRIVADO |
calculateByValue |
enum | Não (envie) | Base do cálculo: Gross (valor bruto), Liquid (valor líquido liberado) ou Payment (valor da parcela). |
Liquid |
requestedValue |
inteiro em centavos |
Condicional | Valor pretendido. Obrigatório quando calculateByValue é Gross ou Liquid. |
500000 (= R$ 5.000,00) |
rangePaymentAmounts |
lista de inteiro em centavos |
Condicional | Faixa de valores de parcela. Use com calculateByValue = Payment. |
[30000, 50000] |
rangeNumberOfPayments |
lista de inteiro | Não | Faixa de prazos a simular, em número de parcelas. | [12, 24, 36] |
rateMode |
enum | Não | MinimumRate ou MaximumRate — qual extremo da faixa de taxa do produto usar. |
MinimumRate |
interestRate |
número | Não | Taxa mensal específica, em porcentagem, dentro da faixa do produto. | 2.15 |
curl --location --request POST '{{baseUrl}}/v1/Amortization/DataprevEmployeeOffers' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"registrationNumber": "00000000000",
"employerRegistrationNumber": "00000000000000",
"employeeCode": "MAT-000123",
"rangeNumberOfPayments": [12, 24, 36],
"rateMode": "MinimumRate"
}'
Cada item do retorno é uma oferta com prazo, parcela, taxa mensal e anual, CET e IOF, e traz o offerRequestId que a proposta do passo 3 referencia.
Simulação abaixo da margem total
Por padrão a simulação usa a margem total disponível do trabalhador: ela responde "qual é o máximo que cabe". Isso não serve para o caso mais comum na prática, que é o trabalhador querer um valor menor do que o máximo.
Para simular abaixo da margem total, informe o valor pretendido junto da base de cálculo:
| O que você quer | Envie |
|---|---|
| Um valor líquido específico | calculateByValue: "Liquid" + requestedValue |
| Um valor bruto específico | calculateByValue: "Gross" + requestedValue |
| Uma parcela específica (ou faixa de parcela) | calculateByValue: "Payment" + rangePaymentAmounts |
curl --location --request POST '{{baseUrl}}/v1/Amortization/DataprevEmployeeOffers' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"registrationNumber": "00000000000",
"employerRegistrationNumber": "00000000000000",
"employeeCode": "MAT-000123",
"calculateByValue": "Liquid",
"requestedValue": 300000,
"rangeNumberOfPayments": [12, 24, 36],
"rateMode": "MinimumRate"
}'
No exemplo, o trabalhador tem margem para mais, mas quer R$ 3.000,00 líquidos (300000 em centavos). As ofertas voltam dimensionadas para esse valor, e não para o teto da margem.
Por que isso importa. Simular sempre pelo teto empurra o trabalhador para o valor máximo e para a parcela máxima. Simular pelo valor que ele pediu é o que permite apresentar a oferta que ele de fato quer contratar — e reduz desistência entre a proposta e a assinatura.
O valor pedido continua limitado pela margem: pedir mais do que cabe devolve simulação sem resultado. Ver 5. Erros e troubleshooting.
Data da primeira parcela
POST /v1/DataprevEmployee/FirstPaymentDate
| Parâmetro | Local | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
productId |
query | Sim | Produto contratado. O dia de repasse dele determina o vencimento. | 33333333-3333-3333-3333-333333333333 |
startDate |
query | Sim | Data base do contrato, no formato data civil. |
2026-08-25 |
Use o retorno em firstPaymentDate, na criação da operação. Não calcule a data por conta própria: o dia de repasse é parâmetro do produto.
Passo 2B — Caminho B: simulação por amortização
POST /v1/Amortization
GET /v1/Amortization/{id}
POST /v1/Amortization/Batch
Use quando a condição já está definida — tabela negociada com o parceiro, recontratação, ou o trabalhador que já escolheu valor, taxa e prazo. Em vez de uma lista de ofertas, o retorno é um plano de pagamento completo: parcela a parcela, com CET, IOF e custo de emissão.
O objeto de cálculo é o mesmo enviado na criação da operação — as tabelas da seção Como preencher valem para os dois. Isso é uma vantagem prática: o que você simulou é o que você cria, sem tradução.
A diferença está no envelope: aqui o objeto de cálculo vai dentro de amortization, e a raiz exige productId e legalPerson. Na criação da operação, productId e personId é que ficam na raiz.
curl --location --request POST '{{baseUrl}}/v1/Amortization' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"productId": "33333333-3333-3333-3333-333333333333",
"legalPerson": false,
"amortization": {
"amortizationType": "price",
"requestedAmount": 500000,
"apr": 2.15,
"numberOfPayments": 24,
"firstPaymentDate": "2026-10-05T00:00:00Z",
"startDate": "2026-08-25T00:00:00Z",
"calculationType": "V360DiasCorridos",
"calculateByValueType": "Liquid",
"dueDateOnBusinessDays": true,
"paymentPeriodicity": { "every": 1, "periodicity": "Monthly" }
}
}'
Os três da raiz — productId, legalPerson e amortization — são obrigatórios. No consignado privado o tomador é pessoa física, então legalPerson é false.
GET /v1/Amortization/{id} recupera uma simulação já gerada, sem simular de novo. POST /v1/Amortization/Batch simula várias condições em uma chamada — útil para montar uma vitrine própria de prazos.
A parcela resultante continua tendo de caber na margem apurada no passo 1. O caminho B não passa pela proposta ao empregador, mas a averbação, mais adiante, valida a parcela do mesmo jeito.
Passo 3 — Enviar a proposta ao empregador (caminho A)
POST /v1/DataprevEmployee/OfferProposals
POST /v1/DataprevEmployee/OfferProposalsWarranty
OfferProposals envia uma proposta sem reforço de garantia FGTS. OfferProposalsWarranty recebe uma lista de propostas e aceita o bloco de reforço FGTS em cada item — use esta quando o produto contratado habilita saldo e multa rescisória do FGTS como reforço da margem.
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
offerRequestId |
inteiro | Sim | Identificador da solicitação de oferta devolvido na simulação. É o que amarra a proposta à oferta simulada. | 9876543 |
expirationDate |
data e hora |
Sim | Validade da proposta, em UTC. Depois dela o empregador não consegue mais aceitar. | 2026-09-05T23:59:59Z |
proposalNumber |
string | Não (envie) | Seu número de controle da proposta. Reaparece na garantia da operação — é o que liga as duas pontas. | PROP-000123 |
installmentCount |
inteiro | Não (envie) | Número de parcelas da oferta escolhida. | 24 |
installmentAmountInCents |
inteiro em centavos |
Não (envie) | Valor da parcela. Precisa caber na margem livre. | 28500 (= R$ 285,00) |
loanAmountInCents |
inteiro em centavos |
Não (envie) | Valor bruto contratado. | 500000 |
releasedAmountInCents |
inteiro em centavos |
Não (envie) | Valor líquido liberado ao trabalhador. | 487500 |
iofAmountInCents |
inteiro em centavos |
Não | IOF. | 12500 |
monthlyInterestRate / yearlyInterestRate |
número | Não (envie) | Taxa de juros mensal e anual, em porcentagem. | 2.15 / 29.07 |
monthlyCet / yearlyCet |
número | Não | CET mensal e anual, em porcentagem. | 2.42 / 33.25 |
contacts[].type |
enum | Sim (no item) | Tipo do contato do trabalhador para a comunicação da proposta. | Celular |
contacts[].contact |
string | Sim (no item) | O contato em si, no formato do tipo. | 11900000000 |
warranty.hasWarranty |
booleano | Não | Só em OfferProposalsWarranty. true para incluir reforço FGTS. |
true |
warranty.fgtsBalanceInCents |
inteiro em centavos |
Condicional | Saldo FGTS oferecido como reforço. Exigido quando hasWarranty é true. |
150000 |
warranty.fgtsRescissionPenaltyInCents |
inteiro em centavos |
Condicional | Multa rescisória FGTS oferecida como reforço. | 60000 |
warranty.rescissionBenefitPercentage |
número | Não | Percentual da multa rescisória considerado no reforço, em porcentagem. | 40.0 |
curl --location --request POST '{{baseUrl}}/v1/DataprevEmployee/OfferProposalsWarranty' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '[
{
"offerRequestId": 9876543,
"proposalNumber": "PROP-000123",
"expirationDate": "2026-09-05T23:59:59Z",
"installmentCount": 24,
"installmentAmountInCents": 28500,
"loanAmountInCents": 500000,
"releasedAmountInCents": 487500,
"iofAmountInCents": 12500,
"monthlyInterestRate": 2.15,
"yearlyInterestRate": 29.07,
"contacts": [ { "type": "Celular", "contact": "11900000000" } ],
"warranty": {
"hasWarranty": true,
"fgtsBalanceInCents": 150000,
"fgtsRescissionPenaltyInCents": 60000,
"rescissionBenefitPercentage": 40.0
}
}
]'
No fluxo de leilão CTPS, quando o empregador abre o link de contratação, revalide a oferta antes de criar a operação:
GET /v1/AuctionCTPS/OfferProposals/{id}/simulation
A revalidação confere o prazo de expiração, re-simula e valida a parcela contra a margem atual. Se a margem caiu desde a proposta, é aqui que isso aparece — antes de a operação existir.
Passo 4 — Criar a operação de crédito
POST /v1/CreditNote
| Parâmetro | Local | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
updateStartDate |
query | Não | true para a API reposicionar a data de início no dia da criação. |
true |
returnValue |
query | Não | true para o retorno vir com a operação completa em vez de apenas o identificador. |
true |
Corpo: ver Como preencher abaixo. A operação nasce em Draft (rascunho) ou já em ComplianceApproval, conforme a configuração do produto contratado.
Passo 5 — Garantia e documentos
PUT /v1/CreditNote/{id}/warranty
PUT /v1/CreditNote/{id}/upload
PUT /v1/CreditNote/{id}
Tanto a garantia quanto os documentos podem ir no corpo da criação (coleções warranty e uploads) ou ser anexados depois, pelas rotas acima. Ver a seção Garantia e documentos: warranty e uploads em Como preencher.
PUT /v1/CreditNote/{id} corrige atributos da operação — permitido apenas nos status Draft, Revision, Disapproved e Error.
Passo 6 — Enviar para aprovação
POST /v1/CreditNote/{id}/submitapproval
| Parâmetro | Local | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
id |
rota | Sim | Identificador da operação criada no passo 4. | 55555555-5555-5555-5555-555555555555 |
updateStartDate |
query | Não | true para reposicionar a data de início no envio. |
false |
curl --location --request POST '{{baseUrl}}/v1/CreditNote/55555555-5555-5555-5555-555555555555/submitapproval' \
--header 'Authorization: Bearer {{token}}' \
--header 'Accept: application/json'
Depois do envio, a operação não pode mais ser alterada até o fim da análise. O envio é recusado sem ao menos uma garantia informada — o caso do consignado privado, em que o produto exige lastro.
Passo 7 — Assinatura eletrônica
GET /v1/CreditNote/{id}/SignUrl
Devolve as URLs de assinatura para você entregar ao signatário. A coleta em si acontece fora da API, no provedor de assinatura. Disponível a partir do status Signatures.
Se você já tem o instrumento assinado em mãos antes disso, ele pode ser enviado como documento na criação — ver a seção sobre uploads em Como preencher.
Passo 8 — Averbação da margem
A averbação não é uma rota que você chama: é uma etapa da esteira. Depois da aprovação de crédito, a operação assume o status de garantia (Warranty ou MarginReserveApproval) e aguarda a confirmação da reserva de margem junto ao empregador. Você acompanha por consulta — ver 4. Consultas e acompanhamento.
Quando a mesa devolve a garantia para revisão (WarrantyRevision), o encerramento da revisão é feito por:
POST /v1/CreditNote/{id}/doneWarrantyRevision
Passo 9 — Cancelar, excluir ou restaurar
POST /v1/CreditNote/{id}/cancel
DELETE /v1/CreditNote/{id}
POST /v1/CreditNote/{id}/restore
O cancelamento é uma ação única, sem parâmetros de controle: você chama cancel e o tratamento da reserva de margem faz parte do processamento do cancelamento pela esteira. Não há flag para pedir ou dispensar o estorno da margem.
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
message |
corpo | Não (envie) | Motivo do cancelamento, em texto. Fica no histórico da operação e é o que a mesa lê. | Desistencia do tomador |
curl --location --request POST '{{baseUrl}}/v1/CreditNote/55555555-5555-5555-5555-555555555555/cancel' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{ "message": "Desistencia do tomador" }'
Acompanhe até Canceled. O cancelamento não é instantâneo: se a operação já estava averbada, a liberação da margem faz parte do processamento e o status é o sinal de que terminou. Só contrate de novo para o mesmo trabalhador depois de a operação estar em Canceled — antes disso a margem pode ainda estar comprometida com a operação anterior.
A exclusão (DELETE) é lógica e só é permitida nos status Draft, Revision, Disapproved e Canceled. restore desfaz a exclusão.
Como preencher
Nível da operação — corpo de POST /v1/CreditNote
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
productId |
string (uuid) | Sim | Produto contratado de consignado privado, fornecido pela UY3. Define o modelo de cálculo e as faixas de taxa e prazo. | 33333333-3333-3333-3333-333333333333 |
personId |
string (uuid) | Sim | O tomador. Precisa estar vinculado ao seu usuário/correspondente. | 11111111-1111-1111-1111-111111111111 |
amortization |
objeto | Sim | Objeto de cálculo. Ver a tabela do modelo Price abaixo. | ver abaixo |
warranty |
lista de objetos | Sim na prática | Garantia de margem. Sem ela o envio para aprovação é recusado. | ver abaixo |
uploads |
lista de objetos | Não (envie) | Documentos da operação. Ver a seção sobre warranty e uploads abaixo. |
ver abaixo |
liquidationType |
enum | Sim para este produto | Use EletronicTransfer. Invoice (boleto) não se aplica ao consignado privado. |
EletronicTransfer |
bankAccountId |
string (uuid) | Sim para este produto | Conta de destino do valor liberado. | 22222222-2222-2222-2222-222222222222 |
emissionDate |
data e hora |
Não | Data de emissão do instrumento. Omita para usar a data da criação. | 2026-08-25T00:00:00Z |
dataprevOfferCTPSRequestId |
inteiro | Condicional | offerRequestId da oferta de leilão CTPS de origem. Preencha somente quando a operação nasce do leilão. |
9876543 |
newPersonAndAccount |
objeto | Não | Cria tomador e conta na própria criação, dispensando os cadastros 2.2 e 2.3. Alternativa a personId + bankAccountId. |
ver 2.3 Cadastro do tomador |
observations |
string | Não | Observação livre para a mesa de crédito. | Proposta PROP-000123 |
insurance |
booleano | Não | true quando o produto contratado embute seguro prestamista. |
false |
isByxCreation |
booleano | Não | true quando a criação vem do canal parceiro BYX. |
false |
Objeto de cálculo — modelo Price (o do consignado privado)
O amortizationType enviado precisa coincidir com o modelo de cálculo do produto contratado. Para consignado privado, é price (ou sac, quando o produto for de amortização constante). O valor legado consignado não é aceito.
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
amortizationType |
string | Sim | Discriminador do modelo. price ou sac, conforme o produto. Comparação sem distinção de caixa. |
price |
requestedAmount |
inteiro em centavos |
Sim | Valor contratado. Não tem sufixo InCents e ainda assim é em centavos — a confusão mais comum do módulo. |
500000 (= R$ 5.000,00) |
apr |
número | Sim | Taxa de juros mensal, em porcentagem. Precisa estar na faixa do produto e ser maior que zero. | 2.15 |
numberOfPayments |
inteiro | Sim | Número de parcelas. Precisa estar na faixa de prazo do produto. | 24 |
firstPaymentDate |
data e hora |
Sim | Data da primeira parcela. Use o retorno de POST /v1/DataprevEmployee/FirstPaymentDate. |
2026-10-05T00:00:00Z |
calculationType |
enum | Sim | Critério de contagem de dias: V252DiasUteis, V252MesesX21, V360DiasCorridos, V360Meses, V365DiasCorridos, V365Meses ou Irregular. Siga o critério do produto contratado. Não é Price/SAC — esse é o amortizationType. |
V360DiasCorridos |
paymentPeriodicity |
objeto | Sim | Precisa ser { "every": 1, "periodicity": "Monthly" }. Qualquer outro valor é recusado no consignado privado. |
ver exemplo |
startDate |
data e hora |
Não (envie) | Data base de cálculo do contrato. | 2026-08-25T00:00:00Z |
calculateByValueType |
enum | Não | Gross, Liquid ou Payment — de qual valor o cálculo parte. Suportado por Price e SAC. |
Liquid |
financeTaxExempted |
booleano | Não | true para não financiar o IOF. |
false |
numberOfInterestPayments |
inteiro | Não | Parcelas somente de juros antes da amortização. | 0 |
dueDateOnBusinessDays |
booleano | Não | true para deslocar vencimentos que caiam em dia não útil. |
true |
includePaymentFixedCosts |
booleano | Não | true para embutir custos fixos na parcela. |
false |
Não envie neste produto: paymentDay, absAmortizationInMonths, absInterestInMonths, daysInYear, periodicity, termInMonths, paymentMonth, indexer, indexerValue, fiduciaryGuarantee. Esses campos pertencem a outros modelos de cálculo e indicam objeto errado.
Garantia de margem
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
warrantyType |
enum | Sim | DataprevEmployee para consignado novo; DataprevEmployeeRefinance quando a operação substitui contrato consignado vigente. |
DataprevEmployee |
dataprev_EmployeeCode |
string | Sim | Matrícula do trabalhador no empregador, como veio da consulta de margem. | MAT-000123 |
dataprev_EmployerRegistrationCode |
inteiro | Sim | Código do registro do empregador na averbadora, devolvido na consulta de margem. | 100234 |
dataprev_EmployerName |
string | Sim | Razão social do empregador. | EMPRESA EXEMPLO LTDA |
dataprev_EmployerRegistrationNumber |
string | Sim | CNPJ do empregador, só dígitos. | 00000000000000 |
dataprev_DiscountStartPeriod |
competência |
Sim | Competência do primeiro desconto em folha, com dia, mês e ano — use o primeiro dia do mês da competência. Escrever só AAAA-MM não é aceito. Ver Convenções de dados. |
2026-10-01 |
dataprev_EmployeeAdmissionDate |
data e hora |
Sim | Data de admissão do trabalhador. Compõe a identificação do vínculo. | 2022-03-01T00:00:00Z |
totalValue |
decimal em reais |
Sim | Valor total garantido pela margem. Em reais, não em centavos — ao contrário de requestedAmount, no mesmo corpo. |
6840.00 |
dataprev_OriginalMargin |
decimal em reais |
Não (envie) | Margem livre apurada na consulta. Registra a base da decisão. | 1200.00 |
dataprev_EmployeePositionCBOCode |
inteiro | Não (envie) | Código CBO do cargo do trabalhador. | 411005 |
dataprev_CtpsDigitalAuthorizationNumber |
string | Não (envie) | Número da autorização da CTPS Digital. Amarra a operação ao consentimento. | AUT-000123 |
dataprev_ProposalNumber |
string | Não (envie) | proposalNumber enviado na proposta. Amarra a operação à proposta aceita. |
PROP-000123 |
dataprev_HasWarranty |
booleano | Não | true quando há reforço de garantia FGTS. |
true |
dataprev_WarrantyFgtsBalanceInCents |
inteiro em centavos |
Condicional | Saldo FGTS de reforço. Exigido quando dataprev_HasWarranty é true. |
150000 |
dataprev_WarrantyFgtsRescissionPenaltyInCents |
inteiro em centavos |
Condicional | Multa rescisória FGTS de reforço. | 60000 |
dataprev_WarrantyRescissionBenefitPercentage |
número | Não | Percentual da multa rescisória considerado, em porcentagem. | 40.0 |
admissionDate |
data e hora |
Não | Data de admissão no nível genérico da garantia. Mantenha igual a dataprev_EmployeeAdmissionDate. |
2022-03-01T00:00:00Z |
employeeCode |
string | Não | Matrícula no nível genérico da garantia. Mantenha igual a dataprev_EmployeeCode. |
MAT-000123 |
Garantia e documentos: warranty e uploads
O POST /v1/CreditNote aceita documento em duas coleções diferentes, e elas não são intercambiáveis:
| Coleção | O que vai nela | Quando usar |
|---|---|---|
warranty |
Os dados da garantia de margem — vínculo, empregador, competência, valor. Não é arquivo. | Sempre. É o lastro da operação. |
uploads |
Os arquivos da operação — termo de autorização, instrumento assinado, comprovantes. | Sempre que houver documento a anexar. |
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
uploads[].fileType |
enum | Sim (no item) | Tipo do documento. Authorization para o termo de autorização de margem; SignedContract para o instrumento já assinado; Others para o resto. |
Authorization |
uploads[].fileName |
string | Sim (no item) | Nome do arquivo, com extensão. | autorizacao-margem.pdf |
uploads[].displayName |
string | Não (envie) | Rótulo exibido na mesa. Sem ele a mesa vê só o nome do arquivo. | Autorizacao de margem |
uploads[].documentDate |
data e hora |
Não | Data do documento. | 2026-08-25T00:00:00Z |
Documento assinado enviado em rascunho permanece disponível para a assinatura. Se você já tem o instrumento assinado — coleta presencial, assinatura em canal próprio — envie-o em uploads com fileType: "SignedContract" enquanto a operação está em Draft. Desde que a coleção não esteja vazia, o documento continua vinculado à operação e é aproveitado quando ela chega à etapa de assinatura, em vez de a esteira pedir uma coleta nova.
Duas consequências práticas:
- Não envie
uploadsvazio ([]) esperando anexar depois "por segurança". Coleção vazia não reserva lugar; ou você manda o documento, ou anexa porPUT /v1/CreditNote/{id}/uploadantes dosubmitapproval. - Não reenvie o mesmo documento em cada etapa. Ele permanece; reenviar gera duplicata no dossiê.
Exemplo de request
Corpo completo, com as três coleções — amortization, warranty e uploads:
curl --location --request POST '{{baseUrl}}/v1/CreditNote?returnValue=true' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"productId": "33333333-3333-3333-3333-333333333333",
"personId": "11111111-1111-1111-1111-111111111111",
"liquidationType": "EletronicTransfer",
"bankAccountId": "22222222-2222-2222-2222-222222222222",
"observations": "Proposta PROP-000123",
"amortization": {
"amortizationType": "price",
"requestedAmount": 500000,
"apr": 2.15,
"numberOfPayments": 24,
"firstPaymentDate": "2026-10-05T00:00:00Z",
"startDate": "2026-08-25T00:00:00Z",
"calculationType": "V360DiasCorridos",
"calculateByValueType": "Liquid",
"dueDateOnBusinessDays": true,
"paymentPeriodicity": { "every": 1, "periodicity": "Monthly" }
},
"warranty": [
{
"warrantyType": "DataprevEmployee",
"dataprev_EmployeeCode": "MAT-000123",
"dataprev_EmployerRegistrationCode": 100234,
"dataprev_EmployerName": "EMPRESA EXEMPLO LTDA",
"dataprev_EmployerRegistrationNumber": "00000000000000",
"dataprev_DiscountStartPeriod": "2026-10-01",
"dataprev_EmployeeAdmissionDate": "2022-03-01T00:00:00Z",
"dataprev_OriginalMargin": 1200.00,
"dataprev_EmployeePositionCBOCode": 411005,
"dataprev_CtpsDigitalAuthorizationNumber": "AUT-000123",
"dataprev_ProposalNumber": "PROP-000123",
"dataprev_HasWarranty": true,
"dataprev_WarrantyFgtsBalanceInCents": 150000,
"dataprev_WarrantyFgtsRescissionPenaltyInCents": 60000,
"totalValue": 6840.00
}
],
"uploads": [
{
"fileType": "Authorization",
"fileName": "autorizacao-margem.pdf",
"displayName": "Autorizacao de margem",
"documentDate": "2026-08-25T00:00:00Z"
}
]
}'
Para enviar o instrumento já assinado junto da criação, acrescente um item a uploads:
{
"fileType": "SignedContract",
"fileName": "instrumento-assinado.pdf",
"displayName": "Instrumento assinado",
"documentDate": "2026-08-25T00:00:00Z"
}
Exemplo de response
{
"id": "55555555-5555-5555-5555-555555555555",
"creditNoteNo": "2026/000123",
"status": "Draft",
"productId": "33333333-3333-3333-3333-333333333333",
"personId": "11111111-1111-1111-1111-111111111111",
"amortization": {
"amortizationType": "price",
"requestedAmount": 500000,
"apr": 2.15,
"numberOfPayments": 24,
"firstPaymentDate": "2026-10-05T00:00:00Z",
"paymentPeriodicity": { "every": 1, "periodicity": "Monthly" }
},
"warranty": [ { "warrantyType": "DataprevEmployee", "totalValue": 6840.00 } ],
"uploads": [ { "fileType": "Authorization", "fileName": "autorizacao-margem.pdf" } ]
}
Guarde o id: é ele que identifica a operação em todas as etapas seguintes e nas consultas. Repare que requestedAmount volta em centavos e totalValue em reais — a mesma regra do request.
Códigos de retorno
| Código | Significado | O que fazer |
|---|---|---|
200 |
Etapa concluída. | Siga para a etapa seguinte com o id devolvido. |
400 |
Validação de negócio ou de contrato: periodicidade diferente de mensal, taxa fora da faixa, prazo fora da faixa, modelo de cálculo divergente do produto, parcela acima da margem. | Ver 5. Erros e troubleshooting. |
401 |
Token ausente, expirado ou inválido. | Renove o token — ver Autenticação. |
403 |
Sem permissão para a ação, ou tomador não vinculado ao usuário/correspondente. | Ver 5. Erros e troubleshooting. |
404 |
Operação, tomador, conta ou produto inexistente. | Confira os identificadores das etapas anteriores. |
409 |
Ação inválida para o status atual da operação. | Consulte o status antes de repetir — ver 4. Consultas e acompanhamento. |
O que acontece depois
Depois do submitapproval, a operação percorre a esteira: análise de crédito, compliance, garantia (averbação da margem), aprovação do instrumento e coleta de assinaturas. Confirmada a averbação e concluídas as assinaturas, a operação entra em liquidação e o valor é transferido por Pix ou TED para a conta cadastrada.
Cada uma dessas transições é um evento observável. O ciclo completo, evento por evento, está em 4.1 Eventos e notificações.
Antes desta etapa
- 2.3 Cadastro do tomador — o
personIde obankAccountIdconsumidos aqui. - 2. Pré-requisitos e cadastros — índice dos três cadastros e a ordem entre eles.
Próxima etapa
- 4. Consultas e acompanhamento — status, parcelas e comprovante de transferência.
- 4.1 Eventos e notificações — o ciclo de vida completo, evento por evento.
- 5. Erros e troubleshooting — quando alguma etapa acima falhar.
Downloads
- Contexto para LLM deste módulo: llms-consignado-privado.txt
- Collection Postman do módulo: uy3-consignado-privado.postman_collection.json
- Collection completa (Consignado privado + FGTS): uy3-api-completa.postman_collection.json
- Documentação consolidada para LLM: llms.txt