Easy4me Web

Documentacao publica da API para parceiros e integradores

Esta pagina descreve o contrato atual usado pelo PDV e que tambem pode ser usado por empresas parceiras para consultar cadastros, enviar vendas e manter dados sincronizados com o Easyweb.

Visao geral

A API publica reutiliza os controllers em /Controllers que ja atendem o PDV. As rotas seguem o padrao do ASP.NET Web API: /api/{controller}, com respostas em JSON.

Para integracoes novas, trate esta documentacao como o contrato minimo suportado. Alguns endpoints ainda retornam modelos internos do Easy4me; por isso, envie apenas campos documentados ou combinados no projeto de integracao.

Autenticacao

Use o endpoint POST /Token com application/x-www-form-urlencoded. O token deve ser enviado nas demais chamadas pelo cabecalho Authorization: Bearer {access_token}.

POST https://easyforme.com.br/Token
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=usuario@empresa.com.br&password=sua-senha
Campo Uso
grant_type Informe sempre password.
username Usuario cadastrado no Easy4me para a empresa que sera integrada.
password Senha do usuario. O token atual expira em 14 dias.

Crie usuarios especificos para integracoes externas, com permissoes e empresas bem definidas. Evite compartilhar usuarios pessoais de operadores.

Sincronizacao

O fluxo mais completo para o PDV e integradores e o endpoint de carga incremental. Ele retorna cadastros alterados desde a data informada e, opcionalmente, movimentos.

GET /api/TodosRegistros?dataAlteracao={data}&force=false&mov=false Retorna produtos, clientes, formas de pagamento, impostos, tabelas, terminais e demais cadastros alterados. Com mov=true, inclui movimentos como vendas, itens e pagamentos.

Parametros

Parametro Tipo Descricao
dataAlteracao datetime Data/hora inicial da janela incremental. Use ISO 8601, por exemplo 2026-05-27T08:00:00.
force boolean Quando true, ignora a janela minima de sincronizacao configurada para a empresa.
mov boolean Quando true, inclui listas de movimentacoes no retorno.

Endpoints principais

GET /api/Produto?dataAlteracao={data} Lista produtos incluidos ou alterados apos a data informada.
GET /api/Produto/{codigo} Consulta um produto pelo codigo interno.
POST /api/Produto/PostProdutos Insere uma lista de produtos no formato de migracao.
PUT /api/Produto/PostProdutos Atualiza ou insere produtos no formato de migracao.
GET /api/Pessoa?dataAlteracao={data} Lista pessoas alteradas desde a data informada.
GET /api/Pessoa?clientes=true&CodigoEmpresa={codigo} Lista clientes filtrando por empresa quando necessario.
POST /api/Venda Recebe uma lista de vendas e retorna os codigos processados.
PUT /api/Venda Atualiza ou insere vendas usando o mesmo processamento de upsert.
GET /api/Venda?dataFiltro={data} Lista vendas emitidas a partir da data informada, incluindo itens e formas de pagamento.
POST /api/VendaItem Recebe itens de venda em lote.
POST /api/VendaFormaPagamento Recebe formas de pagamento de venda em lote.
POST /api/Nfce Recebe NFC-e vinculada as vendas sincronizadas.

Cadastros com padrao incremental

Os controllers abaixo seguem o padrao GET /api/{controller}?dataAlteracao={data} e, quando disponivel, GET /api/{controller}/{codigo}, POST /api/{controller} e PUT /api/{controller} em lote.

ProdutoGrupo, FormaPagamento, UnidadeMedida, Imposto, CFOP, CEST, NCM, CentralTributo, IBPT, Impressora, LocalProducao, PessoaGrupo, TabelaPreco, TaxaAdministrativa, Terminal, Observacao, Promocao e Estoque.

Modelos e payloads por endpoint

Os exemplos abaixo mostram o corpo esperado ou o principal retorno de cada endpoint. Os campos de navegacao do Entity Framework, como Produto, Venda, Empresa, Cliente e colecoes relacionadas, devem ser omitidos no envio para evitar duplicidade de registros.

Quando o endpoint recebe uma lista, envie sempre um array JSON, mesmo que exista apenas um registro.

Mapa rapido endpoint x model

