A modalidade precisa estar habilitada para a sua conta; caso contrário, a API retorna
FUNDING_MODE_NOT_ENABLED.1. Cotar com usage = INVENTORY
Solicite a cotação emPOST /v1/fx/quotes com usage = INVENTORY e exatamente um entre sourceAmount (USD) e destinationAmount (BRL). A resposta traz duas datas: expiresAt é a validade da própria cotação; inventoryExpiresAt é a validade que o lote terá se for criado.
POST /v1/fx/quotes · requisição
Corpo da requisição
201 · FxQuote
2. Criar o lote
ChamePOST /v1/inventories com o quoteId. Essa chamada é o aceite: em uma operação a LB Pay fecha com você taxa e volume, cria a promessa de pagamento em USDC e cria o lote, que nasce ACTIVE. A cotação passa a USED e registra o inventoryId. Cada chamada cria um lote novo e independente; lotes nunca são agregados. O lote pode existir sem nenhum withdrawal.
POST /v1/inventories · requisição
Corpo da requisição
201 · Inventory
3. Consultar saldos
GET /v1/inventories/{inventoryId} retorna taxa, validade e saldos. Todos os saldos aparecem em BRL e USD. O controle é feito em BRL; o USD é calculado na taxa do lote.
total = available + reserved + used, sempre.Status do lote
4. Criar o withdrawal
Crie o withdrawal comfunding.mode = INVENTORY, funding.inventoryId, destinationAmount (o BRL que o beneficiário recebe) e senderQuote. Não envie quoteId. Valores e taxa vêm do lote. A LB Pay confere se o lote existe na sua conta, está dentro da validade e tem BRL disponível suficiente, aplica as validações usuais do withdrawal e reserva o volume de forma atômica. Outro lote nunca é usado automaticamente.
Violação retorna
VALIDATION_ERROR (400), com o campo em details.senderQuote traz os dados da operação de câmbio da MSB com o remetente: taxa, valores em USD e BRL, horário da cotação e a sua referência. É gravado como recebido e usado na formalização da operação. Não altera os valores da remessa nem a taxa do lote. A estrutura pode receber novos campos.
POST /v1/remittances/withdrawals · requisição
Corpo da requisição
201 · WithdrawalResponse
422 · ApiError
5. Acompanhar e conciliar
inventory.created: lote criado.inventory.status_changed:ACTIVE↔DEPLETED, ouEXPIRED. Nos dois,data.objecté o Inventory.- Remessas financiadas por um lote seguem os eventos
remittance.*. - Mudanças de saldo sem mudança de status não geram evento. Consulte o saldo em
GET /v1/inventories/{inventoryId}. - Liste as remessas de um lote com
GET /v1/remittances?inventoryId=. - Em uma remessa
INVENTORY,quoteIdé null,inventoryIdidentifica o lote efx.rateé a taxa do lote.fx.status = CONTRACTEDsó depois da confirmação da execução. EmREJECTED, o volume reservado volta ao lote.

