Quickstart
Siga estes 4 passos para emitir sua primeira NFe.
1. Crie sua conta
- cURL
- Node.js
- Python
curl -X POST https://api.engineapi.com.br/auth/register-partner \
-H "Content-Type: application/json" \
-d '{
"name": "Minha Software House",
"email": "dev@minhaempresa.com",
"password": "senhaSegura123"
}'
const response = await fetch('https://api.engineapi.com.br/auth/register-partner', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'Minha Software House',
email: 'dev@minhaempresa.com',
password: 'senhaSegura123',
}),
});
const { token, partner } = await response.json();
console.log('Token:', token);
import httpx
resp = httpx.post('https://api.engineapi.com.br/auth/register-partner', json={
'name': 'Minha Software House',
'email': 'dev@minhaempresa.com',
'password': 'senhaSegura123',
})
data = resp.json()
token = data['token']
print(f"Token: {token}")
informação
Guarde o token retornado. Você vai precisar dele em todas as chamadas.
2. Cadastre uma empresa emissora
- cURL
- Node.js
- Python
curl -X POST https://api.engineapi.com.br/companies \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cnpj": "11222333000144",
"name": "Empresa Exemplo Ltda",
"taxRegime": 1,
"environment": 2,
"address": {
"street": "Rua Exemplo", "number": "100",
"district": "Centro", "city": "São Paulo",
"cityCode": "3550308", "state": "SP", "zipCode": "01001000"
}
}'
const TOKEN = 'SEU_TOKEN';
const resp = await fetch('https://api.engineapi.com.br/companies', {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
cnpj: '11222333000144',
name: 'Empresa Exemplo Ltda',
taxRegime: 1,
environment: 2,
address: {
street: 'Rua Exemplo', number: '100',
district: 'Centro', city: 'São Paulo',
cityCode: '3550308', state: 'SP', zipCode: '01001000',
},
}),
});
const { id: issuerId } = await resp.json();
console.log('Issuer ID:', issuerId);
TOKEN = 'SEU_TOKEN'
resp = httpx.post('https://api.engineapi.com.br/companies',
headers={'Authorization': f'Bearer {TOKEN}'},
json={
'cnpj': '11222333000144',
'name': 'Empresa Exemplo Ltda',
'taxRegime': 1,
'environment': 2,
'address': {
'street': 'Rua Exemplo', 'number': '100',
'district': 'Centro', 'city': 'São Paulo',
'cityCode': '3550308', 'state': 'SP', 'zipCode': '01001000',
},
},
)
issuer_id = resp.json()['id']
print(f"Issuer ID: {issuer_id}")
3. Upload do certificado digital
- cURL
- Node.js
- Python
curl -X POST https://api.engineapi.com.br/companies/ISSUER_ID/certificate \
-H "Authorization: Bearer SEU_TOKEN" \
-F "certificate=@certificado.pfx" \
-F "password=senhaDoCertificado"
import { readFileSync } from 'fs';
const form = new FormData();
form.append('certificate', new Blob([readFileSync('certificado.pfx')]));
form.append('password', 'senhaDoCertificado');
await fetch(`https://api.engineapi.com.br/companies/${issuerId}/certificate`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${TOKEN}` },
body: form,
});
with open('certificado.pfx', 'rb') as f:
resp = httpx.post(
f'https://api.engineapi.com.br/companies/{issuer_id}/certificate',
headers={'Authorization': f'Bearer {TOKEN}'},
files={'certificate': ('cert.pfx', f, 'application/x-pkcs12')},
data={'password': 'senhaDoCertificado'},
)
4. Emita sua primeira NFe
- cURL
- Node.js
- Python
curl -X POST https://api.engineapi.com.br/nfe/emitir \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"issuerId": "ISSUER_ID",
"naturezaOperacao": "VENDA DE MERCADORIA",
"destinatario": {
"cnpj": "99888777000155",
"nome": "Cliente Exemplo SA",
"endereco": {
"logradouro": "Av Brasil", "numero": "500",
"bairro": "Centro", "codigoMunicipio": "3550308",
"municipio": "São Paulo", "uf": "SP", "cep": "01001000"
},
"indicadorIE": 1
},
"itens": [{
"codigo": "PROD001", "descricao": "Produto Teste",
"ncm": "84713012", "cfop": "5102", "unidade": "UN",
"quantidade": 2, "valorUnitario": 150.00, "valorTotal": 300.00,
"icms": { "origem": 0, "cst": "00", "aliquota": 18,
"baseCalculo": 300.00, "valor": 54.00 }
}],
"pagamento": { "forma": "01", "valor": 300.00 }
}'
const nfe = await fetch('https://api.engineapi.com.br/nfe/emitir', {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
issuerId: 'ISSUER_ID',
naturezaOperacao: 'VENDA DE MERCADORIA',
destinatario: {
cnpj: '99888777000155',
nome: 'Cliente Exemplo SA',
endereco: {
logradouro: 'Av Brasil', numero: '500',
bairro: 'Centro', codigoMunicipio: '3550308',
municipio: 'São Paulo', uf: 'SP', cep: '01001000',
},
indicadorIE: 1,
},
itens: [{
codigo: 'PROD001', descricao: 'Produto Teste',
ncm: '84713012', cfop: '5102', unidade: 'UN',
quantidade: 2, valorUnitario: 150.00, valorTotal: 300.00,
icms: { origem: 0, cst: '00', aliquota: 18,
baseCalculo: 300.00, valor: 54.00 },
}],
pagamento: { forma: '01', valor: 300.00 },
}),
});
const { invoice } = await nfe.json();
console.log('NFe autorizada:', invoice.accessKey);
resp = httpx.post('https://api.engineapi.com.br/nfe/emitir',
headers={'Authorization': f'Bearer {TOKEN}'},
json={
'issuerId': 'ISSUER_ID',
'naturezaOperacao': 'VENDA DE MERCADORIA',
'destinatario': {
'cnpj': '99888777000155',
'nome': 'Cliente Exemplo SA',
'endereco': {
'logradouro': 'Av Brasil', 'numero': '500',
'bairro': 'Centro', 'codigoMunicipio': '3550308',
'municipio': 'São Paulo', 'uf': 'SP', 'cep': '01001000',
},
'indicadorIE': 1,
},
'itens': [{
'codigo': 'PROD001', 'descricao': 'Produto Teste',
'ncm': '84713012', 'cfop': '5102', 'unidade': 'UN',
'quantidade': 2, 'valorUnitario': 150.00, 'valorTotal': 300.00,
'icms': {'origem': 0, 'cst': '00', 'aliquota': 18,
'baseCalculo': 300.00, 'valor': 54.00},
}],
'pagamento': {'forma': '01', 'valor': 300.00},
},
)
invoice = resp.json()['invoice']
print(f"NFe autorizada: {invoice['accessKey']}")
Resposta de sucesso
{
"success": true,
"invoice": {
"id": "uuid-da-nota",
"accessKey": "35260211222333000144550010000000011000000019",
"number": 1,
"series": 1,
"status": "AUTHORIZED"
}
}
🎉 Pronto! Sua primeira nota fiscal foi emitida.
Próximos passos
- 📖 Autenticação — JWT, API Keys, multi-tenancy
- 📜 Primeira Emissão — campos obrigatórios detalhados
- 🔔 Webhooks — receba notificações em tempo real