Endpoint Model usado Corpo
POST /Token OAuth password grant application/x-www-form-urlencoded
GET /api/TodosRegistros TodosRegistros Nao possui body.
POST|PUT /api/Produto/PostProdutos List<ProdutoMigrador> Array de produtos de migracao.
GET|POST|PUT /api/Pessoa Pessoa GET sem body; POST/PUT usam array de pessoas.
POST|PUT /api/Venda IEnumerable<Venda> Array de vendas.
POST|PUT /api/VendaItem IEnumerable<VendaItem> Array de itens de venda.
POST /api/VendaFormaPagamento IEnumerable<VendaFormaPagamento> Array de pagamentos, com Parcelas quando houver.
POST /api/VendaParcela IEnumerable<VendaParcela> Array de parcelas avulsas.
POST|PUT /api/Nfce IEnumerable<Nfce> Array de documentos NFC-e.
POST /api/SAT IEnumerable<SAT> Array de documentos SAT.
POST /api/Crediario/Pagamento List<CrediarioPagamento> Array de pagamentos de crediario.
POST /api/BackupDesktop BackupDesktop Objeto unico.
PUT /api/ConfiguracaoBackup/Backup KeyValuePair<int,int> Objeto com Key e Value.
Autenticacao - POST /Token
Content-Type: application/x-www-form-urlencoded Retorna access_token
grant_type=password&username=integracao@empresa.com.br&password=senha

Resposta esperada

{
"access_token": "TOKEN_GERADO",
"token_type": "bearer",
"expires_in": 1209599
}
Campo Tipo Uso
grant_type string Use password.
username string Usuario de integracao cadastrado no Easy4me.
password string Senha do usuario.
TodosRegistros - GET /api/TodosRegistros
Sem body Retorno de carga incremental
{
"Status": 1,
"ProdutoGrupos": [],
"FormaPagamentos": [],
"CartaoAdquirentes": [],
"CartaoBandeiras": [],
"UnidadeMedidas": [],
"Impostos": [],
"Cfops": [],
"Cests": [],
"Ncms": [],
"CentralTributos": [],
"Ibpt": [],
"Impressoras": [],
"LocaisProducao": [],
"Permissoes": [],
"PessoaGrupos": [],
"TabelaPrecos": [],
"Pessoas": [],
"PessoaAutNfe": [],
"PessoasObservacao": [],
"PessoasNfceConfig": [],
"TaxasAdministrativas": [],
"DescontosFuncionarios": [],
"Produtos": [],
"ProdutoComplementos": [],
"ProdutoComplementoOpcoes": [],
"ProdutoCodigoBarras": [],
"ProdutoBalanca": [],
"ProdutoDescontoQuantidade": [],
"ProdutoImagem": [],
"Observacoes": [],
"ProdutoObservacoes": [],
"TabelaPrecoItens": [],
"Promocao": [],
"PromocaoItens": [],
"Terminais": [],
"Estoques": [],
"ModeloEtiquetas": [],
"ModeloEtiquetaItens": [],
"Etiquetas": [],
"Botoes": [],
"Layouts": [],
"MotivoCancelamentoTrocas": [],
"Configuracao": {},
"Movimentacoes": {
"Venda": [],
"VendaItem": [],
"VendaFormaPagamento": [],
"VendaParcela": [],
"MovimentacaoCaixa": [],
"ConferenciaCaixa": [],
"ConferenciaCaixaItem": [],
"FiadoSaldo": [],
"FiadoMovimentacao": [],
"FiadoFormaPagamento": [],
"FiadoParcela": [],
"Vales": []
}
}

Quando Status voltar 0, a sincronizacao foi recusada pela janela de intervalo configurada. Reexecute depois ou use force=true quando a integracao tiver permissao para forcar a carga.

