Pular para o conteúdo principal

Registrar Evento de Saldo

Descrição: Registra um evento de saldo (entrega) de um produtor. Diferente do endpoint de Saldos (que mantém apenas o saldo final), os eventos de saldo preservam todo o histórico de entregas.

O delivery_identifier, quando informado, é único por cliente:

  • Se o mesmo produtor reenviar uma entrega com um delivery_identifier já registrado, os dados da entrega existente são substituídos (data, volume, unidade, safra e produto) — não é criado um novo registro.
  • Se outro produtor enviar um delivery_identifier já registrado, a requisição é rejeitada com erro de identificador duplicado (409).
  • Entregas sem delivery_identifier sempre geram um novo registro, mas não podem ser estornadas nem substituídas posteriormente.

Para estornar uma entrega registrada, utilize o endpoint Estornar Evento de Saldo.

Endpoint

POST/api/v1/integration/balance-events

Regras

AtributosDescriçãoTipoObrigatórioValidações
producer_documentCPF ou CNPJ do produtorStringSimDeve conter 11 dígitos (CPF) ou 14 dígitos (CNPJ), apenas números
delivery_identifierIdentificador externo da entregaStringNãoÚnico por cliente. Reenvio pelo mesmo produtor substitui a entrega; por outro produtor, é rejeitado
delivery_dateData da entregaStringSimFormato yyyy-MM-dd
volumeVolume entregueNumberSimDeve ser maior que zero
unit_of_measurementCódigo da unidade de medida (ex.: SC, KG, TON)StringSimDeve existir na base
harvestNome da safra (ex.: 2023/2024 ou 2025 - Safrinha)StringNãoSe informada, deve existir na base
productNome do produto (ex.: SOJA, MILHO)StringSimDeve existir na base

Exemplo de Requisição

curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"producer_document": "52998224725",
"delivery_identifier": "NF-12345",
"delivery_date": "2024-01-15",
"volume": 150.5,
"unit_of_measurement": "SC",
"harvest": "2023/2024",
"product": "SOJA"
}' \
"https://api.merx.tech/api/v1/integration/balance-events"

Parâmetros

Parâmetros de Cabeçalho

NomeDescriçãoTipoObrigatório
AuthorizationChave de API obtida via support-api@merx.techStringSim
Content-TypeDeve ser application/jsonStringSim

Parâmetros do Corpo

NomeDescriçãoTipoObrigatório
producer_documentCPF ou CNPJ do produtorStringSim
delivery_identifierIdentificador externo da entregaStringNão
delivery_dateData da entrega (yyyy-MM-dd)StringSim
volumeVolume entregueNumberSim
unit_of_measurementCódigo da unidade de medidaStringSim
harvestNome da safraStringNão
productNome do produtoStringSim

Respostas

  • 200 - OK
{
"id": "93bb82bc-a6e2-45a9-af2f-e671ab55ec3e"
}
  • 400 - Bad Request
{
"messages": [
"descrição do erro 1",
"descrição do erro 2"
]
}
CenárioMensagem de erro
producer_document ausenteproducer_document is required
delivery_date ausentedelivery_date is required
volume ausentevolume is required
volume menor ou igual a zerovolume must be greater than zero
unit_of_measurement ausenteunit_of_measurement is required
product ausenteproduct is required
Substituição com volume menor que o total já estornado da entregamessage.balance-event.volume.less-than-reversed
Substituição alterando a unidade de medida com estornos já registradosmessage.balance-event.reversal.unit-of-measurement.mismatch
  • 404 - Not Found
CenárioMensagem de erro
Produtor não encontrado pelo documentomessage.producer.not-found
Unidade de medida não encontradamessage.unit-of-measurement.not-found
Produto não encontradomessage.product.not-found
Safra não encontradamessage.harvest.not-found
  • 409 - Conflict

Retornado quando o delivery_identifier informado já está registrado para outro produtor no mesmo cliente (message.balance-event.delivery-identifier.duplicated).

  • 415 - Unsupported Media Type

Content-Type diferente de application/json.