FGTS — 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 simulação 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 é mais curta que a do Consignado privado porque não há margem a consultar nem proposta a enviar ao empregador: o lastro já existe na conta do FGTS do titular. O que decide o valor é quantos saques-aniversário podem ser antecipados e a faixa de taxa e prazo do produto contratado.
Quando usar
- Sempre que houver um titular cadastrado, termo anexado e valor a antecipar.
- Para retomar uma operação em rascunho que precisa de correção antes do envio à aprovação.
Pré-requisitos
| Item | Origem |
|---|---|
| Termo de consentimento anexado | 2.1 Consentimento de consulta |
bankAccountId |
2.2 Conta de liquidação |
personId |
2.3 Cadastro do titular |
productId |
Fornecido pela UY3 no onboarding |
| Token válido | Autenticação |
Endpoints do fluxo principal
Passo 1 — Simular a antecipação
POST /v1/Amortization
GET /v1/Amortization/{id}
POST /v1/Amortization/Batch
Gera o plano de pagamento da antecipação: parcelas anuais, CET, IOF e custo de emissão. O corpo é o mesmo objeto de cálculo enviado na criação da operação — ver a seção Como preencher abaixo. Isso é uma vantagem prática: o corpo que você simulou é o corpo que você cria, sem tradução.
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 oferecer ao titular mais de um prazo.
| Parâmetro | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
amortizationType |
string | Sim | fgts. Nenhum outro valor descreve este produto. |
fgts |
requestedAmount |
inteiro em centavos |
Sim | Valor pretendido. | 150000 (= R$ 1.500,00) |
termInMonths |
inteiro | Sim | Prazo em meses. Corresponde aos saques-aniversário antecipados. | 24 |
apr |
número | Sim | Taxa de juros mensal, em porcentagem, dentro da faixa do produto. | 2.09 |
startDate |
data e hora |
Sim | Data base da operação, em UTC. | 2026-08-25T00:00:00Z |
paymentMonth |
enum | Não (envie) | Mês do saque-aniversário do titular. Sem ele o cronograma não se ancora no mês certo. | August |
curl --location --request POST '{{baseUrl}}/v1/Amortization' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"productId": "44444444-4444-4444-4444-444444444444",
"legalPerson": false,
"amortization": {
"amortizationType": "fgts",
"requestedAmount": 150000,
"termInMonths": 24,
"apr": 2.09,
"startDate": "2026-08-25T00:00:00Z",
"paymentMonth": "August"
}
}'
O objeto de cálculo vai dentro de amortization; a raiz exige productId e legalPerson, os dois obrigatórios no contrato. No FGTS o titular é pessoa física, então legalPerson é false. Os campos da tabela acima são os de dentro de amortization.
Há só um caminho de simulação neste produto. O Consignado privado tem dois — ofertas e amortização —, porque lá existe uma margem consignável contra a qual comparar produtos habilitados. Aqui não há margem nem vitrine a comparar: o lastro é um saldo que já existe, e o que resta é dimensionar valor e prazo. A simulação por amortização faz exatamente isso.
Saldo disponível do FGTS. A apuração do saldo antecipável do titular acontece na etapa de averbação, dentro da esteira, e não é exposta como consulta ao parceiro nesta API. Dimensione o
requestedAmountpelo valor combinado com o titular; se ele exceder o antecipável, a operação é devolvida na garantia. Ver 5. Erros e troubleshooting.
Passo 2 — 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 3 — Documentos
PUT /v1/CreditNote/{id}/upload
PUT /v1/CreditNote/{id}
Os documentos podem ir no corpo da criação (coleção uploads) ou ser anexados depois, pela rota acima. Ver a seção Documentos: uploads, e por que não há warranty em Como preencher.
PUT /v1/CreditNote/{id} corrige atributos da operação — permitido apenas nos status Draft, Revision, Disapproved e Error.
Passo 4 — 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 2. | 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 é bloqueado quando o titular excede o limite anual de contratos — cada saque-aniversário só pode ser antecipado uma vez.
Passo 5 — Assinatura eletrônica
GET /v1/CreditNote/{id}/SignUrl
Devolve as URLs de assinatura para você entregar ao titular. 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 6 — Averbação no órgão
A averbação não é uma rota que você chama: é uma etapa da esteira, exclusiva deste produto. A operação assume o status de garantia (Warranty) e aguarda o retorno do órgão, respeitando a janela de manutenção dele. 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 7 — 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 desfazimento do registro no órgão faz parte do processamento pela esteira.
| 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 titular |
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 titular" }'
Acompanhe até Canceled. Se a operação já estava averbada, o desfazimento no órgão faz parte do processamento e o status é o sinal de que terminou. Só contrate de novo para o mesmo titular depois disso — antes, o saque-aniversário pode ainda estar comprometido 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 FGTS, 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 titular. Precisa estar vinculado ao seu usuário/correspondente. | 11111111-1111-1111-1111-111111111111 |
amortization |
objeto | Sim | Objeto de cálculo do FGTS. Ver a tabela abaixo. | ver abaixo |
uploads |
lista de objetos | Sim na prática | Documentos da operação, incluindo o termo de consentimento. Sem ele a operação é devolvida na garantia. | ver abaixo |
liquidationType |
enum | Sim para este produto | Use EletronicTransfer. Invoice (boleto) não se aplica ao FGTS. |
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 |
newPersonAndAccount |
objeto | Não | Cria titular e conta na própria criação, dispensando os cadastros 2.2 e 2.3. Alternativa a personId + bankAccountId. |
ver 2.3 Cadastro do titular |
observations |
string | Não | Observação livre para a mesa de crédito. | Antecipacao saque-aniversario |
warranty |
lista de objetos | Não envie | O FGTS não usa garantia por tipo. Ver a seção sobre documentos abaixo. | — |
Objeto de cálculo — modelo FGTS
O modelo de cálculo do FGTS é o mais enxuto do catálogo. Somente os campos abaixo se aplicam.
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
amortizationType |
string | Sim | Discriminador do modelo. Valor literal fgts. Comparação sem distinção de caixa. |
fgts |
requestedAmount |
inteiro em centavos |
Sim | Valor contratado. Não tem sufixo InCents e ainda assim é em centavos. |
150000 (= R$ 1.500,00) |
termInMonths |
inteiro | Sim | Prazo em meses, correspondente aos saques-aniversário antecipados. Precisa estar na faixa de prazo do produto. | 24 |
apr |
número | Sim | Taxa de juros mensal, em porcentagem. Precisa estar na faixa do produto e ser maior que zero. | 2.09 |
startDate |
data e hora |
Sim | Data base de cálculo do contrato. | 2026-08-25T00:00:00Z |
paymentMonth |
enum | Não (envie) | Mês do saque-aniversário do titular: January a December (ou NotSet). Sem ele o cronograma não se ancora no mês do saque. |
August |
includePaymentFixedCosts |
booleano | Não | true para embutir custos fixos na parcela. |
false |
Não envie neste produto: paymentDay, absAmortizationInMonths, absInterestInMonths, daysInYear, periodicity, paymentPeriodicity, firstPaymentDate, numberOfPayments, calculationType, calculateByValueType, indexer, indexerValue, firstPaymentInterest, fiduciaryGuarantee, financeTaxExempted. Esses campos pertencem a outros modelos de cálculo e indicam objeto errado — se você precisa deles, o produto pretendido é provavelmente Consignado privado.
Documentos: uploads, e por que não há warranty
O POST /v1/CreditNote aceita documento e garantia em duas coleções. Neste produto, só uma delas é usada:
| Coleção | O que vai nela | Neste produto |
|---|---|---|
uploads |
Os arquivos da operação — termo de consentimento, instrumento assinado, comprovantes. | Use sempre. |
warranty |
Os dados de uma garantia por tipo — vínculo, bem, margem. | Não use. O lastro do FGTS é o saldo do titular, e a averbação é etapa dedicada da esteira. Não existe tipo de garantia FGTS na lista de tipos de garantia. |
Enviar warranty aqui cria uma garantia sem correspondência no produto — a rota PUT /v1/CreditNote/{id}/warranty existe no contrato, mas não se aplica ao FGTS.
| Campo | Tipo | Obrigatório | Como preencher | Exemplo |
|---|---|---|---|---|
uploads[].fileType |
enum | Sim (no item) | Tipo do documento. Authorization para o termo de consentimento; SignedContract para o instrumento já assinado; Others para o resto. |
Authorization |
uploads[].fileName |
string | Sim (no item) | Nome do arquivo, com extensão. | consentimento-fgts-000123.pdf |
uploads[].displayName |
string | Não (envie) | Rótulo exibido na mesa. Sem ele a mesa vê só o nome do arquivo. | Consentimento de consulta FGTS |
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
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": "Antecipacao saque-aniversario",
"amortization": {
"amortizationType": "fgts",
"requestedAmount": 150000,
"termInMonths": 24,
"apr": 2.09,
"startDate": "2026-08-25T00:00:00Z",
"paymentMonth": "August",
"includePaymentFixedCosts": false
},
"uploads": [
{
"fileType": "Authorization",
"fileName": "consentimento-fgts-000123.pdf",
"displayName": "Consentimento de consulta FGTS",
"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/000456",
"status": "Draft",
"productId": "33333333-3333-3333-3333-333333333333",
"personId": "11111111-1111-1111-1111-111111111111",
"amortization": {
"amortizationType": "fgts",
"requestedAmount": 150000,
"termInMonths": 24,
"apr": 2.09,
"paymentMonth": "August"
},
"warranty": [],
"uploads": [ { "fileType": "Authorization", "fileName": "consentimento-fgts-000123.pdf" } ]
}
Guarde o id: é ele que identifica a operação em todas as etapas seguintes e nas consultas. A coleção warranty volta vazia — é o esperado neste produto.
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: modelo de cálculo divergente do produto, taxa fora da faixa, prazo fora da faixa, campos de outro modelo enviados. | 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 titular não vinculado ao usuário/correspondente. | Ver 5. Erros e troubleshooting. |
404 |
Operação, titular, 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 no órgão), 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.
A partir daí, a cada ano, o saque-aniversário do titular é debitado na origem e amortiza o contrato — sem nova chamada de API sua.
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 titular — 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-fgts.txt
- Collection Postman do módulo: uy3-fgts.postman_collection.json
- Collection completa (Consignado privado + FGTS): uy3-api-completa.postman_collection.json
- Documentação consolidada para LLM: llms.txt