ProdutoMigrador - POST/PUT /api/Produto/PostProdutos
Body: array Retorno: array de codigos
[
{
"Codigo": 1001,
"Nome": "Camiseta Basica",
"NomeReduzido": "Camiseta",
"CodigoBarras": "7891234567890",
"GrupoProduto": "Vestuario",
"Fornecedor": "Fornecedor Exemplo",
"UnidadeMedida": "UN",
"NCM": "61091000",
"CEST": "",
"Origem": 0,
"Ex": "",
"QuantidadeMinimaEstoque": 2.0,
"QuantidadeEstoque": 12.0,
"PrecoCusto": 25.00,
"PrecoVenda": 59.90,
"UsaBalanca": "N",
"CodigoReferencia": "CAM-BAS-001",
"possuiVariacao": "S",
"produtoPai": "",
"variacaoCor": "Preto",
"variacaoTamanho": "M",
"Largura": "20",
"Altura": "2",
"Comprimento": "30"
}
]
Campo Tipo Uso
NomestringNome principal do produto.
GrupoProduto, Fornecedor, UnidadeMedidastringO sistema tenta localizar os cadastros pelo nome/sigla.
NCM, CESTstring numericaConvertidos para codigo interno quando possivel.
UsaBalanca, possuiVariacaostringUse S ou N.
QuantidadeEstoque, PrecoCusto, PrecoVendadecimalUsados para criar estoque e precificacao inicial.
Produto - GET /api/Produto e retorno de produtos
GET sem body Model interno retornado
{
"Codigo": 1001,
"CodigoInternoProduto": 1001,
"CodigoExternoEcommerce": "EXT-1001",
"CodigoProdutoGrupo": 10,
"CodigoUnidadeMedida": 1,
"CodigoFornecedor": 50,
"CodigoNCM": 61091000,
"CodigoCEST": null,
"CodigoLocalProducao": null,
"CodigoBarras": "7891234567890",
"Nome": "Camiseta Basica",
"DescricaoEcommerce": "Produto de exemplo",
"NomeEcommerce": "Camiseta Basica",
"PedeObservacao": false,
"NomeReduzido": "Camiseta",
"EstoqueAtual": 12.0,
"PrecoCusto": 25.00,
"Margem": 139.60,
"PrecoVenda": 59.90,
"TaxaServico": false,
"Origem": 0,
"Ex": "",
"GradeCorTamanho": false,
"Kit": false,
"Combo": false,
"UsaComplemento": false,
"UsaCodigoBarraExtra": false,
"Altura": 2.0,
"Largura": 20.0,
"Comprimento": 30.0,
"DataInclusao": "2026-05-27T10:00:00",
"DataUltimaAlteracao": "2026-05-27T10:30:00",
"Excluido": false,
"CodigoEmpresa": 1,
"Ecommerce": true,
"UsaBalanca": false,
"CodigoReferencia": "CAM-BAS-001"
}

Para inserir produtos via API publica use ProdutoMigrador. O model Produto aparece principalmente em retornos de consulta e na carga incremental.

