> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Refinance one or more active contracts into a new one

> Proxies realizar-refinanciamento-trabalhador (Manual 008 v1.14 §3.1): quits every contract named in listaContratosQuitadosTrabalhador and averbates the new contract that replaces them, reserving margin until the refinanciamento closes. Every quitado contract must be held by this gateway for the authenticated tenant; anything else is 404 before the rail is called — whether that contract is currently ACTIVE on the government registry is left to the rail's own judgment. With garantia (temGarantias=true), the refinanciamento may only relate 1:1 (regra FR, at most one quitado contract) and must inform at least one of the three garantia values (regra FI). X-Idempotency is required.



## OpenAPI

````yaml /pt/openapi/v3-current/consignado.yaml post /v1/consignado/contracts/{numero_contrato}/refinanciamento
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    OpenAPI 3.1 surface for Lerian Consignado — Dataprev. The API covers tenant
    credentials and rail configuration, worker margin, loan auctions and bids,
    contract registration and lifecycle, B3 instrument codes, disbursement
    confirmation, portability, refinancing, renegotiation, FGTS guarantees,
    reconciliation, funds, assignments, throughput, and event subscriptions.
  license:
    name: Lerian Studio General License
  title: Lerian Consignado API
  version: v1.0.0
servers:
  - url: https://br-consignado-gw.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Per-tenant Dataprev credential custody and public rail configuration
      (upload, status, rotation, revoke, requester code, and worker portal base
      URL)
    name: Credentials
  - description: >-
      Per-tenant streaming-hub subscription control-plane (list, create, get,
      rotate, revoke, and test delivery)
    name: Subscriptions
  - description: >-
      Dataprev payroll-rail surface: FGTS balance and authorization reads, the
      FGTS guarantee execution, contract suspension, reactivation and term
      changes, the rail's own contract documents, and the on-demand reads of
      leilão solicitações, escriturações, repasses and employment terminations
    name: Consignado Rail
  - description: >-
      Synchronous rail command surface: the operations a bancarizador without
      the lender drives over HTTP.
    name: Consignado Rail Commands
  - description: >-
      Gateway-owned disbursement confirmation: a client bank recording money it
      has ALREADY paid to a worker. It crosses no government boundary and
      proxies no Dataprev operation.
    name: Consignado Disbursement
  - description: >-
      Per-tenant self-service outbound Dataprev rail throughput: read and set
      this tenant's own requests-per-second, including a deliberate pause at
      zero
    name: Consignado Throughput
  - description: >-
      The B3 instrument code (Código IF) of an averbado contract: informed once
      by the bancarizador after B3 registers the CCB, and read back
    name: Consignado Registro B3
