MovimentoBancario (SE5)
CRUD do Movimento Bancário (tabela SE5)
via rotina automática FINA100 (MsExecAuto).
Cobre pagamentos (modo 3), recebimentos
(modo 4), exclusão física (modo 5) e
cancelamento (modo 6 -- preserva o registro com flag).
A chave natural da SE5 tem 13 partes
(filial+data+banco+agencia+conta+documen+tipodoc+tipo+clifor+loja+prefixo+numero+parcela),
o que torna inviável um path REST por chave de negócio: o acesso
individual canônico é via _byid?tipoid=recno&valor=N.
FINA100 não expõe nOper de alteração no caminho oficial. A rota PUT /WsSE5/ALTERAR/{recno} retorna 405 com guidance: para alterar movimento existente faça DELETE (modo 5 ou 6) + POST com os valores ajustados.Endpoint OAuth2
Sem credenciais? Você pode pegar o token rodando
./src/scripts/get-token.sh na biblioteca e
colar o access_token aqui no campo de refresh
(ou clique em "Logout" para limpar e voltar ao fake).
Vinculação com o ERP
Convenções
Acesso individual é recno. A chave de
negócio da SE5 tem 13 partes — impraticável em URL. Todo acesso
individual a um movimento usa recno, seja como path
parameter (PUT/DELETE) seja como
query parameter (GET /_byid?tipoid=recno&valor=N).
O recno é devolvido em data.recno no POST
de inclusão e em cada item retornado pelo /_list.
Pagamento × Recebimento. O mesmo endpoint serve os
dois sentidos do extrato — o que muda é o oper do
payload: 3 registra pagamento (saída do
extrato, geralmente baixa de SE2) e 4 registra
recebimento (entrada do extrato, geralmente baixa
de SE1). O FINA100 grava em SE5 e atualiza
o saldo da SA6 vinculada.
Excluir × Cancelar. DELETE default usa
FINA100 modo 5 (exclusão física via
soft-delete TOTVS). Para cancelar o movimento
preservando o registro (com flag de cancelamento), informe
?tipo=cancelar (modo 6). Cancelamento
mantém histórico auditável; exclusão remove a linha (com
D_E_L_E_T_='*').
WSDATA dataref em vez de data.
O nome data é reservado no roteador HTTPREST do build
240223P e causa 500 silencioso (sem stack). Todos
os filtros de data ficam expostos como ?dataref=YYYY-MM-DD
(ou ?dataref=YYYYMMDD). Documentado em
feedback_wsdata_key_reservado.
Vínculo com título financeiro. Para refletir baixa
de um título a pagar ou a receber, os campos
E5_PREFIXO+E5_NUMERO+E5_PARCELA+E5_TIPO+E5_CLIFOR+E5_LOJA
devem espelhar exatamente a chave do título correspondente em
SE1/SE2. Caso contrário o movimento é
gravado mas não reconcilia.
Paginação e delta-sync. O /_list aceita
page/pageSize (default 50, máx
500) com orderBy=fisico (default) ou
orderBy=recno. Para sincronização incremental, alterne
para orderBy=recno e use cursor conforme
o nextCursor devolvido. since filtra
RecNo() < since.
Formato de datas. Campos E5_DATA aceitam
YYYYMMDD (8 dígitos sem separadores) no payload. O filtro
?dataref= também aceita ISO YYYY-MM-DD. Saída
do GET vem serializada pelo U_RestMnt.
MovimentoBancario
CRUD por RecNo — pagamento, recebimento, exclusão e cancelamentooper=3) ou recebimento (oper=4)
Descrição
Inclui um movimento no extrato bancário via FINA100:
oper=3— pagamento (saída do extrato; geralmente baixa de título a pagar).oper=4— recebimento (entrada do extrato; geralmente baixa de título a receber).
O servidor não usa path key (FINA100 resolve internamente). Retorna o
recno do registro gravado em data.recno
— guardar esse valor para operações subsequentes
(GET, DELETE, cancelar).
Whitelist completa: ver MovBancarioPayload.
Request body
oper + campos da SE5. Schema completo em
MovBancarioPayload.
3 = pagamento (saída); 4 = recebimento (entrada).A6_COD).A6_NUMCON).POST https://erpapi.jetme.com.br/api/99/01/WsSE5/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "oper": 3, "E5_DATA": "20991231", "E5_BANCO": "999", "E5_AGENCIA": "99999", "E5_CONTA": "0099999999", "E5_DOCUMEN": "999998", "E5_TIPODOC": "PA", "E5_TIPO": "NF", "E5_CLIFOR": "000002", "E5_LOJA": "01", "E5_PREFIXO": "TST", "E5_NUMERO": "999998", "E5_PARCELA": "001", "E5_VALOR": 1500.00, "E5_HISTOR": "TESTE_REST PAGAMENTO NF" }
POST https://erpapi.jetme.com.br/api/99/01/WsSE5/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "oper": 4, "E5_DATA": "20991231", "E5_BANCO": "999", "E5_AGENCIA": "99999", "E5_CONTA": "0099999999", "E5_DOCUMEN": "REC99998", "E5_TIPODOC": "TED", "E5_TIPO": "RC", "E5_CLIFOR": "000001", "E5_LOJA": "01", "E5_PREFIXO": "TST", "E5_NUMERO": "999998", "E5_PARCELA": "001", "E5_VALOR": 2500.00, "E5_HISTOR": "TESTE_REST RECEBIMENTO TED" }
Respostas
CrudResponse com data = MovBancarioRef incluindo recno (RecNo do registro SE5) — guardar para DELETE/GET subsequentes.oper fora de [3,4], campos-chave obrigatórios (banco/agência/conta/valor) vazios. Tier: validation-error.FINA100 — conta bancária inexistente em SA6, fornecedor/cliente inexistente ou bloqueado, natureza inválida, vínculo com título quebrado. Mensagem editorial em message. Tier: business-error.Descrição
O FINA100 não oferece nOper de alteração no
caminho oficial — o array auxiliar de alteração não é processado
pela rotina automática. Esta rota responde sempre
405 Method Not Allowed com mensagem explícita.
Workaround: para modificar um movimento existente,
faça DELETE (modo 5 = excluir ou modo 6 = cancelar) seguido
de POST com os valores ajustados.
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
PUT https://erpapi.jetme.com.br/api/99/01/WsSE5/ALTERAR/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json { "E5_VALOR": 1234.56 }
{
"success": false,
"message": "PUT nao suportado: FINA100 nao expoe nOper de alteracao. Use DELETE + POST.",
"data": ""
}
Respostas
recno ausente/inválido. Tier: validation-error.FINA100. Tier: business-error.?tipo=cancelar)
Descrição
Default modo 5 (exclusão física via soft-delete TOTVS).
Para cancelar sem excluir o registro (preserva linha
com flag de cancelamento), informe ?tipo=cancelar (modo 6).
O endpoint posiciona a SE5 via DbGoTo(recno)
antes de chamar o FINA100 — o caller é obrigado a passar
recno no path (a chave de 13 partes não cabe em URL).
Path parameter
_list).Query parameter
excluir (modo 5). Use cancelar para modo 6.excluircancelarCenarios
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsSE5/EXCLUIR/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
DELETE https://erpapi.jetme.com.br/api/99/01/WsSE5/EXCLUIR/12345?tipo=cancelar Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
recno ausente/inválido, tipo fora do enum. Tier: validation-error.recno não localizado na SE5. Tier: not-found.FINA100 — movimento conciliado, fora do exercício, vínculo travado por outra movimentação. Tier: business-error.Descrição
Forma canônica de acessar um movimento específico
— a chave de negócio de 13 partes da SE5 é impraticável em URL.
Use o recno retornado no POST (data.recno)
ou no _list.
Query parameters
recnomsuidtipoid=recno, string GUID para tipoid=msuid.Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSE5/_byid?tipoid=recno&valor=12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: MovBancario }.tipoid/valor ausentes ou fora do enum.msuid requer E5_MSUID no dicionário.E5_DOCUMEN)
Descrição
Busca sugestões para autocomplete a partir de prefixo do
E5_DOCUMEN. Cursor TCGenQry via helper
U_RestSug (sem scan AdvPL). Retorna lista enxuta com
recno + identificação do movimento.
Query parameters
10, máx 25).Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSE5/_search?term=999998 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: [{ recno, dataref, banco, agencia, conta, documen, clifor, valor }], count, term }.term ausente.Listagem
Paginação por filtros + delta-syncDescrição
Lista movimentos do extrato com filtros opcionais por
banco+agencia+conta,
dataref, tipo, clifor,
documento em dois modos:
orderBy=fisico(default) — paginação por offset (page/pageSize).orderBy=recno— paginação por keyset comcursor/nextCursor; indicado para sync incremental.
Para extrato de uma conta específica, combine
banco+agencia+conta.
Query parameters
YYYY-MM-DD ou YYYYMMDD. Não use data — nome reservado no HTTPREST.CAMPOS_GET.1). Só faz sentido com orderBy=fisico.50, máx 500).fisico.fisicorecnoorderBy=fisico, descarta RecNo() < since.orderBy=recno, retoma após este RecNo.Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsSE5/_list?banco=999&agencia=99999&conta=0099999999&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de MovBancario), orderBy, pageSize, count, opcionalmente page ou nextCursor.fields fora do whitelist, pageSize > 500, dataref mal-formada).Schemas
Definições canônicas — campos com origemSX3 rastreável
/_byid, /_list).
Cabeçalho da SE5 + ids técnicos.
YYYYMMDD).E5_MSUID.POST. oper determina a
operação (3=pagar, 4=receber). Para vincular a título, espelhar a chave
em E5_PREFIXO+E5_NUMERO+E5_PARCELA+E5_TIPO+E5_CLIFOR+E5_LOJA.
3 = pagamento; 4 = recebimento.34YYYYMMDD. Default = data do servidor.data nas
respostas de POST. Acrescenta o recno
(essencial para operações subsequentes).
3 ou 4, conforme operação solicitada.E5_MSUID.data traz
MovBancarioRef em POST, string vazia em DELETE.
true em sucesso.message traz a
mensagem do NomeAutoLog do FINA100.
false em erros.Cenários
Catálogo de combinações reconhecidas. Tier semântico no slug; endpoint notype-pill.
oper=3) vinculada a
uma NF do fornecedor. FINA100 grava SE5 e atualiza saldo da SA6.
Quando usar: baixa manual de título a pagar ou registro de pagamento avulso.
oper=4) via TED
do cliente. Espelha a chave de um título a receber para reconciliar.
Quando usar: baixa manual de título a receber ou registro de entrada avulsa (TED, DOC, depósito).
nOper de alteração. Para modificar movimento existente,
faça DELETE (modo 5 ou 6) + POST.
Cenário existe apenas para documentar o status code — não é caminho funcional.
D_E_L_E_T_='*'). Atualiza saldo da SA6.
Bloqueio: 422 quando movimento conciliado, fora do exercício ou travado por outra movimentação.
Quando usar: movimentos que precisam ser anulados mas cuja rastreabilidade é exigida (auditoria fiscal, compliance).
banco+agencia+conta)
com paginação por offset (page/pageSize) e
orderBy=fisico default. Use
orderBy=recno+cursor para delta-sync.
?tipoid=recno&valor=N.
Chave de 13 partes da SE5 não é endereçável por path REST — o
recno é o ponto de entrada.
TCGenQry sobre prefixo de E5_DOCUMEN
(helper U_RestSug). Indicado para autocomplete em
telas de busca rápida.
Pendências conhecidas (rev1)
PUT sem caminho funcional. O FINA100 não
aceita nOper de alteração; a rota responde 405. Para os
consumidores, o workaround padrão é DELETE + POST
(preservando o recno antigo apenas como referência interna).
Não há plano de implementar PUT enquanto a rotina automática não
expuser o caminho oficial.
Operações 7/8/9 fora do CRUD. Transferência entre
contas (nOper=7), estorno de transferência (8)
e classificação (9) têm semântica própria e
não entram neste endpoint. Quando demandadas, devem
virar endpoints dedicados (ex.: WsTransferBanc) por
terem payload e regras de negócio distintas.
Bloqueio MSBLQL/MSBLQD não aplicado. A SE5 não expõe
MSBLQL/MSBLQD; o bloqueio relevante está na SA6 (conta
bancária) e na SA1/SA2 (cliente/fornecedor) e é enforced
pelo próprio FINA100. Não há contrato adicional a aplicar
no endpoint.
Smoke test não cobre cancelamento de extrato reconciliado.
O fluxo de reconciliação bancária (que altera E5_RECONC)
tem cenários próprios não cobertos por test-movimento-bancario.sh.
Tentativa de exclusão/cancelamento de movimento reconciliado deve
retornar 422; comportamento depende da parametrização da base.
Tabela SX5/05 (tipos de documento bancário) varia por base.
Os exemplos usam PA (pagamento), TED
(transferência), DP (depósito), BL (boleto).
Em ambientes customizados o conjunto pode ser diferente — sempre
consulte SX5 tabela 05 da base alvo antes
de produzir.