Pessoa - GET/POST/PUT /api/Pessoa
POST/PUT body: array Tipo 1 empresa, 2 funcionario, 3 cliente, 4 fornecedor
[
{
"Codigo": 2001,
"CodigoPessoaGrupo": 1,
"CodigoInterno": 2001,
"CodigoExternoEcommerce": "CLI-EXT-2001",
"Tipo": 3,
"FisicaJuridica": false,
"RegimeTributacao": null,
"CodigoTabelaPreco": null,
"Nome": "Cliente Exemplo",
"Apelido": "Cliente",
"DataNascimento": "1990-01-20T00:00:00",
"RG": "12345678",
"CPF": "12345678909",
"CNPJ": "",
"IE": "",
"IM": "",
"Email": "cliente@exemplo.com.br",
"Telefone": "1133334444",
"Celular": "11999998888",
"Whatsapp": "11999998888",
"CEP": "01001000",
"Estado": "SP",
"Cidade": "Sao Paulo",
"Bairro": "Centro",
"Logradouro": "Rua Exemplo",
"Numero": 100,
"Complemento": "Sala 1",
"CodigoMunicipioIBGE": 3550308,
"DataInclusao": "2026-05-27T10:00:00",
"DataUltimaAlteracao": "2026-05-27T10:30:00",
"Excluido": false,
"CodigoEmpresa": 1,
"ClienteFiado": false,
"ClienteLimiteCredito": 0.0
}
]
Campo Tipo Uso
CodigointChave usada para inserir/atualizar.
Tipoint3 para cliente; use os demais tipos apenas quando a integracao realmente gerenciar empresas, usuarios ou fornecedores.
FisicaJuridicabool?false pessoa fisica, true juridica.
DataUltimaAlteracaodatetime?No POST/PUT, registros antigos podem ser ignorados quando a base ja possui versao mais nova.
Venda - POST/PUT /api/Venda e PUT /api/PedidoOnline
Body: array Processado por upsert
[
{
"Codigo": 3001,
"CodigoExterno": 90001,
"CodigoEmpresa": 1,
"CodigoUsuario": 2,
"CodigoVendedor": 2,
"CodigoCliente": 2001,
"CodigoTerminal": 1,
"CodigoPedido": null,
"Status": 1,
"CPF": "12345678909",
"ValorBruto": 99.90,
"ValorTaxaServico": 0.00,
"ValorDesconto": 10.00,
"ValorLiquido": 89.90,
"ValorPago": 89.90,
"Troco": 0.00,
"Senha": 12,
"Entrega": false,
"TipoCupomFiscal": 2,
"NumeroCupomFiscal": 12345,
"NumeroCupomFiscalCancelado": null,
"DataHoraEmissao": "2026-05-27T10:30:00",
"DataInclusao": "2026-05-27T10:30:00",
"DataUltimaAlteracao": "2026-05-27T10:31:00",
"DataFaturamento": "2026-05-27T10:30:00",
"Excluido": false
}
]
Campo Tipo Uso
Statusint0 aberto, 1 fechado, 2 cancelado, 3 devolvido.
TipoCupomFiscalint1 SAT, 2 NFC-e.
CodigoEmpresa, CodigoUsuario, CodigoVendedor, CodigoClienteintDevem apontar para cadastros existentes/sincronizados.
ValorBruto, ValorDesconto, ValorLiquido, ValorPagodecimalValores totais da venda.
VendaItem - POST/PUT /api/VendaItem
Body: array Processado por upsert
[
{
"Codigo": 4001,
"CodigoVenda": 3001,
"CodigoProduto": 1001,
"CodigoTabelaPreco": null,
"NumeroItem": 1,
"Quantidade": 2.0,
"ValorUnitario": 49.95,
"ValorDescontoCalculado": 10.00,
"PorcentagemDesconto": 10.00,
"ValorDesconto": 10.00,
"ValorTotal": 89.90,
"PorcTaxaServico": 0.00,
"ValorTaxaServico": 0.00,
"ItemCombo": 0,
"CodigoCombo": 0,
"IdProdutoKit": null,
"CodigoProdutoComplementoKit": null,
"QuantidadeKit": null,
"Observacao": "Sem observacao",
"Cfop": "5102",
"CstIcms": "102",
"BcIcms": 0.00,
"AliqIcms": 0.00,
"ValorIcms": 0.00,
"ValorFcp": 0.00,
"CstPis": "01",
"BcPis": 89.90,
"AliqPis": 1.65,
"ValorPis": 1.48,
"CstCofins": "01",
"BcCofins": 89.90,
"AliqCofins": 7.60,
"ValorCofins": 6.83,
"DataInclusao": "2026-05-27T10:30:00",
"DataUltimaAlteracao": "2026-05-27T10:31:00",
"Excluido": false,
"DescontoProgressivo": false,
"CSTIBSCBS": null,
"cClassTribIBSCBS": null,
"vBCIBSCBS": null,
"pIBSUF": null,
"vIBSUF": null,
"pIBSMun": null,
"vIBSMun": null,
"vIBS": null,
"pCBS": null,
"vCBS": null
}
]

O model possui campos fiscais opcionais de IBS/CBS e tributacao regular, como pDifIBSUF, vDifIBSUF, pRedAliqIBSUF, pAliqEfetIBSUF, pDifIBSMun, vDifIBSMun, pRedAliqIBSMun, pAliqEfetIBSMun, pDifCBS, vDifCBS, pRedAliqCBS, pAliqEfetCBS, CSTReg, cClassTribReg, vTribRegIBSUF, vTribRegIBSMun e vTribRegCBS. Envie esses campos apenas quando a emissao fiscal da integracao precisar deles.