paths:
  /v1/consignado/contracts/{numero_contrato}/refinanciamento:
    post:
      tags:
        - Consignado Rail
      summary: Refinance one or more active contracts into a new one
      description: >-
        Proxies realizar-refinanciamento-trabalhador (Manual 008 v1.14 §3.1):
        quits every contract named in listaContratosQuitadosTrabalhador and
        averbates the new contract that replaces them, reserving margin until
        the refinanciamento closes. Every quitado contract must be held by this
        gateway for the authenticated tenant; anything else is 404 before the
        rail is called — whether that contract is currently ACTIVE on the
        government registry is left to the rail's own judgment. With garantia
        (temGarantias=true), the refinanciamento may only relate 1:1 (regra FR,
        at most one quitado contract) and must inform at least one of the three
        garantia values (regra FI). X-Idempotency is required.
      operationId: realizarConsignadoRefinanciamento
      parameters:
        - description: >-
            The NEW contract number, minted by the CLIENT — the rail mints
            nothing here: 2 to 15 letters or digits.
          in: path
          name: numero_contrato
          required: true
          schema:
            description: >-
              The NEW contract number, minted by the CLIENT — the rail mints
              nothing here: 2 to 15 letters or digits.
            examples:
              - 99999999999ARN1
            maxLength: 15
            minLength: 2
            pattern: ^[A-Za-z0-9]+$
            type: string
        - description: >-
            Client-chosen idempotency key. REQUIRED: an absent key is 422, never
            a generated default.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Client-chosen idempotency key. REQUIRED: an absent key is 422,
              never a generated default.
            examples:
              - idem-refinanciamento-0001
            maxLength: 255
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefinanciamentoBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefinanciamentoOperationResponse'
          description: OK
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            A conflict with the durable command this contract already carries.
            RAIL_COMMAND_CLAIM_CONFLICT means the contract already holds a
            command of this kind under another idempotency key; follow that
            claim. RAIL_COMMAND_PAYLOAD_MISMATCH means this key already holds a
            different command; resend the original under it, or use a new key
            for a different command. RAIL_COMMAND_ALREADY_REFUSED means the
            command under this key ended refused (by Dataprev, or by the gateway
            when its call never left or M005 showed it never ran), so a
            corrected request needs a new key. RAIL_COMMAND_OUTCOME_UNRESOLVED
            means the command under this key has no known outcome yet; read GET
            /v1/consignado/rail-commands and never send it under a new key.
            RAIL_COMMAND_ANSWER_NOT_RETAINED means the command committed but its
            original answer was not kept, so read the contract's current state
            instead of resending. A 409 carrying CLT-0007 and the detail "an
            identical request is already in flight" is not definitive: the first
            call is still running, so hold this idempotency key and retry under
            it. DATAPREV_CREDENTIAL_REQUIRED means this tenant has no Dataprev
            credential in custody, so the gateway cannot act for it on the rail
            at all; it is definitive until the credential is provisioned, and
            retrying before that never succeeds. DATAPREV_CREDENTIAL_REVOKED
            means the tenant's credentials were revoked; it holds until a
            complete upload (PUT /v1/credentials/dataprev with the certificate
            and the OAuth client together) opens a new custody.
            DATAPREV_CREDENTIAL_REJECTED means Dataprev refused its OAuth client
            credentials, so correct them in custody before retrying.
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Request Entity Too Large
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The request cannot be processed as sent.
            FIRST_DEDUCTION_BEFORE_COMPETENCIA means dataPrimeiroDesconto falls
            in a month before competenciaInicioDesconto;
            DECLARED_DATES_OUT_OF_ORDER means the declared dates break an order
            the booking requires (see dataInicioContrato and
            dataPrimeiroDesconto); correct the dates and resend.
            BOOKING_FIELD_INVALID means the lender cannot read a booking field
            (see loan_product_version, margin_snapshot, numeroContrato).
            DECLARED_TERMS_INCONSISTENT means the declared amounts or rates
            contradict each other (see valorEmprestimo and valorTaxaMensal);
            correct the terms. MARGIN_SNAPSHOT_INCONSISTENT means
            margin_snapshot does not hold valorParcela; read the margin again or
            re-price. CONTRACT_NOT_BOOKABLE means the lender cannot book this
            contract at all (see numeroParcelas and expected_disbursement_date);
            send it without the booking block. RATE_OUTSIDE_PRODUCT_RANGE means
            valorTaxaMensal times 12 falls outside the annual rate range of the
            loan_product_version the Lender published.
            VERSION_ADMITS_NO_PESSOA_FISICA means the Lender published the
            loan_product_version as admitting no pessoaFisica.
            LOAN_PRODUCT_VERSION_UNKNOWN means the tenant has Lender versions
            and this gateway has not received this loan_product_version from the
            Lender; a version just created may still be on its way (resend
            later), one created before this gateway was linked to the tenant
            never arrives (create a new version in the Lender). A tenant without
            the Lender is not checked. Each detail names the rule; the booking
            codes apply only with the booking block, and the rail was not
            called.
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Too Many Requests
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            OUTCOME_UNKNOWN: Dataprev answered with a code that settles the
            command neither way, did not answer in time, or answered without its
            envelope, so it is parked with its outcome unknown; never resend it
            under a new key, read GET /v1/consignado/rail-commands.
            DATAPREV_UNAVAILABLE: Dataprev could not take the command. When
            nothing executed (an OZ competência turnover, or a call that never
            left the gateway) the command closed refused and the detail says so:
            a resend takes a new X-Idempotency key.
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    RefinanciamentoBody:
      additionalProperties: false
      properties:
        booking:
          $ref: '#/components/schemas/RefinanciamentoBooking'
          description: >-
            OPTIONAL. The block the Lerian lender books the new contract with,
            never sent to Dataprev: all of its members or the object omitted.
            With it, competenciaInicioDesconto is required. The lender books
            valorPago plus valorTroco as released, so valorEmprestimo less
            valorIOF and origination_fee_amount must equal that sum. A booking
            the lender would refuse answers 422 with the averbação's codes
            before the rail. Present, consignado.refinanciamento.efetivado
            carries novo_contrato; omitted, the new contract is rail-only and no
            lender booking follows.
        cnpjOperador:
          description: >-
            CNPJ of the operator (correspondent, cooperado or similar)
            responsible for the operation. Optional, Texto since v1.7.
          examples:
            - '12345678000199'
          maxLength: 14
          type: string
        codigoInscricaoEmpregador:
          description: 'Employer inscription type: 1 CNPJ, 2 CPF.'
          examples:
            - '1'
          pattern: ^[12]$
          type: string
        competenciaInicioDesconto:
          description: >-
            Payroll competência of the first deduction, yyyyMM. Optional without
            the booking block, required with it.
          examples:
            - '202507'
          pattern: ^[0-9]{6}$
          type: string
        cpfTrabalhador:
          description: Worker CPF, 11 digits.
          examples:
            - '99999999999'
          maxLength: 11
          minLength: 11
          pattern: ^[0-9]{11}$
          type: string
        dataFimContrato:
          description: End date of the new consignado contract, RFC 3339 UTC.
          examples:
            - '2027-07-10T00:00:00Z'
          format: date-time
          type: string
        dataInicioContrato:
          description: Start date of the new consignado contract, RFC 3339 UTC.
          examples:
            - '2025-06-11T00:00:00Z'
          format: date-time
          type: string
        dataPrimeiroDesconto:
          description: Date of the first payroll deduction, RFC 3339 UTC.
          examples:
            - '2025-07-10T00:00:00Z'
          format: date-time
          type: string
        listaContratosQuitadosTrabalhador:
          description: >-
            Every contract this refinanciamento quits. Each must be held by this
            gateway for the authenticated tenant.
          examples:
            - - numeroContrato: 99999999999AR1
          items:
            $ref: '#/components/schemas/RefinanciamentoContratoQuitado'
          minItems: 1
          type:
            - array
            - 'null'
        matricula:
          description: Matrícula assigned to the worker by the employer.
          examples:
            - 99999999999-A
          maxLength: 30
          type: string
        nomeTrabalhador:
          description: Worker's full name.
          examples:
            - Trabalhador 99999999999
          maxLength: 90
          type: string
        numeroInscricaoEmpregador:
          description: >-
            Employer inscription number, Texto since Manual 008 v1.7 (the
            mirrored Swagger still types this int64).
          examples:
            - '99999999999881'
          maxLength: 14
          type: string
        numeroParcelas:
          description: >-
            Number of instalments of the new contract, capped at the manual's
            own 3-digit field width (Manual 008 v1.14 §3.1.1 p.11).
          examples:
            - 24
          format: int64
          maximum: 999
          minimum: 1
          type: integer
        percVerbaRescisoriaGarantia:
          description: Percentage of severance pay pledged as collateral, 0 to 35%.
          examples:
            - '15'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        temGarantias:
          description: >-
            Whether FGTS collateral secures the new contract. When true, exactly
            one contract may be named in lista_contratos_quitados_trabalhador
            (regra FR) and at least one of the three garantia values below must
            be informed (regra FI). False with any of them is refused 422 before
            the rail is called: omit the values when there is no FGTS
            collateral, never send 0.
          examples:
            - true
          type: boolean
        valorCETAnual:
          description: valorCETAnual — Custo Efetivo Total, annual percent decimal string.
          examples:
            - '7.26'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorCETMensal:
          description: >-
            valorCETMensal — Custo Efetivo Total, monthly percent decimal
            string.
          examples:
            - '0.59'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorEmprestimo:
          description: >-
            valorEmprestimo — the new contract's principal (decimal string,
            BRL).
          examples:
            - '9018.54'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorIOF:
          description: valorIOF — the IOF charged, in reais (decimal string, BRL).
          examples:
            - '94.95'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorMultaRescisoriaGarantiaFgts:
          description: >-
            FGTS termination-fine collateral, up to 100% of the 40% fine
            (decimal string, BRL). Optional individually.
          examples:
            - '300.00'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorPago:
          description: >-
            valorPago — settlement amount paid to quit the original contracts
            (decimal string, BRL).
          examples:
            - '6114.50'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorParcela:
          description: >-
            valorParcela — the new contract's instalment amount (decimal string,
            BRL).
          examples:
            - '400.00'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorSaldoDisponivelGarantiaFgts:
          description: >-
            FGTS balance pledged as collateral (decimal string, BRL). Optional
            individually; at least one of the three garantia values is required
            when temGarantias is true.
          examples:
            - '600.00'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorTaxaAnual:
          description: valorTaxaAnual — annual interest rate, percent decimal string.
          examples:
            - '6.17'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorTaxaMensal:
          description: valorTaxaMensal — monthly interest rate, percent decimal string.
          examples:
            - '0.5'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorTroco:
          description: >-
            valorTroco — amount delivered to the client after settling the
            quitados contracts (decimal string, BRL).
          examples:
            - '2809.09'
          maxLength: 13
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
      required:
        - cpfTrabalhador
        - matricula
        - nomeTrabalhador
        - codigoInscricaoEmpregador
        - numeroInscricaoEmpregador
        - dataInicioContrato
        - dataFimContrato
        - dataPrimeiroDesconto
        - numeroParcelas
        - valorEmprestimo
        - valorParcela
        - valorIOF
        - valorPago
        - valorTroco
        - valorTaxaAnual
        - valorTaxaMensal
        - valorCETAnual
        - valorCETMensal
        - listaContratosQuitadosTrabalhador
        - temGarantias
      type: object
    RefinanciamentoOperationResponse:
      additionalProperties: false
      properties:
        competenciaInicioDesconto:
          description: Payroll competência of the first deduction, yyyyMM.
          examples:
            - '202507'
          type: string
        hashOperacao:
          description: The rail's own identity for this operation.
          examples:
            - '34006311'
          type: string
        listaContratosQuitadosTrabalhador:
          description: >-
            Every contract the rail confirmed as quitado by this
            refinanciamento.
          examples:
            - - numeroContrato: 99999999999AR1
          items:
            $ref: '#/components/schemas/RefinanciamentoContratoQuitado'
          type:
            - array
            - 'null'
        mensagem:
          description: The rail's own message.
          examples:
            - Refinanciamento realizado com sucesso
          type: string
        numeroContrato:
          description: The new contract's number, as confirmed by the rail.
          examples:
            - 99999999999ARN1
          type: string
      required:
        - mensagem
        - numeroContrato
        - competenciaInicioDesconto
        - hashOperacao
        - listaContratosQuitadosTrabalhador
      type: object
    Detail:
      additionalProperties: true
      properties:
        code:
          description: >-
            Stable, machine-readable product error code. One of the enumerated
            values: the CLT-NNNN catalog codes for the general refusal classes;
            the named command conflicts, which a client branches on to tell one
            conflict from another; the four terminal refusals
            IDEMPOTENCY_STATE_UNRECOGNISED, IDEMPOTENCY_RECORD_UNREADABLE,
            IDEMPOTENCY_OUTCOME_UNRECORDED and IDEMPOTENCY_REPLAY_UNAVAILABLE
            (422), which tell the client to reconcile the original request and
            never retry under a new key; IDEMPOTENCY_KEY_REUSE (422): the key is
            spent on a different request, so send a new key; the codes a single
            surface answers, named after it (FUNDO_*, REGISTRO_B3_*, ...); and
            the 5xx codes naming an upstream (DATAPREV_*, STREAMING_HUB_*,
            TENANT_MANAGER_*, the Access Manager's AUT-0033 and AUT-1021) or an
            unknown outcome, whose detail is client-readable; and the Access
            Manager's AUT-1022 (403): the partner credential holds more than one
            originador, so name it in the path.
          enum:
            - AUT-0033
            - AUT-1021
            - AUT-1022
            - AVERBACAO_ARTIFACT_CONFLICT
            - AVERBACAO_CLAIM_CONFLICT
            - AVERBACAO_DOCUMENTATION_CONFLICT
            - AVERBACAO_EXCLUDED
            - AVERBACAO_HELD_BY_ANOTHER_SENDER
            - AVERBACAO_NOT_ACCEPTED
            - AVERBACAO_OPERATIONS_INTERNAL
            - AVERBACAO_OPERATIONS_INVALID_CURSOR
            - AVERBACAO_OPERATIONS_INVALID_QUERY
            - AVERBACAO_OPERATIONS_UNKNOWN_STATUS
            - AVERBACAO_OPERATION_NOT_FOUND
            - BID_NO_PROPOSTA_LEFT
            - BID_ORIGINADOR_INACTIVE
            - BID_ORIGINADOR_UNKNOWN
            - BID_PROPOSAL_SLOT_TAKEN
            - BID_SOLICITACAO_TAKEN
            - BID_SOLICITACAO_UNKNOWN
            - BID_SUBMISSIONS_INTERNAL
            - BID_SUBMISSIONS_INVALID_CURSOR
            - BID_SUBMISSIONS_UNKNOWN_SITUATION
            - BOOKING_FIELD_INVALID
            - CEDED_CREDIT_INTERNAL
            - CEDED_CREDIT_NO_FUND_ENTITLEMENT
            - CEDED_CREDIT_UNAVAILABLE
            - CLT-0001
            - CLT-0002
            - CLT-0003
            - CLT-0004
            - CLT-0005
            - CLT-0006
            - CLT-0007
            - CLT-0008
            - CLT-0009
            - CLT-0010
            - CLT-0011
            - CONTRACT_ALREADY_REGISTERED
            - CONTRACT_NOT_BOOKABLE
            - CURSOR_EXPIRED
            - CURSOR_FENCE_MISMATCH
            - DATAPREV_CREDENTIAL_REJECTED
            - DATAPREV_CREDENTIAL_REQUIRED
            - DATAPREV_CREDENTIAL_REVOKED
            - DATAPREV_INVALID_RESPONSE
            - DATAPREV_TIMEOUT
            - DATAPREV_UNAVAILABLE
            - DECLARED_DATES_OUT_OF_ORDER
            - DECLARED_TERMS_INCONSISTENT
            - DISBURSEMENT_CONFIRMATIONS_INTERNAL
            - DISBURSEMENT_CONFIRMATIONS_INVALID_CURSOR
            - DISBURSEMENT_PAYMENT_CONFLICT
            - EVENT_DELIVERY_INTERNAL
            - EXCLUSION_AUTHORITY_CONFLICT
            - EXCLUSION_BOOKING_IDENTITY_INCOMPLETE
            - EXCLUSION_DOCUMENTATION_UNDERWAY
            - EXCLUSION_OPERATIONS_INTERNAL
            - EXCLUSION_OPERATIONS_INVALID_CURSOR
            - EXCLUSION_OPERATIONS_INVALID_QUERY
            - EXCLUSION_OPERATIONS_UNKNOWN_STATUS
            - EXCLUSION_OPERATION_NOT_FOUND
            - EXCLUSION_RENEGOTIATION_UNDERWAY
            - FGTS_EXECUTION_ALREADY_REFUSED
            - FGTS_EXECUTION_CONTRACT_TAKEN
            - FGTS_EXECUTION_OUTCOME_UNRESOLVED
            - FGTS_EXECUTION_PAYLOAD_MISMATCH
            - FIRST_DEDUCTION_BEFORE_COMPETENCIA
            - FORMALIZATION_DEADLINE_EXCEEDED
            - FUNDO_CNPJ_CONFLICT
            - FUNDO_DEACTIVATED
            - FUNDO_INTERNAL
            - FUNDO_INVALID_ID
            - FUNDO_INVALID_INPUT
            - FUNDO_NOT_FOUND
            - FUNDO_NOT_REGISTERED
            - FUNDO_REF_CONFLICT
            - FUNDO_UNAVAILABLE
            - HELD_REPASSE_MONTH_CLOSED
            - HELD_REPASSE_MONTH_MISMATCH
            - HELD_REPASSE_NOT_FOUND
            - HELD_REPASSE_UNATTRIBUTABLE
            - IDEMPOTENCY_KEY_REUSE
            - IDEMPOTENCY_OUTCOME_UNRECORDED
            - IDEMPOTENCY_RECORD_UNREADABLE
            - IDEMPOTENCY_REPLAY_UNAVAILABLE
            - IDEMPOTENCY_STATE_UNRECOGNISED
            - INVALID_CONTRACT_NUMBER
            - INVALID_CURSOR
            - INVALID_EVENTS_INVALID_CURSOR
            - INVALID_EVENT_NOT_FOUND
            - INVALID_EVENT_NOT_REQUEUEABLE
            - INVALID_PAGE_LIMIT
            - INVENTORY_UNAVAILABLE
            - LOAN_PRODUCT_VERSION_UNKNOWN
            - MARGIN_SNAPSHOT_INCONSISTENT
            - MATRICULA_DIFFERS_FROM_PROPOSAL
            - ORIGINADOR_INTERNAL
            - ORIGINADOR_INVALID_ID
            - ORIGINADOR_INVALID_INPUT
            - ORIGINADOR_NOT_FOUND
            - ORIGINADOR_REF_CONFLICT
            - ORIGINADOR_UNAVAILABLE
            - OUTCOME_UNKNOWN
            - PORTABILIDADE_WINDOW_EXPIRED
            - RAIL_COMMANDS_INTERNAL
            - RAIL_COMMANDS_INVALID_CURSOR
            - RAIL_COMMANDS_TENANT_REQUIRED
            - RAIL_COMMANDS_UNKNOWN_FILTER
            - RAIL_COMMAND_ALREADY_REFUSED
            - RAIL_COMMAND_ANSWER_NOT_RETAINED
            - RAIL_COMMAND_CLAIM_CONFLICT
            - RAIL_COMMAND_CLOSE_CONTRADICTED
            - RAIL_COMMAND_NOT_CLOSEABLE
            - RAIL_COMMAND_OUTCOME_UNRESOLVED
            - RAIL_COMMAND_PAYLOAD_MISMATCH
            - RATE_OUTSIDE_PRODUCT_RANGE
            - REGISTRATION_NOT_FOUND
            - REGISTRO_B3_AVERBACAO_NAO_CONFIRMADA
            - REGISTRO_B3_CONTRATO_NAO_ENCONTRADO
            - REGISTRO_B3_DATA_REGISTRO_INVALIDA
            - REGISTRO_B3_INTERNAL
            - REGISTRO_B3_JA_INFORMADO
            - REGISTRO_B3_NAO_INFORMADO
            - REGISTRO_B3_UNAVAILABLE
            - REGISTRO_B3_UNWIRED
            - RENEGOTIATION_EXCLUSION_UNDERWAY
            - REPASSE_EXPECTATIONS_INTERNAL
            - REPASSE_EXPECTATIONS_INVALID_CURSOR
            - REPASSE_EXPECTATIONS_UNKNOWN_SITUATION
            - REVERSAO_WINDOW_EXPIRED
            - SALDO_DEVEDOR_INTERNAL
            - SALDO_DEVEDOR_INVALID_CURSOR
            - SALDO_DEVEDOR_NOT_FOUND
            - SALDO_DEVEDOR_TENANT_REQUIRED
            - SALDO_DEVEDOR_UNAVAILABLE
            - STREAMING_HUB_TIMEOUT
            - STREAMING_HUB_UNAVAILABLE
            - TENANT_MANAGER_TIMEOUT
            - TENANT_MANAGER_UNAVAILABLE
            - THROUGHPUT_HISTORY_INTERNAL
            - THROUGHPUT_HISTORY_INVALID_CURSOR
            - THROUGHPUT_HISTORY_TENANT_REQUIRED
            - THROUGHPUT_HISTORY_UNAVAILABLE
            - THROUGH_REQUIRED
            - UNKNOWN_QUERY_PARAMETER
            - VERSION_ADMITS_NO_PESSOA_FISICA
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    RefinanciamentoBooking:
      additionalProperties: false
      properties:
        expected_disbursement_date:
          description: >-
            Expected disbursement date, YYYY-MM-DD: not before
            dataInicioContrato and before dataPrimeiroDesconto.
          examples:
            - '2026-11-03'
          maxLength: 10
          type: string
        formalization_deadline:
          description: >-
            UTC instant by which the new contract is formalized, as the Lender
            books it.
          examples:
            - '2026-11-10T12:00:00Z'
          format: date-time
          type: string
        loan_product_version:
          description: >-
            The Lender loan product version whose terms govern the new contract,
            as a UUID. A version this gateway has not received from the Lender
            is refused 422 LOAN_PRODUCT_VERSION_UNKNOWN (see
            loan_product_version on the averbação booking).
          examples:
            - 0f9d1a7c-3b52-4c8e-9a1d-2f6b8c4e5d70
          maxLength: 128
          type: string
        margin_snapshot:
          $ref: '#/components/schemas/AverbacaoMarginSnapshot'
        origination_fee_amount:
          description: >-
            OPTIONAL origination fee, in BRL with exactly two places, below
            valorEmprestimo. Omitted means zero; never sent null or empty.
          examples:
            - '10.00'
          maxLength: 20
          type: string
      required:
        - expected_disbursement_date
        - loan_product_version
        - formalization_deadline
        - margin_snapshot
      type: object
    RefinanciamentoContratoQuitado:
      additionalProperties: false
      properties:
        numeroContrato:
          description: >-
            Contract number being quit by this refinanciamento. Must be held by
            this gateway for the authenticated tenant.
          examples:
            - 99999999999AR1
          maxLength: 15
          minLength: 2
          type: string
      required:
        - numeroContrato
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
    AverbacaoMarginSnapshot:
      additionalProperties: false
      properties:
        as_of:
          description: UTC instant at which the margin snapshot was observed.
          examples:
            - '2026-07-30T11:55:00Z'
          format: date-time
          type: string
        available_margin:
          description: >-
            Available payroll margin observed for this booking, as a
            non-negative decimal string with at most two places; anything else
            is refused 422 BOOKING_FIELD_INVALID by the averbação route before
            the rail is called. It must hold installment_amount and not exceed
            remuneracao_disponivel, else 422 MARGIN_SNAPSHOT_INCONSISTENT.
          examples:
            - '1000.00'
          maxLength: 64
          type: string
        remuneracao_disponivel:
          description: >-
            Available remuneration observed with the margin, as a non-negative
            decimal string with at most two places; anything else is refused 422
            BOOKING_FIELD_INVALID by the averbação route before the rail is
            called. It must be greater than zero, else 422
            MARGIN_SNAPSHOT_INCONSISTENT.
          examples:
            - '5000.00'
          maxLength: 64
          type: string
      required:
        - available_margin
        - remuneracao_disponivel
        - as_of
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.