application/problem+json. Uma recusa por rate limit responde com um corpo plano {code, title, message} em
application/json.
{
"title": "Unprocessable Entity",
"status": 422,
"detail": "validation failed",
"errors": [
{
"location": "body.grossRequestedAmount",
"message": "expected string",
"value": 50000
}
]
}
{
"code": 429,
"title": "rate_limit_exceeded",
"message": "rate limit exceeded"
}
code– O código de domínio estável e legível por máquina que a recusa carrega, no formatoLENDER-NNNN. Ausente quando a recusa não recebeu um. Faça o branch por ele primeiro.status– O código de status HTTP.title– O nome do status, comoUnprocessable Entity.detail– O que deu errado nessa ocorrência. Abaixo de500, descreve a recusa específica.errors– Lista opcional de detalhes de validação de schema. Cada entrada carrega umalocation, umamessagee ovalueque o Lender recebeu.type–https://errors.lerian.studio/v1/LENDER-NNNNquandocodeestá presente. O padrãoabout:blankda RFC 9457 caso contrário.
code, title e message em vez disso. Seu code repete o status HTTP numérico. Seu title nomeia a recusa e sua message a explica em uma frase. Nenhuma das duas strings varia conforme o chamador ou nomeia sua cota restante.
Faça o branch por code quando a resposta carregar um, e pelo status HTTP e pelo content type quando não carregar. Leia detail apenas como prosa para uma pessoa. O middleware de autorização e de idempotência pode responder em seus próprios formatos de resposta.
Erros do cliente
O Lender responde com
4xx quando a requisição é o problema, e detail nomeia a recusa específica.
O Lender restringe uma busca ao tenant do chamador e ao pai nomeado no path. Um identificador que resolve fora desse escopo responde da mesma forma que um identificador que não resolve a nada.
Um comando precisa de um subject na identidade do chamador, porque o Lender registra esse subject como o ator por trás da mudança. Limites de bytes se aplicam duas vezes: o framework limita o corpo da requisição, e cada superfície de ingestão de arquivo limita o arquivo que aceita.
A validação de schema roda antes do handler e preenche errors com uma entrada por localização rejeitada.
| Status | O que significa | O que fazer |
|---|---|---|
400 | A requisição chega sem corpo, ou o corpo não tem exatamente o formato JSON que a operação lê. | Envie um corpo que corresponda ao schema da operação, então repita a requisição. |
400 | O header X-Idempotency é mais longo do que a operação aceita. | Envie uma chave mais curta, então repita a requisição. |
401 | A requisição chega sem uma identidade autenticada. | Envie um bearer token válido, então repita a requisição. |
401 | A identidade está autenticada, e seu subject está vazio. | Use um token cujo subject identifique o chamador. |
403 | A requisição não tem uma identidade de tenant validada para o recurso sobre o qual a operação atua. | Use um token com escopo para o tenant que detém o recurso, então repita a requisição. |
404 | O identificador no path nomeia um recurso que esse tenant não possui. | Verifique o identificador, e verifique o tenant ao qual o token tem escopo. |
404 | O recurso existe, e o pai nomeado no path não o possui. | Liste os próprios recursos do pai, então use um identificador dessa lista. |
409 | Outra requisição carregando o mesmo valor de X-Idempotency ainda está em execução. | Aguarde o intervalo de Retry-After, então leia o recurso. Não envie o comando novamente. |
422 | O valor de X-Idempotency já foi usado para uma requisição com um corpo diferente. | Não envie esse comando com uma nova chave. Leia primeiro o resultado da requisição original, então decida. |
409 | O idempotencyKey no corpo nomeia um termo já registrado com conteúdo diferente. | Leia o termo registrado. Uma nova chave registra um segundo termo para o mesmo conjunto. |
409 | O recurso está em uma etapa diferente do ciclo de vida, ou já foi encerrado. | Leia o recurso, então aja a partir da etapa em que ele está. |
409 | Outro processo alterou o recurso durante a requisição. | Leia o recurso novamente, então repita a requisição. |
409 | Um registro externo já aceitou esse comando exato. | Leia o protocolo registrado em vez de emitir o comando novamente. |
413 | O corpo da requisição é maior do que a operação aceita. | Envie um corpo menor. |
413 | O arquivo enviado é maior do que a superfície de ingestão aceita. | Envie um arquivo menor. |
405 | O path existe, e não aceita esse método HTTP. | Use um método que a operação declara na referência da API. |
415 | O header Content-Type nomeia um formato que a operação não lê. | Envie application/json. |
429 | O chamador enviou mais requisições do que o rate limit do deploy permite. | Leia o header Retry-After, aguarde esse número de segundos, então repita a requisição. |
422 | A requisição não corresponde ao schema da operação. | Corrija cada entrada em errors, então repita a requisição. |
422 | A requisição corresponde ao schema, e uma regra de negócio recusa seu conteúdo. | Leia detail, corrija a requisição, então a envie novamente. |
409 | Um comando alcançou um recurso que já está encerrado, e não é a reentrega do comando que o encerrou. | Reentregar o comando original sob a mesma identidade de requisição responde 200 com o registro que já vale. Este status significa um segundo comando, diferente. Leia o registro, então decida; nada foi lançado duas vezes. |
409 | A recusa é reprodutível: repetir a requisição reproduz o conflito. | Não a repita. O estado contra o qual a requisição foi construída mudou, então concilie o registro e emita o comando que o estado atual pede. |
422 | A recusa é terminal por desenho: a requisição nunca terá sucesso como está. | Não a reenvie, com ou sem correções. detail nomeia o caso. A operação recusou em vez de deixar o recurso pela metade, e o recurso está exatamente como estava. |
422 | A recusa nomeia configuração de deploy ou de operação, não uma requisição malformada. | Corrigir o corpo não resolve. detail nomeia o objeto e o estado em que ele está. Ajuste a configuração, então envie a requisição original de novo. |
Erros do servidor
O Lender responde com
5xx quando a requisição está correta e a chamada não pôde ser concluída.
Um 503 cobre duas condições: uma capacidade que o deploy não executa, e uma dependência que o Lender não consegue alcançar no momento da chamada. Um 502 cobre um terceiro que recusa um comando que o Lender encaminha a ele, como o registro que grava uma cessão de recebíveis.
| Status | O que significa | O que fazer |
|---|---|---|
500 | O Lender não conseguiu concluir a requisição. | Em uma leitura, repita a requisição. Em um comando que movimenta dinheiro, leia o recurso primeiro, e repita apenas se o comando não tiver sido aplicado. Se o status persistir, contate o suporte com a operação, o tenant e o horário da chamada. |
502 | O registro para o qual o Lender encaminha recusou o comando. | A resposta não nomeia o motivo. Verifique a configuração de registro do fundo e os dados do comando, então emita o comando novamente. |
503 | O deploy não executa a capacidade de que a operação precisa. | Peça à sua equipe de plataforma para habilitar a capacidade no seu deploy. |
503 | Um armazenamento ou uma dependência downstream estava inacessível. | Tente novamente com backoff. |
Códigos de erro
As tabelas abaixo listam os códigos que o Lender retorna.
title é o nome do status HTTP, e detail descreve o caso específico para uma pessoa, então ramifique por code, não por detail.
Geral
| Código | Status | Recusa |
|---|---|---|
LENDER-0000 | 500 Internal Server Error | O Lender não conseguiu classificar a falha. Trate-a como um erro de servidor. |
Produtos
| Código | Status | Recusa |
|---|---|---|
LENDER-0101 | 409 Conflict | O produto de empréstimo não está ativo, então você não pode trocar a versão atual dele. |
LENDER-0102 | 422 Unprocessable Entity | A versão que você informou não é uma versão deste produto de empréstimo. |
LENDER-0103 | 400 Bad Request | chargeEffectiveAt ou accountCreatedAt é uma data de calendário. Envie um instante RFC 3339. |
Originação
| Código | Status | Recusa |
|---|---|---|
LENDER-0201 | 409 Conflict | A proposta já foi desembolsada, e este desembolso não declara trancheNumber. |
LENDER-0202 | 422 Unprocessable Entity | O valor do desembolso ou o trancheNumber dele contradiz o valor aprovado. |
LENDER-0203 | 404 Not Found | Nenhuma proposta de empréstimo do seu tenant tem este identificador. |
LENDER-0204 | 409 Conflict | Outra requisição alterou esta proposta antes. Nada foi gravado. |
LENDER-0205 | 409 Conflict | Um desembolso diferente já usa esta chave de idempotência. |
LENDER-0206 | 403 Forbidden | O subject autenticado não pode executar esta ação nesta proposta. |
LENDER-0207 | 422 Unprocessable Entity | O Lender não consegue resolver o perfil da versão de produto de que este desembolso precisa. |
LENDER-0208 | 422 Unprocessable Entity | O valor líquido não é igual ao bruto menos as retenções, menos a tarifa de originação. |
LENDER-0209 | 422 Unprocessable Entity | A tarifa de originação é igual ou maior que o valor que sobra depois das retenções. |
LENDER-0210 | 422 Unprocessable Entity | O produto retém uma tarifa de originação que a base de apropriação dele não consegue amortizar. |
LENDER-0211 | 409 Conflict | A conta de empréstimo já tem uma proposta de empréstimo. |
LENDER-0212 | 422 Unprocessable Entity | Um campo da requisição está malformado. |
LENDER-0213 | 409 Conflict | A ação não é permitida a partir do status atual da proposta. detail informa o status. |
LENDER-0214 | 422 Unprocessable Entity | O instante de pagamento de uma contraparte está mais adiantado que o relógio do Lender além da diferença permitida. |
LENDER-0215 | 422 Unprocessable Entity | A taxa solicitada está fora da faixa de taxa da versão de produto. |
LENDER-0216 | 422 Unprocessable Entity | A versão de produto não declara faixa de taxa. |
LENDER-0217 | 422 Unprocessable Entity | A moeda da requisição de desembolso não é a moeda da proposta. |
LENDER-0218 | 422 Unprocessable Entity | O lançamento de abertura que a requisição de reprogramação cita não corresponde a este contrato. |
LENDER-0219 | 422 Unprocessable Entity | Um campo de valor ou de taxa da prévia de cronograma não é decimal. |
LENDER-0220 | 422 Unprocessable Entity | Uma string decimal da prévia de cronograma é mais longa do que o Lender aceita. |
LENDER-0221 | 422 Unprocessable Entity | Um decimal da prévia de cronograma tem um expoente fora da faixa aceita. |
LENDER-0222 | 503 Service Unavailable | O deploy não tem leitor de propostas de empréstimo para esta rota. |
LENDER-0223 | 503 Service Unavailable | A prévia de cronograma não está configurada neste deploy. |
LENDER-0224 | 503 Service Unavailable | O deploy não consegue executar a liberação de que uma renegociação substancial precisa. |
LENDER-0225 | 422 Unprocessable Entity | O produto de empréstimo desta proposta não está ativo. |
LENDER-0226 | 422 Unprocessable Entity | A versão que você informou não é a versão atual do produto. |
LENDER-0227 | 422 Unprocessable Entity | O jurisdictionExtensions do desembolso não traz disbursedAt. |
LENDER-0228 | 422 Unprocessable Entity | A versão de produto não admite o tipo de tomador da proposta. |
LENDER-0229 | 422 Unprocessable Entity | O primeiro vencimento cai no dia do desembolso ou antes dele. |
LENDER-0230 | 422 Unprocessable Entity | A proposta não declara tipo de tomador, e a operação precisa de um. |
LENDER-0231 | 422 Unprocessable Entity | O primeiro vencimento é tão tardio que a primeira parcela não amortiza principal. |
LENDER-0232 | 422 Unprocessable Entity | A requisição define um primeiro vencimento e uma carência ao mesmo tempo. |
LENDER-0233 | 422 Unprocessable Entity | O deploy não precifica tributo para o tipo de tomador da proposta. |
LENDER-0234 | 422 Unprocessable Entity | O cronograma gerou um período de zero dias ou menos no calendário da jurisdição. |
LENDER-0235 | 422 Unprocessable Entity | A versão de produto não admite o primeiro vencimento escolhido. |
LENDER-0236 | 422 Unprocessable Entity | A proposta cita uma oferta de cronograma que não está registrada. |
Gestão da carteira
| Código | Status | Recusa |
|---|---|---|
LENDER-0301 | 422 Unprocessable Entity | O Lender não consegue ler a requisição como um pagamento: o valor não é positivo ou tem precisão abaixo do centavo, a chave de idempotência falta ou o instante é inválido. |
LENDER-0302 | 409 Conflict | O pagamento tem data anterior a fatos que a conta de empréstimo já liquidou. |
LENDER-0303 | 409 Conflict | Um pagamento diferente já usa esta chave de idempotência. |
LENDER-0304 | 409 Conflict | A distribuição por parcela aloca mais do que a parcela deve. |
LENDER-0305 | 404 Not Found | Nenhuma conta de empréstimo ativa tem este identificador. |
LENDER-0306 | 409 Conflict | A conta de empréstimo tem mais de uma proposta viva, então o plano de contas dela é ambíguo. |
LENDER-0307 | 422 Unprocessable Entity | A versão do produto de empréstimo não tem perfil contábil. |
LENDER-0308 | 422 Unprocessable Entity | O plano de contas do produto não consegue expressar esta movimentação. |
LENDER-0309 | 422 Unprocessable Entity | A movimentação não pode ser expressa como um lançamento no ledger pelo perfil contábil do produto. |
LENDER-0310 | 503 Service Unavailable | Um componente de que esta movimentação precisa não está configurado no deploy. |
LENDER-0311 | 404 Not Found | O pagamento a estornar não está nesta conta de empréstimo. |
LENDER-0312 | 409 Conflict | O pagamento já tem um estorno. |
LENDER-0313 | 422 Unprocessable Entity | Um pagamento com data posterior ao que você estorna consta no contrato. |
LENDER-0314 | 422 Unprocessable Entity | O cronograma mudou depois do pagamento que você estorna. |
LENDER-0315 | 422 Unprocessable Entity | Um pagamento posterior e uma versão de cronograma posterior constam no contrato. |
LENDER-0316 | 409 Conflict | Um estorno diferente já usa esta chave de idempotência. |
LENDER-0317 | 422 Unprocessable Entity | A requisição de estorno não traz os fatos de linhagem de que precisa. |
LENDER-0318 | 403 Forbidden | Nenhuma identidade validada chegou à leitura, então o Lender não consegue delimitá-la. |
LENDER-0319 | 409 Conflict | O empréstimo não tem uma única proposta viva, então o lançamento compensatório não tem plano de contas. |
LENDER-0320 | 409 Conflict | O Lender não consegue determinar se o pagamento original chegou ao ledger. |
LENDER-0321 | 422 Unprocessable Entity | A página ou o filtro solicitado não é válido. |
LENDER-0322 | 409 Conflict | Uma liquidação anterior já usou parte ou todo este abatimento. |
LENDER-0323 | 422 Unprocessable Entity | O pagamento devolvido trazia caixa não aplicado, então ele não pode virar um recebível. |
LENDER-0324 | 404 Not Found | Nenhum recebível de pagamento devolvido tem este identificador. |
LENDER-0325 | 409 Conflict | O recebível já foi cobrado. |
LENDER-0326 | 422 Unprocessable Entity | A cobrança não pode ser aplicada como foi enviada. |
LENDER-0327 | 422 Unprocessable Entity | O pagamento que você estorna não registrou nada. |
LENDER-0328 | 503 Service Unavailable | A liquidação não está configurada neste deploy. |
LENDER-0329 | 404 Not Found | A versão de cronograma que você informou não está neste contrato. |
LENDER-0330 | 422 Unprocessable Entity | Um campo da requisição de liquidação ou de reprogramação está malformado. |
LENDER-0331 | 422 Unprocessable Entity | Este contrato só é liquidado contra uma cotação de pagamento antecipado, e a requisição não tem nenhuma. |
LENDER-0332 | 422 Unprocessable Entity | A liquidação é de mais principal do que o contrato deve. |
LENDER-0333 | 422 Unprocessable Entity | A versão de cronograma traz juros e nenhuma taxa. |
LENDER-0334 | 422 Unprocessable Entity | A rodada de apropriação não consegue reconhecer os meses que este cronograma cria. |
LENDER-0335 | 422 Unprocessable Entity | O produto não tem regra para o ganho ou a perda de uma renegociação substancial. |
LENDER-0336 | 422 Unprocessable Entity | O produto não tem regra de baixa ou de reconhecimento. |
LENDER-0337 | 422 Unprocessable Entity | Os termos do contrato substituto estão incompletos. |
LENDER-0338 | 422 Unprocessable Entity | A modificação é substancial (Res. CMN 4.966 art. 22), então ela não é um cronograma sucessor deste contrato. |
LENDER-0339 | 422 Unprocessable Entity | O cronograma não consegue colocar a primeira parcela na data solicitada. |
LENDER-0340 | 422 Unprocessable Entity | O contrato não tem valor contábil positivo para renegociar. |
LENDER-0341 | 422 Unprocessable Entity | Um contrato com desconto em folha não pode ser renegociado de forma substancial. |
LENDER-0342 | 409 Conflict | Uma requisição de versão de cronograma diferente já usa esta chave de idempotência. |
LENDER-0343 | 409 Conflict | O contrato já saiu da carteira: ele foi liquidado, cedido ou portado. |
LENDER-0344 | 409 Conflict | Já existe uma renegociação substancial deste contrato. |
LENDER-0345 | 409 Conflict | O outbox colocou em quarentena um lançamento deste contrato. |
LENDER-0346 | 409 Conflict | Um lançamento deste contrato foi publicado, e o ledger não o confirmou. |
LENDER-0347 | 409 Conflict | Um lançamento deste contrato está em trânsito, e a confirmação dele não chegou. |
LENDER-0348 | 400 Bad Request | O instante do pagamento é uma data de calendário. Envie um instante RFC 3339. |
Contabilidade
| Código | Status | Recusa |
|---|---|---|
LENDER-0401 | 503 Service Unavailable | Nenhuma varredura de transferência de saldos do plano está configurada, então uma troca de plano não consegue mover saldos. |
LENDER-0402 | 503 Service Unavailable | O Lender não conseguiu ler o ledger, então a varredura não moveu nada. |
LENDER-0403 | 409 Conflict | A troca de plano é recusada, porque o deploy não consegue mover os saldos que ela deixaria para trás. |
LENDER-0404 | 409 Conflict | Um contrato não tem ativo no ledger, então o Lender não consegue ler os saldos dele. |
LENDER-0405 | 409 Conflict | A retentativa reconstruiu um lançamento diferente do que já está na fila para o mesmo reconhecimento. |
LENDER-0406 | 422 Unprocessable Entity | O plano pode desviar um pagamento final devolvido, e não tem as regras para provisionar e baixar essa dívida. |
LENDER-0407 | 422 Unprocessable Entity | Alguns identificadores de item selecionados para a retentativa não pertencem à rodada de apropriação. errors[].value informa até dez deles. |
LENDER-0408 | 422 Unprocessable Entity | O produto registra este contrato em contas que ele compartilha com outros contratos, então a saída não pode ser medida. |
LENDER-0409 | 409 Conflict | O ledger retém fundos nas contas deste contrato. |
LENDER-0410 | 503 Service Unavailable | O Lender não conseguiu ler o ledger. |
LENDER-0411 | 422 Unprocessable Entity | O produto registra a tarifa de originação diferida em uma conta compartilhada. |
LENDER-0412 | 409 Conflict | As contas de tarifa diferida do contrato trazem uma linha que nenhuma categoria de conciliação cobre. |
LENDER-0413 | 422 Unprocessable Entity | A conciliação de tarifa diferida não informa conta de empréstimo. |
LENDER-0414 | 409 Conflict | As transferências de saldo do plano nas contas de tarifa diferida não somam zero. |
LENDER-0415 | 404 Not Found | Nenhum contrato desembolsado do seu tenant tem esta conta de empréstimo. |
LENDER-0416 | 409 Conflict | Mais de uma proposta reivindica esta conta de empréstimo. |
LENDER-0417 | 422 Unprocessable Entity | Nenhum plano da versão de produto estava vigente no dia em que a primeira tranche foi desembolsada. |
LENDER-0418 | 422 Unprocessable Entity | Um plano armazenado do produto falha na validação do perfil contábil. |
LENDER-0419 | 422 Unprocessable Entity | O produto registra o tributo sobre receita (PIS/COFINS) em uma conta por contrato. |
Cessão de recebíveis
| Código | Status | Recusa |
|---|---|---|
LENDER-0501 | 422 Unprocessable Entity | O valor de quitação acordado com o fundo excede o valor de face das parcelas que o fundo ainda detém. |
LENDER-0502 | 422 Unprocessable Entity | O valor de quitação acordado com o fundo é zero ou menos. |
LENDER-0503 | 422 Unprocessable Entity | A venda envia um campo de retenção sem valor: retainedFraction é nulo ou vazio, ou sellerRetainsControl é nulo. |
LENDER-0504 | 422 Unprocessable Entity | A fração retida atinge o limite de retenção substancial. O Lender monta uma venda apenas quando a fração está abaixo dele. |
LENDER-0505 | 422 Unprocessable Entity | O vendedor retém o controle do que vendeu (Res. CMN 4.966 art. 26 III). O Lender não registra esse tipo de venda. |
LENDER-0506 | 422 Unprocessable Entity | Uma fração retida não é uma string decimal de 0 a 1 com no máximo 8 casas decimais. |
Auditoria
| Código | Status | Recusa |
|---|---|---|
LENDER-0801 | 503 Service Unavailable | O armazenamento do histórico de auditoria do empréstimo não tem banco de dados por trás. |
Brasil
| Código | Status | Recusa |
|---|---|---|
LENDER-0900 | 422 Unprocessable Entity | A tabela de alíquotas do deploy não tem alíquota de IOF para o tipo de tomador. |
LENDER-0901 | 422 Unprocessable Entity | A declaração de ativo problemático não informa artigo de norma. |
LENDER-0902 | 422 Unprocessable Entity | A declaração não informa a fonte. |
LENDER-0903 | 422 Unprocessable Entity | A declaração não cita evidência. |
LENDER-0904 | 422 Unprocessable Entity | A declaração não tem signatário: nenhuma identidade validada chegou a ela, e ela não informa subject declarante. |
LENDER-0905 | 422 Unprocessable Entity | A declaração não é válida por outro motivo: uma data de avaliação no futuro, a falta de chave de idempotência ou um campo acima do limite de tamanho. |
LENDER-0906 | 404 Not Found | Nenhuma conta de empréstimo do seu tenant tem este identificador. |
LENDER-0907 | 409 Conflict | Esta chave de idempotência já registrou uma declaração. |
LENDER-0908 | 403 Forbidden | Nenhuma identidade de tenant validada chegou à rota de declaração. |
LENDER-0909 | 503 Service Unavailable | O armazenamento de declarações está inacessível. |
LENDER-0910 | 422 Unprocessable Entity | Nenhuma varredura de reavaliação concluída cobre essa data de referência. |
LENDER-0911 | 422 Unprocessable Entity | businessDate não é uma data YYYY-MM-DD. |
LENDER-0912 | 503 Service Unavailable | O deploy não tem gerador de cronograma para a cotação de tributos brasileira. |