VendaFormaPagamento e VendaParcela - POST /api/VendaFormaPagamento
Body: array Taxa administrativa recalculada pelo servidor
[
{
"Codigo": 5001,
"CodigoVenda": 3001,
"CodigoFormaPagamento": 1,
"Valor": 89.90,
"CodigoCartaoBandeira": null,
"CodigoCartaoAdquirente": null,
"CartaoNumero": "",
"NumeroAutorizacao": "",
"CodigoTaxaAdministrativa": null,
"PorcentagemTaxaAdministrativa": 0.00,
"ValorTaxaAdministrativa": 0.00,
"DataInclusao": "2026-05-27T10:30:00",
"Parcelas": [
{
"Codigo": 6001,
"CodigoVendaFormaPagamento": 5001,
"Vencimento": "2026-06-27T00:00:00",
"Valor": 89.90,
"DataInclusao": "2026-05-27T10:30:00"
}
]
}
]
Campo Tipo Uso
CodigoFormaPagamentointForma de pagamento ja sincronizada.
CodigoCartaoBandeira, CodigoCartaoAdquirenteint?Obrigatorios apenas quando a forma for cartao e houver taxa configurada.
ParcelasarrayInforme quando a venda gerar parcelas/crediario.
CodigoTaxaAdministrativa, ValorTaxaAdministrativaint?/decimalPodem ser enviados, mas o controller recalcula antes de persistir.
Nfce e SAT - documentos fiscais
Nfce: POST/PUT /api/Nfce SAT: POST /api/SAT

Nfce

[
{
"Codigo": 7001,
"CodigoExterno": 90001,
"CodigoVenda": 3001,
"Lote": 10,
"Recibo": "123456789012345",
"Protocolo": "13526000000000000000",
"TipoAmbienteNfce": 1,
"Tipo": 1,
"Chave": "NFe35260500000000000100650010000012341000012345",
"XmlConteudo": "<NFe>...xml autorizado...</NFe>",
"Contingencia": false,
"StatusContingencia": 0,
"Transmitida": true,
"MsgRetorno": "Autorizado o uso da NF-e",
"DataAutorizacao": "2026-05-27T10:31:00",
"AguardandoProcessamento": false,
"CodigoEmpresa": 1,
"DataInclusao": "2026-05-27T10:31:00",
"DataUltimaAlteracao": "2026-05-27T10:31:00"
}
]

SAT

[
{
"Codigo": 8001,
"CodigoVenda": 3001,
"Tipo": 1,
"Chave": "35260500000000000100590000000000000000000000",
"QrCode": "https://satsp.fazenda.sp.gov.br/...",
"XML": "<CFe>...xml sat...</CFe>",
"DataInclusao": "2026-05-27T10:31:00",
"Excluido": false
}
]

Em Nfce, Tipo indica 1 emissao, 2 cancelamento e 3 inutilizacao. Quando XmlConteudo for enviado, o servidor tenta armazenar o XML no S3 e pode limpar o conteudo persistido.

CrediarioPagamento - POST /api/Crediario/Pagamento
Body: array Retorno: array de codigos de movimentacao
[
{
"Codigo": 0,
"CodigoUsuario": 2,
"CodigoContaReceber": 1234,
"CodigoFormaPagamento": 1,
"ValorCalculado": 100.00,
"ValorDesconto": 5.00,
"ValorAcrescimo": 0.00,
"Valor": 95.00
}
]

O servidor agrupa por CodigoContaReceber, cria movimentacoes financeiras e atualiza o status da conta para pago parcial ou pago total.

Modelos operacionais - backup, ecommerce e pedido online

BackupDesktop - POST /api/BackupDesktop

{
"Codigo": 0,
"CodigoEmpresa": 1,
"NomeArquivo": "backup-terminal-01-20260527.zip",
"CodigoTerminal": 1,
"Terminal": "Terminal 01",
"DataInclusao": "2026-05-27T23:00:00",
"Tamanho": 20480.50
}

ConfiguracaoBackup - PUT /api/ConfiguracaoBackup/Backup

{
"Key": 1,
"Value": 2
}

Key e o codigo da empresa; Value e o novo status de transferencia da base desktop.

EcommerceSyncResult - GET /api/Ecommerce/SincronizarProdutos e /api/Ecommerce/SincronizarPedidos

{
"Sucesso": true,
"Msg": "Executado com sucesso"
}

VendaEcommerce - GET /api/PedidoOnline

{
"Codigo": 9001,
"CodigoVenda": 3001,
"CodigoPedido": 4501,
"CodigoEmpresa": 1,
"CodigoEcommerce": 3,
"OrderId": "IFOOD-123",
"MerchantId": "merchant-001",
"Status": "CONFIRMED",
"ObservacaoPedido": "",
"ObservacaoEntrega": "",
"EntregaTipo": "DELIVERY",
"EntregaAgenda": "",
"EntregaAgendaDataInicio": null,
"EntregaAgendaDataFim": null,
"DataInclusao": "2026-05-27T10:00:00",
"DataUltimaAlteracao": "2026-05-27T10:05:00",
"JsonOrder": "{...}",
"EntregaEndereco": "Rua Exemplo, 100",
"NomeCliente": "Cliente Exemplo",
"DisplayId": "1234",
"NomeEcommerce": "iFood",
"ImprimiuProducao": false,
"ImprimiuExpedicao": false,
"Arquivado": false
}
Cadastros auxiliares - GET/POST/PUT em lote

