Por que usar?
API testada em produção e liberada para a comunidade experimentar em larga escala. Já com as tags do IBS/CBS.
Autenticação
Use Authorization: Bearer <seu-token> em todas as
chamadas. Solicite o token no contato privado.
Formato
Padrão REST com JSON. Erros padronizados com
status, message e error.
Endpoints principais
-
POST
/v1/nfe— emitir NFe -
POST
/v1/nfce— emitir NFCe -
GET
/v1/nfe?idDfe={idDfe}— consultar NFe -
GET
/v1/nfce?idDfe={idDfe}— consultar NFCe -
GET
/v1/health— status do serviço
⚠️ Ajuste a Base URL e o payload conforme sua documentação oficial no Postman.
Exemplo de payload (resumido)
{
"tpOp": "VENDA",
"emit": {
"CPFCNPJ": "12345678901",
"xNome": "João da Silva",
"enderEmit": { "UF": "SP", "xMun": "São Paulo" }
},
"prod": [
{ "cProd": "ABC123", "xProd": "Produto A", "NCM": "22030000",
"CFOP": "5102", "qCom": "2", "vProd": "50.0" }
],
"pag": {
"detPag": [
{ "tPag": "01", "vPag": "100.00" }
]
}
Inclua campos fiscais específicos (NCM, CST, CFOP, CSOSN, etc.) conforme regras da UF e do regime tributário.
Exemplos de código
Emitir NFe
curl -X POST https://api-notas-teste-api.jdmo92.easypanel.host/v1/nfe \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"async": true , NFe : [ { "idExternal" : "5", "infNF" : {}}]}'
async function emitirNFe(){
const r = await fetch('https://api-notas-teste-api.jdmo92.easypanel.host/v1/nfe',{
method:'POST',
headers:{
'Authorization':'Bearer SEU_TOKEN',
'Content-Type':'application/json'
},
body: JSON.stringify({"async": true , NFe : [ { "idExternal" : "5", "infNF" : {}}]})
});
const json = await r.json();
console.log(json);
}
// uses REST.Client, REST.Types, System.JSON
procedure EmitirNFe;
var
Client: TRESTClient;
Req: TRESTRequest;
Resp: TRESTResponse;
Body: TStringStream;
begin
Client := TRESTClient.Create('https://api-notas-teste-api.jdmo92.easypanel.host');
Resp := TRESTResponse.Create(nil);
Req := TRESTRequest.Create(nil);
try
Req.Client := Client;
Req.Response := Resp;
Req.Resource := '/v1/nfe';
Req.Method := rmPOST;
Req.AddParameter('Authorization','Bearer SEU_TOKEN', pkHTTPHEADER, [poDoNotEncode]);
Req.AddParameter('Content-Type','application/json', pkHTTPHEADER, [poDoNotEncode]);
Body := TStringStream.Create(
'{"async": true , NFe : [ { "idExternal" : "5", "infNF" : {}}]}',
TEncoding.UTF8
);
Req.AddBody(Body.DataString, ctAPPLICATION_JSON);
Req.Execute;
ShowMessage(Resp.Content);
finally
Body.Free;
Req.Free; Resp.Free; Client.Free;
end;
end;
Consultar NFe
curl -X GET \
-H "Authorization: Bearer SEU_TOKEN" \
https://api-notas-teste-api.jdmo92.easypanel.host/v1/nfe?chDfe=3515081234567890123455001
async function consultarNFe(id){
const r = await fetch(`https://api-notas-teste-api.jdmo92.easypanel.host/v1/nfe/${id}`,{
headers:{'Authorization':'Bearer SEU_TOKEN'}
});
return r.json();
}
// uses REST.Client
function ConsultarNFe(const AId: string): string;
var
C: TRESTClient; R: TRESTRequest; P: TRESTResponse;
begin
C := TRESTClient.Create('https://api-notas-teste-api.jdmo92.easypanel.host');
P := TRESTResponse.Create(nil);
R := TRESTRequest.Create(nil);
try
R.Client := C; R.Response := P; R.Resource := '/v1/nfe/' + AId; R.Method := rmGET;
R.AddParameter('Authorization','Bearer SEU_TOKEN', pkHTTPHEADER, [poDoNotEncode]);
R.Execute; Result := P.Content;
finally R.Free; P.Free; C.Free; end;
end;
Resposta de sucesso (exemplo)
{
"statusCode": 201,
"data": {
"NFe": [
{
"idDfe": "0e0ded7e-fdef-4d0d-b3c6-8430096520b5",
"idExternal": "60",
"dhEmi": "2025-08-19T10:30:00-03:00",
"idBatch": "7d0128f8-3d31-436e-85a1-f16105b9477f",
"nNF": "7769",
"serie": "1",
"chDfe": "3125000000000000000000000000000000",
"vNF": "1200.50",
"cStat": "100",
"xMotivo": "Autorizado o uso da NF-e",
"nProt": "100000000",
"digVal": "ZT11AOAOqhxSUQuaiduaA=",
"dhRecbto": "2025-08-19T10:35:15-03:00",
"nRec": "310000086918980",
"tpAmb": "2",
"situation": "InProcessing",
"situationDfe": "Emitido",
"xml": "base64",
"pdf": "base64",
"xmlLink": "xmlLink",
"pdfLink": "pdfLink"
}
],
"currentPage": "1",
"totalPages": "1",
"totalItens": "1"
}
}
Erro padronizado (exemplo)
{
"status": 401,
"message": ["Email ou senha incorretos"],
"error": "Unauthorized"
}
Boas práticas
- Use ambiente de homologação antes de produção.
- Versione chamadas:
/v1/.... - Trate retries exponenciais para timeouts.
Quer testar?
Envie um email para "patrick@ctec.com.br" com o assunto "Testar API Emissão Notas" e vamos conversar.