API Docs Início Documentação Referência de API Copiar para LLM
CaaS Massificados · Consignado privado

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

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 o uy3_montar_requisicao do 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:

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

Próxima etapa

Downloads