Os endpoints de cadastro abaixo seguem a convencao /api/{Model}. Para POST/PUT, envie array do proprio model. Para GET incremental, use ?dataAlteracao=2026-05-27T08:00:00.

Model/endpoint Campos principais do JSON
ProdutoGrupoCodigo, CodigoProdutoGrupoPai, Nome, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
FormaPagamentoCodigo, Nome, CodigoSAT, DescricaoXPag, Tipo, IntegrarGatewayPagamento, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
UnidadeMedidaCodigo, Nome, Sigla, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
CFOPCodigo, CodigoReferencia, Nome, TipoOperacao, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
CESTCodigo, CodigoNCM, CodigoReferencia, Nome, Mva, MvaExcecao, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
NCMCodigo, CodigoReferencia, Nome, Tributado, SubstituicaoTributaria, AliquotaFCP, CentralAutomatica, TipoTributacaoPisCofins, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
ImpostoCodigo, CodigoReferencia, Tipo, SimplesNacional, Tributado, SubstituicaoTribtuaria, Nome, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
CentralTributoCodigo, Nome, CodigoCFOP, SAT, CodigoICMS, AliquotaICMS, CodigoPIS, AliquotaPIS, CodigoCOFINS, AliquotaCOFINS, Estado, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
IBPTCodigo, CodigoEmpresa, NCM, Tipo, Ex, Chave, AliquotaFederalNacional, AliquotaFederalImportado, AliquotaEstadual, AliquotaMunicipal, DataInicialVigencia, DataFinalVigencia, DataInclusao, DataUltimaAlteracao, Excluido.
ImpressoraCodigo, Nome, Endereco, Modelo, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
LocalProducaoCodigo, Nome, CodigoImpressora, SepararQuantidade, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
PessoaGrupoCodigo, Nome, ArredondamentoMaximo, DescontoMaximo, DescontoAutomatico, PermitePromocao, BloqueiaDesconto, PermissoesCodigos, DataInclusao, DataUltimaAlteracao, Excluido.
TabelaPrecoCodigo, Nome, Precificar, Ativo, CodigoEmpresas, Itens, DataInclusao, DataUltimaAlteracao, Excluido.
TaxaAdministrativaCodigo, Nome, CodigoEmpresa, CodigoCartaoAdquirente, CodigoCartaoBandeira, CodigoFormaPagamento, PrazoRecebimento, TaxaFixa, TaxaAVista, TaxaAteTresParcelas, TaxaAteSeisParcelas, TaxaAcimaSeisParcelas, DataInclusao, DataUltimaAlteracao, Excluido.
TerminalCodigo, CodigoExterno, CodigoEmpresa, Nome, Chave, Tipo, TerminalSAT, TerminalNfce, CodigoImpressoraPadrao, DocumentoFiscalPrincipal, ImprimirFicha, UsaTouch, UsaGaveta.
ObservacaoCodigo, Nome, CodigoEmpresa, CodigoEmpresas, DataInclusao, DataUltimaAlteracao, Excluido.
ProdutoObservacaoCodigo, CodigoProduto, CodigoObservacao, CodigoEmpresa, Posicao, DataInclusao, DataUltimaAlteracao, Excluido.
PromocaoCodigo, CodigoEmpresa, Descricao, dias da semana, DataInicial, DataFinal, HoraInicial, HoraFinal, Itens, DataInclusao, DataUltimaAlteracao, Excluido.
EstoqueCodigo, CodigoEmpresa, CodigoProduto, Quantidade, QuantidadeMinima, QuantidadeCusto, CustoTotal, UltimoCusto, CustoMedio, PrecoCusto, Margem, PrecoVenda, DataInclusao, DataUltimaAlteracao.

Exemplo generico de cadastro

[
{
"Codigo": 10,
"Nome": "Cadastro exemplo",
"CodigoEmpresa": 1,
"CodigoEmpresas": [1],
"DataInclusao": "2026-05-27T10:00:00",
"DataUltimaAlteracao": "2026-05-27T10:30:00",
"Excluido": false
}
]
Movimentacoes complementares - caixa, conferencia, fiado, vale e devolucao

Esses endpoints tambem recebem arrays do proprio model.

Endpoint Campos principais
POST /api/MovimentacaoCaixaCodigo, CodigoEmpresa, CodigoTerminal, CodigoFormaPagamento, CodigoVenda, CodigoUsuario, Tipo, Periodo, NumeroCaixa, Valor, NumeroItem, Observacao, DataInclusao, Excluido.
POST /api/ConferenciaCaixaCodigo, CodigoCaixa, CodigoUsuario, DataInclusao.
POST /api/ConferenciaCaixaItemCodigo, CodigoConferenciaCaixa, CodigoFormaPagamento, ValorInformado, ValorCalculado, ValorConferido, OpcaoLancamentoDiferenca, NominalOperador, CodigoPlanoContas.
POST|PUT /api/FiadoSaldoCodigo, CodigoEmpresa, CodigoCliente, Valor, DataInclusao, DataUltimaAlteracao.
POST|PUT /api/FiadoMovimentacaoCodigo, CodigoEmpresa, CodigoCliente, CodigoUsuario, CodigoVenda, NumeroCaixa, Tipo, Valor, CodigoContaReceberCrediario, DataInclusao, DataUltimaAlteracao, Estornado.
POST /api/FiadoFormaPagamentoCodigo, CodigoFiadoMovimentacao, CodigoFormaPagamento, CodigoCartaoAdquirente, CodigoCartaoBandeira, CartaoNumero, NumeroAutorizacao, Valor, DataInclusao, DataUltimaAlteracao, Excluido.
POST /api/FiadoParcelaCodigo, CodigoFiadoFormaPagamento, Vencimento, Valor, DataInclusao.
POST|PUT /api/ValeCodigo, CodigoUsuario, CodigoVendaDevolucao, CodigoVendaTroca, NumeroCaixaDevolucao, NumeroCaixaTroca, Valor, Excluido, DataInclusao, DataUltimaAlteracao.
POST /api/DevolucaoCodigo, CodigoUsuario, CodigoVenda, CodigoProduto, NumeroItem, Quantidade, ValorUnitario, PorcentagemDesconto, ValorDesconto, ValorTotal, NumeroCaixa, DataInclusao.
POST /api/TerminalLogCodigo, CodigoExterno, CodigoTerminal, DataHora, CodigoUsuario, NomeMaquina, SistemaOperacional, VersaoSistemaOperacional, Guid.

Exemplos

Gerar token

curl -X POST "https://easyforme.com.br/Token" ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-d "grant_type=password&username=integracao@empresa.com.br&password=senha"

Buscar carga incremental

curl "https://easyforme.com.br/api/TodosRegistros?dataAlteracao=2026-05-27T08:00:00&force=true&mov=false" ^
-H "Authorization: Bearer SEU_ACCESS_TOKEN" ^
-H "Accept: application/json"

Enviar vendas

curl -X POST "https://easyforme.com.br/api/Venda" ^
-H "Authorization: Bearer SEU_ACCESS_TOKEN" ^
-H "Content-Type: application/json" ^
-d "[{ \"Codigo\": 123, \"CodigoEmpresa\": 1, \"ValorLiquido\": 49.90, \"DataInclusao\": \"2026-05-27T10:30:00\" }]"

Erros e limites

Status Significado
200 Requisicao processada. Alguns endpoints retornam lista de codigos inseridos/atualizados.
400 Dados obrigatorios ausentes, data invalida ou payload fora do formato esperado.
401 Token ausente, expirado ou invalido.
404 Registro nao encontrado quando a consulta e por codigo.
500 Erro interno durante processamento ou persistencia.

Boas praticas

  • Use HTTPS em producao e guarde o token fora do front-end publico.
  • Controle a ultima data sincronizada no integrador e reexecute a janela com margem em caso de falha.
  • Envie lotes moderados para vendas, itens e pagamentos, evitando payloads muito grandes.
  • Use CodigoEmpresa sempre que o endpoint aceitar esse campo, principalmente em ambientes multiempresa.
  • Valide produtos, clientes e formas de pagamento antes de enviar movimentos vinculados.