MENU navbar-image

Introdução

API para emissão e cancelamento de notas fiscais de serviço.

Esta documentação tem como objetivo fornecer todas as informações que você precisa para trabalhar com a nossa API.

Autenticando requisições

Para autenticar as requisições, inclua o header Authorization com o valor "Bearer {YOUR_AUTH_KEY}".

Para obter o token, acesse o sistema, vá em Desenvolvedor → API Keys e gere um API Token. O token gerado deverá ser enviado em todas as requisições.

Todos os endpoints autenticados são marcados com o selo requer autenticação na documentação abaixo.

Certificado digital

APIs para gerenciamento do certificado digital A1 da empresa. O certificado é necessário para a emissão de documentos fiscais que exigem assinatura digital.

Enviar certificado

requer autenticação

Envia e armazena o certificado digital A1 (formato PFX/P12) para a empresa identificada pelo UUID. O certificado é criptografado antes de ser armazenado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/certificado';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'cert_file' => 'MIIKXAIBAzCCCh...',
            'cert_pass' => 'minha_senha_secreta',
            'valid_ultil' => '2027-12-31',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/certificado"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "cert_file": "MIIKXAIBAzCCCh...",
    "cert_pass": "minha_senha_secreta",
    "valid_ultil": "2027-12-31"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/certificado'
payload = {
    "cert_file": "MIIKXAIBAzCCCh...",
    "cert_pass": "minha_senha_secreta",
    "valid_ultil": "2027-12-31"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/certificado" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"cert_file\": \"MIIKXAIBAzCCCh...\",
    \"cert_pass\": \"minha_senha_secreta\",
    \"valid_ultil\": \"2027-12-31\"
}"

Exemplo de resposta (201):


{
    "id": 1,
    "valid_until": "2027-12-31",
    "company_id": 1
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Exemplo de resposta (422):


{
    "message": "O certificado é obrigatório.",
    "errors": {
        "cert_file": [
            "O certificado é obrigatório."
        ]
    }
}
 

Requisição      

POST api/v2/empresas/{uuid}/certificado

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Parâmetros do corpo

cert_file   string     

Arquivo do certificado codificado em Base64. Exemplo: MIIKXAIBAzCCCh...

cert_pass   string     

Senha do certificado. Exemplo: minha_senha_secreta

valid_ultil   string  optional    

Data de validade do certificado no formato Y-m-d. Exemplo: 2027-12-31

Empresas

APIs para gerenciamento das empresas emissoras vinculadas à conta.

Listar empresas

requer autenticação

Retorna todas as empresas vinculadas à equipe do usuário autenticado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
curl --request GET \
    --get "https://devnota.com.br/api/v2/empresas" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200):


[
    {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "name": "Empresa Exemplo LTDA",
        "fantasy_name": "Exemplo",
        "cnpj": "12345678000199",
        "cnpj_formatted": "12.345.678/0001-99",
        "nature": "PJ",
        "cnae": null,
        "im": "123456",
        "ie": null,
        "status": "active",
        "emission_types": [
            "nfse"
        ],
        "regime": "SIMPLES",
        "special_tax_regime": "1",
        "special_tax_regime_label": "Micro empresa municipal",
        "tax_assessment_regime": null,
        "cep": "50010000",
        "address": "Rua das Flores",
        "number": "123",
        "neighborhood": "Centro",
        "complement": null,
        "certificate_status": {
            "type": "active",
            "date": "2027-12-31T00:00:00.000000Z"
        },
        "city": {
            "ibge_code": "2611606",
            "name": "Recife"
        },
        "created_at": "2026-01-01T00:00:00.000000Z",
        "updated_at": "2026-01-01T00:00:00.000000Z"
    }
]
 

Requisição      

GET api/v2/empresas

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Cadastrar empresa

requer autenticação

Cadastra uma nova empresa emissora vinculada à equipe do usuário autenticado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'nature' => 'PJ',
            'name' => 'Empresa Exemplo LTDA',
            'fantasy_name' => 'Exemplo',
            'cnpj' => '12345678000199',
            'cnae' => '6201501',
            'ibge_code' => '2611606',
            'cep' => '50010000',
            'address' => 'Rua das Flores',
            'number' => '123',
            'neighborhood' => 'Centro',
            'complement' => 'Sala 1',
            'regime' => 'SIMPLES',
            'special_tax_regime' => 0,
            'tax_assessment_regime' => null,
            'emission_types' => [
                'nfse',
            ],
            'im' => '123456',
            'ie' => '123456789',
            'csc_production' => 'ABC123',
            'csc_developer' => 'DEF456',
            'csc_id' => '0001',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "nature": "PJ",
    "name": "Empresa Exemplo LTDA",
    "fantasy_name": "Exemplo",
    "cnpj": "12345678000199",
    "cnae": "6201501",
    "ibge_code": "2611606",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "complement": "Sala 1",
    "regime": "SIMPLES",
    "special_tax_regime": 0,
    "tax_assessment_regime": null,
    "emission_types": [
        "nfse"
    ],
    "im": "123456",
    "ie": "123456789",
    "csc_production": "ABC123",
    "csc_developer": "DEF456",
    "csc_id": "0001"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas'
payload = {
    "nature": "PJ",
    "name": "Empresa Exemplo LTDA",
    "fantasy_name": "Exemplo",
    "cnpj": "12345678000199",
    "cnae": "6201501",
    "ibge_code": "2611606",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "complement": "Sala 1",
    "regime": "SIMPLES",
    "special_tax_regime": 0,
    "tax_assessment_regime": null,
    "emission_types": [
        "nfse"
    ],
    "im": "123456",
    "ie": "123456789",
    "csc_production": "ABC123",
    "csc_developer": "DEF456",
    "csc_id": "0001"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/empresas" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nature\": \"PJ\",
    \"name\": \"Empresa Exemplo LTDA\",
    \"fantasy_name\": \"Exemplo\",
    \"cnpj\": \"12345678000199\",
    \"cnae\": \"6201501\",
    \"ibge_code\": \"2611606\",
    \"cep\": \"50010000\",
    \"address\": \"Rua das Flores\",
    \"number\": \"123\",
    \"neighborhood\": \"Centro\",
    \"complement\": \"Sala 1\",
    \"regime\": \"SIMPLES\",
    \"special_tax_regime\": 0,
    \"tax_assessment_regime\": null,
    \"emission_types\": [
        \"nfse\"
    ],
    \"im\": \"123456\",
    \"ie\": \"123456789\",
    \"csc_production\": \"ABC123\",
    \"csc_developer\": \"DEF456\",
    \"csc_id\": \"0001\"
}"

Exemplo de resposta (201):


{
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Empresa Exemplo LTDA",
    "fantasy_name": "Exemplo",
    "cnpj": "12345678000199",
    "cnpj_formatted": "12.345.678/0001-99",
    "nature": "PJ",
    "cnae": null,
    "im": "123456",
    "ie": null,
    "status": "active",
    "emission_types": [
        "nfse"
    ],
    "regime": "SIMPLES",
    "special_tax_regime": "1",
    "special_tax_regime_label": "Micro empresa municipal",
    "tax_assessment_regime": null,
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "complement": null,
    "certificate_status": {
        "type": "none",
        "date": null
    },
    "city": {
        "ibge_code": "2611606",
        "name": "Recife"
    },
    "created_at": "2026-01-01T00:00:00.000000Z",
    "updated_at": "2026-01-01T00:00:00.000000Z"
}
 

Exemplo de resposta (422):


{
    "message": "A razão social é obrigatória.",
    "errors": {
        "name": [
            "A razão social é obrigatória."
        ]
    }
}
 

Requisição      

POST api/v2/empresas

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros do corpo

nature   string     

Natureza jurídica. Valores aceitos: PJ ou PF. Exemplo: PJ

name   string     

Razão social da empresa. Exemplo: Empresa Exemplo LTDA

fantasy_name   string     

Nome fantasia da empresa. Exemplo: Exemplo

cnpj   string     

CNPJ (14 dígitos) ou CPF (11 dígitos) sem pontuação. Exemplo: 12345678000199

cnae   string  optional    

Código CNAE principal. Exemplo: 6201501

ibge_code   string     

Código IBGE do município da empresa. Exemplo: 2611606

cep   string  optional    

CEP, sem pontuação. Exemplo: 50010000

address   string  optional    

Logradouro. Exemplo: Rua das Flores

number   string  optional    

Número do endereço. Exemplo: 123

neighborhood   string  optional    

Bairro. Exemplo: Centro

complement   string  optional    

Complemento. Exemplo: Sala 1

regime   string     

Regime tributário. Valores aceitos: REAL, PRESUMIDO, SIMPLES, MEI, SIMPLES_EXCESSO. Exemplo: SIMPLES

special_tax_regime   integer     

Código do regime especial de tributação. Use 0 para nenhum. Exemplo: 0

tax_assessment_regime   string  optional    

Regime de apuração tributária. Obrigatório quando regime for SIMPLES_EXCESSO.

emission_types   string[]  optional    

Tipos de emissão habilitados. Valores aceitos: nfse, nfe, nfce.

im   string  optional    

Inscrição municipal. Obrigatória quando emission_types incluir nfse. Exemplo: 123456

ie   string  optional    

Inscrição estadual. Obrigatória quando emission_types incluir nfe ou nfce. Exemplo: 123456789

csc_production   string  optional    

CSC de produção. Obrigatório quando emission_types incluir nfce. Exemplo: ABC123

csc_developer   string  optional    

CSC de homologação. Obrigatório quando emission_types incluir nfce. Exemplo: DEF456

csc_id   string  optional    

Identificador do CSC. Obrigatório quando emission_types incluir nfce. Exemplo: 0001

Atualizar empresa

requer autenticação

Atualiza os dados cadastrais da empresa identificada pelo UUID.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'nature' => 'PJ',
            'name' => 'Empresa Exemplo LTDA',
            'fantasy_name' => 'Exemplo',
            'cnae' => '6201501',
            'ibge_code' => '2611606',
            'cep' => '50010000',
            'address' => 'Rua das Flores',
            'number' => '123',
            'neighborhood' => 'Centro',
            'complement' => 'Sala 1',
            'regime' => 'SIMPLES',
            'special_tax_regime' => 0,
            'tax_assessment_regime' => null,
            'emission_types' => [
                'nfse',
            ],
            'im' => '123456',
            'ie' => '123456789',
            'csc_production' => 'ABC123',
            'csc_developer' => 'DEF456',
            'csc_id' => '0001',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "nature": "PJ",
    "name": "Empresa Exemplo LTDA",
    "fantasy_name": "Exemplo",
    "cnae": "6201501",
    "ibge_code": "2611606",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "complement": "Sala 1",
    "regime": "SIMPLES",
    "special_tax_regime": 0,
    "tax_assessment_regime": null,
    "emission_types": [
        "nfse"
    ],
    "im": "123456",
    "ie": "123456789",
    "csc_production": "ABC123",
    "csc_developer": "DEF456",
    "csc_id": "0001"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000'
payload = {
    "nature": "PJ",
    "name": "Empresa Exemplo LTDA",
    "fantasy_name": "Exemplo",
    "cnae": "6201501",
    "ibge_code": "2611606",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "complement": "Sala 1",
    "regime": "SIMPLES",
    "special_tax_regime": 0,
    "tax_assessment_regime": null,
    "emission_types": [
        "nfse"
    ],
    "im": "123456",
    "ie": "123456789",
    "csc_production": "ABC123",
    "csc_developer": "DEF456",
    "csc_id": "0001"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
curl --request PUT \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nature\": \"PJ\",
    \"name\": \"Empresa Exemplo LTDA\",
    \"fantasy_name\": \"Exemplo\",
    \"cnae\": \"6201501\",
    \"ibge_code\": \"2611606\",
    \"cep\": \"50010000\",
    \"address\": \"Rua das Flores\",
    \"number\": \"123\",
    \"neighborhood\": \"Centro\",
    \"complement\": \"Sala 1\",
    \"regime\": \"SIMPLES\",
    \"special_tax_regime\": 0,
    \"tax_assessment_regime\": null,
    \"emission_types\": [
        \"nfse\"
    ],
    \"im\": \"123456\",
    \"ie\": \"123456789\",
    \"csc_production\": \"ABC123\",
    \"csc_developer\": \"DEF456\",
    \"csc_id\": \"0001\"
}"

Exemplo de resposta (200):


{
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Empresa Exemplo LTDA",
    "fantasy_name": "Exemplo",
    "cnpj": "12345678000199",
    "cnpj_formatted": "12.345.678/0001-99",
    "nature": "PJ",
    "cnae": null,
    "im": "123456",
    "ie": null,
    "status": "active",
    "emission_types": [
        "nfse"
    ],
    "regime": "SIMPLES",
    "special_tax_regime": "1",
    "special_tax_regime_label": "Micro empresa municipal",
    "tax_assessment_regime": null,
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "complement": null,
    "certificate_status": {
        "type": "active",
        "date": "2027-12-31T00:00:00.000000Z"
    },
    "city": {
        "ibge_code": "2611606",
        "name": "Recife"
    },
    "created_at": "2026-01-01T00:00:00.000000Z",
    "updated_at": "2026-01-01T00:00:00.000000Z"
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Exemplo de resposta (422):


{
    "message": "A razão social é obrigatória.",
    "errors": {
        "name": [
            "A razão social é obrigatória."
        ]
    }
}
 

Requisição      

PUT api/v2/empresas/{uuid}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Parâmetros do corpo

nature   string  optional    

Natureza jurídica da empresa. Valores aceitos: PJ ou PF. Exemplo: PJ

Must be one of:
  • PJ
  • PF
name   string     

Razão social da empresa. Exemplo: Empresa Exemplo LTDA

fantasy_name   string     

Nome fantasia da empresa. Exemplo: Exemplo

cnae   string  optional    

Código CNAE principal. Exemplo: 6201501

ibge_code   string  optional    

Código IBGE do município. Informe apenas se deseja alterar o município. Exemplo: 2611606

cep   string  optional    

CEP, sem pontuação. Exemplo: 50010000

address   string  optional    

Logradouro. Exemplo: Rua das Flores

number   string  optional    

Número do endereço. Exemplo: 123

neighborhood   string  optional    

Bairro. Exemplo: Centro

complement   string  optional    

Complemento. Exemplo: Sala 1

regime   string     

Regime tributário. Valores aceitos: REAL, PRESUMIDO, SIMPLES, MEI, SIMPLES_EXCESSO. Exemplo: SIMPLES

special_tax_regime   integer     

Código do regime especial de tributação. Use 0 para nenhum. Exemplo: 0

tax_assessment_regime   string  optional    

Regime de apuração tributária. Obrigatório quando regime for SIMPLES_EXCESSO.

emission_types   string[]  optional    

Tipos de emissão habilitados. Valores aceitos: nfse, nfe, nfce.

im   string  optional    

Inscrição municipal. Obrigatória quando emission_types incluir nfse. Exemplo: 123456

ie   string  optional    

Inscrição estadual. Obrigatória quando emission_types incluir nfe ou nfce. Exemplo: 123456789

csc_production   string  optional    

CSC de produção. Obrigatório quando emission_types incluir nfce. Exemplo: ABC123

csc_developer   string  optional    

CSC de homologação. Obrigatório quando emission_types incluir nfce. Exemplo: DEF456

csc_id   string  optional    

Identificador do CSC. Obrigatório quando emission_types incluir nfce. Exemplo: 0001

Remover empresa

requer autenticação

Remove uma empresa emissora identificada pelo UUID.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
curl --request DELETE \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200):


{
    "message": "Empresa removida com sucesso."
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Requisição      

DELETE api/v2/empresas/{uuid}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

NF-e

APIs para emissão de notas fiscais eletrônicas (venda de produto) com payload simplificado.

Emitir NF-e

requer autenticação

Cria uma solicitação de emissão de NF-e (venda de produto) usando o payload da API v2.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/nfe/gerar';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Company-uuid' => '{YOUR_COMPANY_UUID}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'callback' => 'https://example.com/callback',
            'ambiente' => 'developer',
            'numero' => 1,
            'serie' => 1,
            'pedido' => [
                'naturezaOperacao' => 'Venda de mercadoria',
                'consumidorFinal' => 'SIM',
                'presencaConsumidor' => 'OperacaoPresencial',
                'finalidade' => 'Normal',
                'notasReferenciadas' => [
                    '35260712345678000190550010000001231234567890',
                ],
                'informacoesComplementares' => 'Garantia de 90 dias para o produto.',
                'informacoesFisco' => 'Documento emitido por ME ou EPP optante pelo Simples Nacional.',
                'pagamento' => [
                    'formas' => [
                        [
                            'tipo' => 'Dinheiro',
                            'valor' => 7.69,
                        ],
                    ],
                ],
                'faturamento' => [
                    'numero' => '001/2026',
                    'valorOriginal' => 1246.5,
                    'valorDesconto' => 0.0,
                    'valorLiquido' => 1246.5,
                    'duplicatas' => [
                        [
                            'numero' => '001/2026-1',
                            'vencimento' => '2026-07-30',
                            'valor' => 623.25,
                        ],
                    ],
                ],
                'frete' => [
                    'modalidade' => 'SemFrete',
                    'transportadora' => [
                        'cpfCnpj' => '12345678000199',
                        'nome' => 'Transportes Rápidos LTDA',
                        'ie' => '1234567',
                        'endereco' => 'Rua A, 100',
                        'municipio' => 'Curitiba',
                        'uf' => 'PR',
                    ],
                    'veiculo' => [
                        'placa' => 'ABC1D23',
                        'uf' => 'PR',
                        'rntc' => 'RNTC123',
                    ],
                    'volumes' => [
                        [
                            'quantidade' => 2,
                            'especie' => 'Caixa',
                            'marca' => 'Marca X',
                            'numeracao' => '1/2',
                            'pesoLiquido' => 9.5,
                            'pesoBruto' => 10.5,
                        ],
                    ],
                ],
            ],
            'cliente' => [
                'nome' => 'Carlos Eduardo Lima',
                'cpfCnpj' => '98765432100',
                'email' => '[email protected]',
                'telefone' => '(21) 99876-5432',
                'endereco' => [
                    'uf' => 'PR',
                    'cidade' => '4106902',
                    'logradouro' => 'Avenida Brasil',
                    'numero' => '1500',
                    'complemento' => null,
                    'bairro' => 'Água Verde',
                    'cep' => '80240040',
                ],
            ],
            'itens' => [
                [
                    'cfop' => '5405',
                    'codigo' => '000068',
                    'descricao' => 'Mouse Gamer RGB',
                    'ncm' => '22030000',
                    'ean' => '7891234567891',
                    'cest' => '0302100',
                    'quantidade' => 1.0,
                    'unidadeMedida' => 'UN',
                    'valorUnitario' => 1246.5,
                    'desconto' => 50.0,
                    'impostos' => [
                        'icms' => [
                            'situacaoTributaria' => '60',
                            'origem' => '0',
                            'baseCalculo' => 0.0,
                            'aliquota' => 0.0,
                            'valor' => 0.0,
                            'modalidadeBaseCalculo' => '3',
                            'aliquotaCredito' => 1.25,
                            'valorCredito' => 12.5,
                            'baseCalculoST' => 0.0,
                            'aliquotaST' => 0.0,
                            'valorST' => 0.0,
                            'modalidadeBaseCalculoST' => '4',
                            'vBCFCP' => 100.0,
                            'pFCP' => 2.0,
                            'vFCP' => 2.0,
                            'vBCFCPST' => 100.0,
                            'pFCPST' => 2.0,
                            'vFCPST' => 2.0,
                        ],
                        'difal' => [
                            'baseCalculo' => 500.0,
                            'aliquotaInterna' => 18.0,
                            'aliquotaInterestadual' => 12.0,
                            'valor' => 30.0,
                            'valorRemetente' => 0.0,
                            'baseCalculoFCP' => 500.0,
                            'aliquotaFCP' => 2.0,
                            'valorFCP' => 10.0,
                        ],
                        'ipi' => [
                            'situacaoTributaria' => '50',
                            'enquadramentoLegal' => '999',
                            'baseCalculo' => 500.0,
                            'aliquota' => 10.0,
                            'valor' => 50.0,
                            'quantidadeUnidadeTributavel' => 10.0,
                            'valorUnidadeTributavel' => 1.5,
                            'cnpjProdutor' => '12345678000190',
                            'codigoSelo' => 'SELO123',
                            'quantidadeSelo' => '10',
                        ],
                        'pis' => [
                            'situacaoTributaria' => '04',
                            'baseCalculo' => 0.0,
                            'aliquota' => 0.0,
                            'valor' => 0.0,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.1,
                        ],
                        'cofins' => [
                            'situacaoTributaria' => '04',
                            'baseCalculo' => 0.0,
                            'aliquota' => 0.0,
                            'valor' => 0.0,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.46,
                        ],
                        'pisST' => [
                            'baseCalculo' => 500.0,
                            'aliquota' => 1.65,
                            'valor' => 8.25,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.1,
                            'somaValorTotalNota' => false,
                        ],
                        'cofinsST' => [
                            'baseCalculo' => 500.0,
                            'aliquota' => 7.6,
                            'valor' => 38.0,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.46,
                            'somaValorTotalNota' => false,
                        ],
                        'ii' => [
                            'baseCalculo' => 5000.0,
                            'despesasAduaneiras' => 300.0,
                            'valor' => 900.0,
                            'valorIOF' => 20.0,
                        ],
                        'ibsCbs' => [
                            'situacaoTributaria' => '000',
                            'classificacaoTributaria' => '000001',
                            'baseCalculo' => 500.0,
                            'aliquotaIBSEstadual' => 0.1,
                            'valorIBSEstadual' => 1.0,
                            'aliquotaIBSMunicipal' => 0.0,
                            'valorIBSMunicipal' => 0.0,
                            'aliquotaCBS' => 0.9,
                            'valorCBS' => 9.0,
                            'percentualDiferimentoIBSEstadual' => 100.0,
                            'valorDiferimentoIBSEstadual' => 1.0,
                            'percentualDiferimentoIBSMunicipal' => 100.0,
                            'valorDiferimentoIBSMunicipal' => 0.0,
                            'percentualDiferimentoCBS' => 100.0,
                            'valorDiferimentoCBS' => 9.0,
                        ],
                        'percentualAproximadoTributos' => [
                            'fonte' => 'IBPT',
                            'detalhado' => [
                                'percentualFederal' => 8.5,
                                'percentualEstadual' => 18.0,
                                'percentualMunicipal' => 0.0,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/nfe/gerar"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Company-uuid": "{YOUR_COMPANY_UUID}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "numero": 1,
    "serie": 1,
    "pedido": {
        "naturezaOperacao": "Venda de mercadoria",
        "consumidorFinal": "SIM",
        "presencaConsumidor": "OperacaoPresencial",
        "finalidade": "Normal",
        "notasReferenciadas": [
            "35260712345678000190550010000001231234567890"
        ],
        "informacoesComplementares": "Garantia de 90 dias para o produto.",
        "informacoesFisco": "Documento emitido por ME ou EPP optante pelo Simples Nacional.",
        "pagamento": {
            "formas": [
                {
                    "tipo": "Dinheiro",
                    "valor": 7.69
                }
            ]
        },
        "faturamento": {
            "numero": "001\/2026",
            "valorOriginal": 1246.5,
            "valorDesconto": 0,
            "valorLiquido": 1246.5,
            "duplicatas": [
                {
                    "numero": "001\/2026-1",
                    "vencimento": "2026-07-30",
                    "valor": 623.25
                }
            ]
        },
        "frete": {
            "modalidade": "SemFrete",
            "transportadora": {
                "cpfCnpj": "12345678000199",
                "nome": "Transportes Rápidos LTDA",
                "ie": "1234567",
                "endereco": "Rua A, 100",
                "municipio": "Curitiba",
                "uf": "PR"
            },
            "veiculo": {
                "placa": "ABC1D23",
                "uf": "PR",
                "rntc": "RNTC123"
            },
            "volumes": [
                {
                    "quantidade": 2,
                    "especie": "Caixa",
                    "marca": "Marca X",
                    "numeracao": "1\/2",
                    "pesoLiquido": 9.5,
                    "pesoBruto": 10.5
                }
            ]
        }
    },
    "cliente": {
        "nome": "Carlos Eduardo Lima",
        "cpfCnpj": "98765432100",
        "email": "[email protected]",
        "telefone": "(21) 99876-5432",
        "endereco": {
            "uf": "PR",
            "cidade": "4106902",
            "logradouro": "Avenida Brasil",
            "numero": "1500",
            "complemento": null,
            "bairro": "Água Verde",
            "cep": "80240040"
        }
    },
    "itens": [
        {
            "cfop": "5405",
            "codigo": "000068",
            "descricao": "Mouse Gamer RGB",
            "ncm": "22030000",
            "ean": "7891234567891",
            "cest": "0302100",
            "quantidade": 1,
            "unidadeMedida": "UN",
            "valorUnitario": 1246.5,
            "desconto": 50,
            "impostos": {
                "icms": {
                    "situacaoTributaria": "60",
                    "origem": "0",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "modalidadeBaseCalculo": "3",
                    "aliquotaCredito": 1.25,
                    "valorCredito": 12.5,
                    "baseCalculoST": 0,
                    "aliquotaST": 0,
                    "valorST": 0,
                    "modalidadeBaseCalculoST": "4",
                    "vBCFCP": 100,
                    "pFCP": 2,
                    "vFCP": 2,
                    "vBCFCPST": 100,
                    "pFCPST": 2,
                    "vFCPST": 2
                },
                "difal": {
                    "baseCalculo": 500,
                    "aliquotaInterna": 18,
                    "aliquotaInterestadual": 12,
                    "valor": 30,
                    "valorRemetente": 0,
                    "baseCalculoFCP": 500,
                    "aliquotaFCP": 2,
                    "valorFCP": 10
                },
                "ipi": {
                    "situacaoTributaria": "50",
                    "enquadramentoLegal": "999",
                    "baseCalculo": 500,
                    "aliquota": 10,
                    "valor": 50,
                    "quantidadeUnidadeTributavel": 10,
                    "valorUnidadeTributavel": 1.5,
                    "cnpjProdutor": "12345678000190",
                    "codigoSelo": "SELO123",
                    "quantidadeSelo": "10"
                },
                "pis": {
                    "situacaoTributaria": "04",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1
                },
                "cofins": {
                    "situacaoTributaria": "04",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46
                },
                "pisST": {
                    "baseCalculo": 500,
                    "aliquota": 1.65,
                    "valor": 8.25,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1,
                    "somaValorTotalNota": false
                },
                "cofinsST": {
                    "baseCalculo": 500,
                    "aliquota": 7.6,
                    "valor": 38,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46,
                    "somaValorTotalNota": false
                },
                "ii": {
                    "baseCalculo": 5000,
                    "despesasAduaneiras": 300,
                    "valor": 900,
                    "valorIOF": 20
                },
                "ibsCbs": {
                    "situacaoTributaria": "000",
                    "classificacaoTributaria": "000001",
                    "baseCalculo": 500,
                    "aliquotaIBSEstadual": 0.1,
                    "valorIBSEstadual": 1,
                    "aliquotaIBSMunicipal": 0,
                    "valorIBSMunicipal": 0,
                    "aliquotaCBS": 0.9,
                    "valorCBS": 9,
                    "percentualDiferimentoIBSEstadual": 100,
                    "valorDiferimentoIBSEstadual": 1,
                    "percentualDiferimentoIBSMunicipal": 100,
                    "valorDiferimentoIBSMunicipal": 0,
                    "percentualDiferimentoCBS": 100,
                    "valorDiferimentoCBS": 9
                },
                "percentualAproximadoTributos": {
                    "fonte": "IBPT",
                    "detalhado": {
                        "percentualFederal": 8.5,
                        "percentualEstadual": 18,
                        "percentualMunicipal": 0
                    }
                }
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/nfe/gerar'
payload = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "numero": 1,
    "serie": 1,
    "pedido": {
        "naturezaOperacao": "Venda de mercadoria",
        "consumidorFinal": "SIM",
        "presencaConsumidor": "OperacaoPresencial",
        "finalidade": "Normal",
        "notasReferenciadas": [
            "35260712345678000190550010000001231234567890"
        ],
        "informacoesComplementares": "Garantia de 90 dias para o produto.",
        "informacoesFisco": "Documento emitido por ME ou EPP optante pelo Simples Nacional.",
        "pagamento": {
            "formas": [
                {
                    "tipo": "Dinheiro",
                    "valor": 7.69
                }
            ]
        },
        "faturamento": {
            "numero": "001\/2026",
            "valorOriginal": 1246.5,
            "valorDesconto": 0,
            "valorLiquido": 1246.5,
            "duplicatas": [
                {
                    "numero": "001\/2026-1",
                    "vencimento": "2026-07-30",
                    "valor": 623.25
                }
            ]
        },
        "frete": {
            "modalidade": "SemFrete",
            "transportadora": {
                "cpfCnpj": "12345678000199",
                "nome": "Transportes Rápidos LTDA",
                "ie": "1234567",
                "endereco": "Rua A, 100",
                "municipio": "Curitiba",
                "uf": "PR"
            },
            "veiculo": {
                "placa": "ABC1D23",
                "uf": "PR",
                "rntc": "RNTC123"
            },
            "volumes": [
                {
                    "quantidade": 2,
                    "especie": "Caixa",
                    "marca": "Marca X",
                    "numeracao": "1\/2",
                    "pesoLiquido": 9.5,
                    "pesoBruto": 10.5
                }
            ]
        }
    },
    "cliente": {
        "nome": "Carlos Eduardo Lima",
        "cpfCnpj": "98765432100",
        "email": "[email protected]",
        "telefone": "(21) 99876-5432",
        "endereco": {
            "uf": "PR",
            "cidade": "4106902",
            "logradouro": "Avenida Brasil",
            "numero": "1500",
            "complemento": null,
            "bairro": "Água Verde",
            "cep": "80240040"
        }
    },
    "itens": [
        {
            "cfop": "5405",
            "codigo": "000068",
            "descricao": "Mouse Gamer RGB",
            "ncm": "22030000",
            "ean": "7891234567891",
            "cest": "0302100",
            "quantidade": 1,
            "unidadeMedida": "UN",
            "valorUnitario": 1246.5,
            "desconto": 50,
            "impostos": {
                "icms": {
                    "situacaoTributaria": "60",
                    "origem": "0",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "modalidadeBaseCalculo": "3",
                    "aliquotaCredito": 1.25,
                    "valorCredito": 12.5,
                    "baseCalculoST": 0,
                    "aliquotaST": 0,
                    "valorST": 0,
                    "modalidadeBaseCalculoST": "4",
                    "vBCFCP": 100,
                    "pFCP": 2,
                    "vFCP": 2,
                    "vBCFCPST": 100,
                    "pFCPST": 2,
                    "vFCPST": 2
                },
                "difal": {
                    "baseCalculo": 500,
                    "aliquotaInterna": 18,
                    "aliquotaInterestadual": 12,
                    "valor": 30,
                    "valorRemetente": 0,
                    "baseCalculoFCP": 500,
                    "aliquotaFCP": 2,
                    "valorFCP": 10
                },
                "ipi": {
                    "situacaoTributaria": "50",
                    "enquadramentoLegal": "999",
                    "baseCalculo": 500,
                    "aliquota": 10,
                    "valor": 50,
                    "quantidadeUnidadeTributavel": 10,
                    "valorUnidadeTributavel": 1.5,
                    "cnpjProdutor": "12345678000190",
                    "codigoSelo": "SELO123",
                    "quantidadeSelo": "10"
                },
                "pis": {
                    "situacaoTributaria": "04",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1
                },
                "cofins": {
                    "situacaoTributaria": "04",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46
                },
                "pisST": {
                    "baseCalculo": 500,
                    "aliquota": 1.65,
                    "valor": 8.25,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1,
                    "somaValorTotalNota": false
                },
                "cofinsST": {
                    "baseCalculo": 500,
                    "aliquota": 7.6,
                    "valor": 38,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46,
                    "somaValorTotalNota": false
                },
                "ii": {
                    "baseCalculo": 5000,
                    "despesasAduaneiras": 300,
                    "valor": 900,
                    "valorIOF": 20
                },
                "ibsCbs": {
                    "situacaoTributaria": "000",
                    "classificacaoTributaria": "000001",
                    "baseCalculo": 500,
                    "aliquotaIBSEstadual": 0.1,
                    "valorIBSEstadual": 1,
                    "aliquotaIBSMunicipal": 0,
                    "valorIBSMunicipal": 0,
                    "aliquotaCBS": 0.9,
                    "valorCBS": 9,
                    "percentualDiferimentoIBSEstadual": 100,
                    "valorDiferimentoIBSEstadual": 1,
                    "percentualDiferimentoIBSMunicipal": 100,
                    "valorDiferimentoIBSMunicipal": 0,
                    "percentualDiferimentoCBS": 100,
                    "valorDiferimentoCBS": 9
                },
                "percentualAproximadoTributos": {
                    "fonte": "IBPT",
                    "detalhado": {
                        "percentualFederal": 8.5,
                        "percentualEstadual": 18,
                        "percentualMunicipal": 0
                    }
                }
            }
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Company-uuid': '{YOUR_COMPANY_UUID}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/nfe/gerar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Company-uuid: {YOUR_COMPANY_UUID}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"callback\": \"https:\\/\\/example.com\\/callback\",
    \"ambiente\": \"developer\",
    \"numero\": 1,
    \"serie\": 1,
    \"pedido\": {
        \"naturezaOperacao\": \"Venda de mercadoria\",
        \"consumidorFinal\": \"SIM\",
        \"presencaConsumidor\": \"OperacaoPresencial\",
        \"finalidade\": \"Normal\",
        \"notasReferenciadas\": [
            \"35260712345678000190550010000001231234567890\"
        ],
        \"informacoesComplementares\": \"Garantia de 90 dias para o produto.\",
        \"informacoesFisco\": \"Documento emitido por ME ou EPP optante pelo Simples Nacional.\",
        \"pagamento\": {
            \"formas\": [
                {
                    \"tipo\": \"Dinheiro\",
                    \"valor\": 7.69
                }
            ]
        },
        \"faturamento\": {
            \"numero\": \"001\\/2026\",
            \"valorOriginal\": 1246.5,
            \"valorDesconto\": 0,
            \"valorLiquido\": 1246.5,
            \"duplicatas\": [
                {
                    \"numero\": \"001\\/2026-1\",
                    \"vencimento\": \"2026-07-30\",
                    \"valor\": 623.25
                }
            ]
        },
        \"frete\": {
            \"modalidade\": \"SemFrete\",
            \"transportadora\": {
                \"cpfCnpj\": \"12345678000199\",
                \"nome\": \"Transportes Rápidos LTDA\",
                \"ie\": \"1234567\",
                \"endereco\": \"Rua A, 100\",
                \"municipio\": \"Curitiba\",
                \"uf\": \"PR\"
            },
            \"veiculo\": {
                \"placa\": \"ABC1D23\",
                \"uf\": \"PR\",
                \"rntc\": \"RNTC123\"
            },
            \"volumes\": [
                {
                    \"quantidade\": 2,
                    \"especie\": \"Caixa\",
                    \"marca\": \"Marca X\",
                    \"numeracao\": \"1\\/2\",
                    \"pesoLiquido\": 9.5,
                    \"pesoBruto\": 10.5
                }
            ]
        }
    },
    \"cliente\": {
        \"nome\": \"Carlos Eduardo Lima\",
        \"cpfCnpj\": \"98765432100\",
        \"email\": \"[email protected]\",
        \"telefone\": \"(21) 99876-5432\",
        \"endereco\": {
            \"uf\": \"PR\",
            \"cidade\": \"4106902\",
            \"logradouro\": \"Avenida Brasil\",
            \"numero\": \"1500\",
            \"complemento\": null,
            \"bairro\": \"Água Verde\",
            \"cep\": \"80240040\"
        }
    },
    \"itens\": [
        {
            \"cfop\": \"5405\",
            \"codigo\": \"000068\",
            \"descricao\": \"Mouse Gamer RGB\",
            \"ncm\": \"22030000\",
            \"ean\": \"7891234567891\",
            \"cest\": \"0302100\",
            \"quantidade\": 1,
            \"unidadeMedida\": \"UN\",
            \"valorUnitario\": 1246.5,
            \"desconto\": 50,
            \"impostos\": {
                \"icms\": {
                    \"situacaoTributaria\": \"60\",
                    \"origem\": \"0\",
                    \"baseCalculo\": 0,
                    \"aliquota\": 0,
                    \"valor\": 0,
                    \"modalidadeBaseCalculo\": \"3\",
                    \"aliquotaCredito\": 1.25,
                    \"valorCredito\": 12.5,
                    \"baseCalculoST\": 0,
                    \"aliquotaST\": 0,
                    \"valorST\": 0,
                    \"modalidadeBaseCalculoST\": \"4\",
                    \"vBCFCP\": 100,
                    \"pFCP\": 2,
                    \"vFCP\": 2,
                    \"vBCFCPST\": 100,
                    \"pFCPST\": 2,
                    \"vFCPST\": 2
                },
                \"difal\": {
                    \"baseCalculo\": 500,
                    \"aliquotaInterna\": 18,
                    \"aliquotaInterestadual\": 12,
                    \"valor\": 30,
                    \"valorRemetente\": 0,
                    \"baseCalculoFCP\": 500,
                    \"aliquotaFCP\": 2,
                    \"valorFCP\": 10
                },
                \"ipi\": {
                    \"situacaoTributaria\": \"50\",
                    \"enquadramentoLegal\": \"999\",
                    \"baseCalculo\": 500,
                    \"aliquota\": 10,
                    \"valor\": 50,
                    \"quantidadeUnidadeTributavel\": 10,
                    \"valorUnidadeTributavel\": 1.5,
                    \"cnpjProdutor\": \"12345678000190\",
                    \"codigoSelo\": \"SELO123\",
                    \"quantidadeSelo\": \"10\"
                },
                \"pis\": {
                    \"situacaoTributaria\": \"04\",
                    \"baseCalculo\": 0,
                    \"aliquota\": 0,
                    \"valor\": 0,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.1
                },
                \"cofins\": {
                    \"situacaoTributaria\": \"04\",
                    \"baseCalculo\": 0,
                    \"aliquota\": 0,
                    \"valor\": 0,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.46
                },
                \"pisST\": {
                    \"baseCalculo\": 500,
                    \"aliquota\": 1.65,
                    \"valor\": 8.25,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.1,
                    \"somaValorTotalNota\": false
                },
                \"cofinsST\": {
                    \"baseCalculo\": 500,
                    \"aliquota\": 7.6,
                    \"valor\": 38,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.46,
                    \"somaValorTotalNota\": false
                },
                \"ii\": {
                    \"baseCalculo\": 5000,
                    \"despesasAduaneiras\": 300,
                    \"valor\": 900,
                    \"valorIOF\": 20
                },
                \"ibsCbs\": {
                    \"situacaoTributaria\": \"000\",
                    \"classificacaoTributaria\": \"000001\",
                    \"baseCalculo\": 500,
                    \"aliquotaIBSEstadual\": 0.1,
                    \"valorIBSEstadual\": 1,
                    \"aliquotaIBSMunicipal\": 0,
                    \"valorIBSMunicipal\": 0,
                    \"aliquotaCBS\": 0.9,
                    \"valorCBS\": 9,
                    \"percentualDiferimentoIBSEstadual\": 100,
                    \"valorDiferimentoIBSEstadual\": 1,
                    \"percentualDiferimentoIBSMunicipal\": 100,
                    \"valorDiferimentoIBSMunicipal\": 0,
                    \"percentualDiferimentoCBS\": 100,
                    \"valorDiferimentoCBS\": 9
                },
                \"percentualAproximadoTributos\": {
                    \"fonte\": \"IBPT\",
                    \"detalhado\": {
                        \"percentualFederal\": 8.5,
                        \"percentualEstadual\": 18,
                        \"percentualMunicipal\": 0
                    }
                }
            }
        }
    ]
}"

Exemplo de resposta (201, Solicitação criada. O processamento ocorre de forma assíncrona.):


{
    "protocolo": 3050,
    "status": "processando"
}
 

Exemplo de resposta (422):


{
    "message": "The itens field is required.",
    "errors": {
        "itens": [
            "The itens field is required."
        ]
    }
}
 

Requisição      

POST api/v2/nfe/gerar

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Company-uuid        

Exemplo: {YOUR_COMPANY_UUID}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros do corpo

callback   string  optional    

[Opcional] URL de callback para receber o resultado do processamento. Exemplo: https://example.com/callback

ambiente   string     

[Obrigatório] Ambiente de emissão. Valores aceitos: production, developer ou sandbox (emissão fictícia, sem certificado nem transmissão à SEFAZ). Exemplo: developer

numero   integer     

[Obrigatório] Número da NF-e. Exemplo: 1

serie   integer     

[Obrigatório] Série da NF-e. Exemplo: 1

pedido   object  optional    
naturezaOperacao   string  optional    

[Opcional com preenchimento automático] Natureza da operação. Se não informado, o sistema usa "Venda de mercadoria". Exemplo: Venda de mercadoria

consumidorFinal   string  optional    

[Opcional com preenchimento automático] Indica se a operação é com consumidor final. Valores aceitos: SIM ou NAO. Se não informado, o sistema usa SIM. Exemplo: SIM

presencaConsumidor   string  optional    

[Opcional com preenchimento automático] Indicador de presença do comprador. Se não informado, o sistema usa OperacaoPresencial. Valores aceitos: OperacaoPresencial, OperacaoNaoPresencialInternet, OperacaoNaoPresencialTeleatendimento, NFCeEntregaDomicilio, OperacaoPresencialForaEstabelecimento, OperacaoNaoPresencialOutros. Exemplo: OperacaoPresencial

finalidade   string  optional    

[Opcional com preenchimento automático] Finalidade de emissão da NF-e. Se não informado, o sistema usa Normal. Valores aceitos: Normal, Complementar, Ajuste, DevolucaoRetorno. Exemplo: Normal

notasReferenciadas   string[]  optional    

[Opcional] Chaves de acesso (44 dígitos) de NF-e referenciadas por esta emissão. Use para vincular a nota original quando pedido.finalidade for Complementar, Ajuste ou DevolucaoRetorno — o schema não exige o vínculo, mas ele é o que dá sentido a essas finalidades.

informacoesComplementares   string  optional    

[Opcional] Informações complementares de interesse do contribuinte, impressas no DANFE. Máximo de 5000 caracteres. Exemplo: Garantia de 90 dias para o produto.

informacoesFisco   string  optional    

[Opcional] Informações adicionais de interesse do Fisco. Máximo de 2000 caracteres. Exemplo: Documento emitido por ME ou EPP optante pelo Simples Nacional.

pagamento   object  optional    
formas   object[]     

[Obrigatório] Formas de pagamento utilizadas.

tipo   string     

[Obrigatório] Tipo de pagamento. Valores aceitos: Dinheiro, Cheque, CartaoCredito, CartaoDebito, CreditoLoja, ValeAlimentacao, ValeRefeicao, ValePresente, ValeCombustivel, DuplicataMercantil, BoletoBancario, DepositoBancario, Pix, TransferenciaBancaria, SemPagamento, Outros. Exemplo: Dinheiro

valor   number     

[Obrigatório] Valor pago nessa forma. Exemplo: 7.69

faturamento   object  optional    
numero   string  optional    

[Opcional] Número da fatura. Exemplo: 001/2026

valorOriginal   number  optional    

[Opcional] Valor original da fatura. Exemplo: 1246.5

valorDesconto   number  optional    

[Opcional] Valor do desconto da fatura. Exemplo: 0

valorLiquido   number  optional    

[Opcional] Valor líquido da fatura. Exemplo: 1246.5

duplicatas   object[]  optional    

[Opcional] Parcelas da fatura (duplicatas). Nada aqui é obrigatório pelo schema da NFe; use quando o pagamento for a prazo/parcelado, uma duplicata por parcela. Pagamento à vista normalmente não precisa informar. Máximo de 120 duplicatas.

numero   string  optional    

[Opcional] Número da duplicata. Exemplo: 001/2026-1

vencimento   date  optional    

[Opcional] Data de vencimento da duplicata, formato AAAA-MM-DD. Exemplo: 2026-07-30

valor   number     

[Obrigatório se a duplicata for informada] Valor da duplicata. Exemplo: 623.25

frete   object  optional    
modalidade   string  optional    

[Opcional] Modalidade do frete. Se não informado, o sistema usa SemFrete (nenhuma ocorrência de transporte, modFrete 9). Valores aceitos: ContratacaoPorContaRemetente (CIF), ContratacaoPorContaDestinatario (FOB), ContratacaoPorContaTerceiros, TransportePropioPorContaRemetente, TransportePropioPorContaDestinatario, SemFrete. Exemplo: SemFrete

transportadora   object  optional    
cpfCnpj   string  optional    

[Obrigatório para modalidade ContratacaoPorContaRemetente/ContratacaoPorContaDestinatario/ContratacaoPorContaTerceiros] CPF ou CNPJ da transportadora, sem pontuação. Exemplo: 12345678000199

nome   string  optional    

[Obrigatório para modalidade ContratacaoPorContaRemetente/ContratacaoPorContaDestinatario/ContratacaoPorContaTerceiros] Razão social ou nome da transportadora. Exemplo: Transportes Rápidos LTDA

ie   string  optional    

[Opcional] Inscrição estadual da transportadora. Exemplo: 1234567

endereco   string  optional    

[Opcional] Endereço completo da transportadora. Exemplo: Rua A, 100

municipio   string  optional    

[Opcional] Nome do município da transportadora. Exemplo: Curitiba

uf   string  optional    

[Opcional] UF da transportadora. Exemplo: PR

veiculo   object  optional    
placa   string  optional    

[Obrigatório para modalidade TransportePropioPorContaRemetente/TransportePropioPorContaDestinatario] Placa do veículo transportador. Exemplo: ABC1D23

uf   string  optional    

[Opcional] UF de emplacamento do veículo. Exemplo: PR

rntc   string  optional    

[Opcional] Registro Nacional de Transportador de Carga (ANTT) do veículo. Exemplo: RNTC123

volumes   object[]  optional    

[Opcional] Volumes transportados.

quantidade   integer  optional    

[Opcional] Quantidade de volumes. Exemplo: 2

especie   string  optional    

[Opcional] Espécie dos volumes (ex: Caixa, Fardo). Exemplo: Caixa

marca   string  optional    

[Opcional] Marca dos volumes. Exemplo: Marca X

numeracao   string  optional    

[Opcional] Numeração dos volumes. Exemplo: 1/2

pesoLiquido   number  optional    

[Opcional] Peso líquido (kg) dos volumes. Exemplo: 9.5

pesoBruto   number  optional    

[Opcional] Peso bruto (kg) dos volumes. Exemplo: 10.5

cliente   object  optional    

[Opcional] Dados do destinatário. Quando ausente, a nota é emitida sem destinatário identificado.

nome   string  optional    

[Obrigatório se cliente for informado] Nome ou razão social do destinatário. Exemplo: Carlos Eduardo Lima

cpfCnpj   string  optional    

[Obrigatório se cliente for informado] CPF ou CNPJ do destinatário, sem pontuação. 11 dígitos é tratado como CPF, qualquer outro comprimento como CNPJ. Exemplo: 98765432100

email   string  optional    

[Opcional] E-mail do destinatário. Exemplo: [email protected]

telefone   string  optional    

[Opcional] Telefone do destinatário. Exemplo: (21) 99876-5432

endereco   object  optional    
uf   string  optional    

[Opcional] UF do destinatário. Exemplo: PR

cidade   string  optional    

[Opcional] Código IBGE do município do destinatário. Exemplo: 4106902

logradouro   string  optional    

[Opcional] Logradouro do destinatário. Exemplo: Avenida Brasil

numero   string  optional    

[Obrigatório se cliente.endereco.logradouro for informado] Número do endereço do destinatário. Exemplo: 1500

complemento   string  optional    

[Opcional] Complemento do endereço do destinatário.

bairro   string  optional    

[Opcional] Bairro do destinatário. Exemplo: Água Verde

cep   string  optional    

[Opcional] CEP do destinatário, sem pontuação. Exemplo: 80240040

itens   object[]     

[Obrigatório] Itens da nota.

cfop   string     

[Obrigatório] CFOP do item. Exemplo: 5405

codigo   string     

[Obrigatório] Código interno do produto. Exemplo: 000068

descricao   string     

[Obrigatório] Descrição do produto. Exemplo: Mouse Gamer RGB

ncm   string     

[Obrigatório] NCM do produto. Exemplo: 22030000

ean   string  optional    

[Opcional] Código de barras (GTIN) do produto. Exemplo: 7891234567891

cest   string  optional    

[Opcional] Código CEST do produto. Exemplo: 0302100

quantidade   number     

[Obrigatório] Quantidade vendida. Exemplo: 1

unidadeMedida   string     

[Obrigatório] Unidade de medida comercial. Exemplo: UN

valorUnitario   number     

[Obrigatório] Valor unitário do produto. Exemplo: 1246.5

desconto   number  optional    

[Opcional] Valor do desconto do item. Não pode ser maior que quantidade × valorUnitario. Exemplo: 50

impostos   object  optional    
icms   object  optional    
situacaoTributaria   string     

[Obrigatório] CST/CSOSN do ICMS. Valores suportados nesta versão: 00, 40, 41, 50, 60, 90 (CST - regime normal); 101, 102, 103, 201, 202, 203, 300, 400, 500, 900 (CSOSN - Simples Nacional). Exemplo: 60

origem   string  optional    

[Opcional] Origem da mercadoria (Tabela B do ICMS). Se não informado, o sistema usa 0 (nacional). Exemplo: 0

baseCalculo   number  optional    

[Obrigatório para CST 00/90] Base de cálculo do ICMS. Exemplo: 0

aliquota   number  optional    

[Obrigatório para CST 00/90] Alíquota do ICMS. Exemplo: 0

valor   number  optional    

[Opcional] Valor do ICMS. Se não informado, é calculado a partir de baseCalculo e aliquota. Exemplo: 0

modalidadeBaseCalculo   string  optional    

[Opcional] Modalidade de determinação da BC do ICMS (CST 00/90). Se não informado, o sistema usa 3 (valor da operação). Exemplo: 3

aliquotaCredito   number  optional    

[Obrigatório para CSOSN 101] Alíquota de crédito do ICMS (Simples Nacional). Exemplo: 1.25

valorCredito   number  optional    

[Obrigatório para CSOSN 101] Valor do crédito do ICMS (Simples Nacional). Exemplo: 12.5

baseCalculoST   number  optional    

[Obrigatório para CSOSN 201/202/203] Base de cálculo do ICMS-ST. Exemplo: 0

aliquotaST   number  optional    

[Obrigatório para CSOSN 201/202/203] Alíquota do ICMS-ST. Exemplo: 0

valorST   number  optional    

[Opcional] Valor do ICMS-ST. Se não informado, é calculado a partir de baseCalculoST e aliquotaST. Exemplo: 0

modalidadeBaseCalculoST   string  optional    

[Opcional] Modalidade de determinação da BC do ICMS-ST (CSOSN 201/202/203). Se não informado, o sistema usa 4. Exemplo: 4

vBCFCP   number  optional    

[Opcional] Valor da base de cálculo do FCP (Fundo de Combate à Pobreza). Aplicável só a NCM específicos definidos por cada UF. Exemplo: 100

pFCP   number  optional    

[Opcional] Percentual do FCP. Exemplo: 2

vFCP   number  optional    

[Opcional] Valor do FCP. Exemplo: 2

vBCFCPST   number  optional    

[Opcional] Valor da base de cálculo do FCP retido por Substituição Tributária. Exemplo: 100

pFCPST   number  optional    

[Opcional] Percentual do FCP retido por Substituição Tributária. Exemplo: 2

vFCPST   number  optional    

[Opcional] Valor do FCP retido por Substituição Tributária. Exemplo: 2

difal   object  optional    

[Opcional] DIFAL (partilha do ICMS interestadual, EC 87/2015) — informe só em vendas interestaduais para consumidor final não contribuinte do ICMS. Se informado, baseCalculo, aliquotaInterna e aliquotaInterestadual são obrigatórios.

baseCalculo   number  optional    

[Obrigatório se impostos.difal for informado] Base de cálculo do ICMS na UF de destino. This field is required when itens.*.impostos.difal is present. Exemplo: 500

aliquotaInterna   number  optional    

[Obrigatório se impostos.difal for informado] Alíquota interna do ICMS na UF de destino. This field is required when itens.*.impostos.difal is present. Exemplo: 18

aliquotaInterestadual   number  optional    

[Obrigatório se impostos.difal for informado] Alíquota interestadual do ICMS entre a UF de origem e a de destino. This field is required when itens.*.impostos.difal is present. Exemplo: 12

valor   number  optional    

[Opcional com cálculo automático] Valor do ICMS de partilha para a UF de destino. Se omitido, é calculado a partir de baseCalculo×aliquotaInterna menos o ICMS já retido na alíquota interestadual. Exemplo: 30

valorRemetente   number  optional    

[Opcional] Valor do ICMS de partilha para a UF de origem (remetente). Zerado desde 2019, quando a transição da EC 87/2015 terminou — normalmente não precisa informar. Exemplo: 0

baseCalculoFCP   number  optional    

[Opcional, só junto de aliquotaFCP] Base de cálculo do FCP na UF de destino. Se omitido e aliquotaFCP for informado, usa o mesmo valor de baseCalculo. Exemplo: 500

aliquotaFCP   number  optional    

[Opcional] Alíquota do FCP (Fundo de Combate à Pobreza) da UF de destino, quando essa UF cobrar FCP sobre a operação. Exemplo: 2

valorFCP   number  optional    

[Opcional com cálculo automático] Valor do FCP da UF de destino. Se omitido e aliquotaFCP for informado, é calculado a partir de baseCalculoFCP×aliquotaFCP. Exemplo: 10

ipi   object  optional    

[Opcional] Dados do IPI do item. A maioria dos produtos não paga IPI — omita o grupo inteiro nesse caso. Se informado, situacaoTributaria é obrigatório.

situacaoTributaria   string  optional    

[Obrigatório se impostos.ipi for informado] Código da Situação Tributária do IPI (CST). Tributado (exige baseCalculo+aliquota OU quantidadeUnidadeTributavel+valorUnidadeTributavel): 00 = Entrada com recuperação de crédito, 49 = Outras entradas, 50 = Saída tributada, 99 = Outras saídas. Sem valor a recolher: 01 = Entrada tributada com alíquota zero, 02 = Entrada isenta, 03 = Entrada não-tributada, 04 = Entrada imune, 05 = Entrada com suspensão, 51 = Saída tributada com alíquota zero, 52 = Saída isenta, 53 = Saída não-tributada, 54 = Saída imune, 55 = Saída com suspensão. This field is required when itens.*.impostos.ipi is present. Exemplo: 50

enquadramentoLegal   string  optional    

[Opcional] Código de Enquadramento Legal do IPI (tabela da RFB, até 3 dígitos). Se não informado, o sistema usa 999 (Outros). Must not be greater than 3 characters. Exemplo: 999

baseCalculo   number  optional    

[Obrigatório junto de aliquota, se o item não for tributado por unidade] Base de cálculo do IPI. Exemplo: 500

aliquota   number  optional    

[Obrigatório junto de baseCalculo, se o item não for tributado por unidade] Alíquota do IPI, em percentual. Exemplo: 10

valor   number  optional    

[Opcional com cálculo automático] Valor do IPI. Se omitido, é calculado a partir de baseCalculo×aliquota ou quantidadeUnidadeTributavel×valorUnidadeTributavel. Exemplo: 50

quantidadeUnidadeTributavel   number  optional    

[Obrigatório junto de valorUnidadeTributavel, só para produtos com pauta fiscal por unidade, ex.: cigarros] Quantidade total na unidade padrão de tributação. Exemplo: 10

valorUnidadeTributavel   number  optional    

[Obrigatório junto de quantidadeUnidadeTributavel] Valor do IPI por unidade tributável. Exemplo: 1.5

cnpjProdutor   string  optional    

[Opcional] CNPJ do produtor da mercadoria, quando diferente do emitente. Só para exportação direta ou indireta. Must be 14 digits. Exemplo: 12345678000190

codigoSelo   string  optional    

[Obrigatório junto de quantidadeSelo, se algum dos dois for informado] Código do selo de controle do IPI (cigarros/bebidas). Must not be greater than 60 characters. Exemplo: SELO123

quantidadeSelo   string  optional    

[Obrigatório junto de codigoSelo, se algum dos dois for informado] Quantidade de selo de controle do IPI. Must match the regex /^\d{1,12}$/. Exemplo: 10

pis   object  optional    
situacaoTributaria   string     

[Obrigatório] CST do PIS. Valores suportados nesta versão: 01, 04, 06, 07, 08, 09, 49. Exemplo: 04

baseCalculo   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Base de cálculo do PIS. Exemplo: 0

aliquota   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Alíquota do PIS. Exemplo: 0

valor   number  optional    

[Opcional] Valor do PIS. Se não informado, é calculado a partir de baseCalculo e aliquota. Exemplo: 0

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais para CST 03, ou como alternativa a baseCalculo+aliquota para CST 49-99] Quantidade vendida, para apuração do PIS por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do PIS em R$ por unidade. Exemplo: 0.1

cofins   object  optional    
situacaoTributaria   string     

[Obrigatório] CST do COFINS. Valores suportados nesta versão: 01, 04, 06, 07, 08, 09, 49. Exemplo: 04

baseCalculo   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Base de cálculo do COFINS. Exemplo: 0

aliquota   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Alíquota do COFINS. Exemplo: 0

valor   number  optional    

[Opcional] Valor do COFINS. Se não informado, é calculado a partir de baseCalculo e aliquota. Exemplo: 0

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais para CST 03, ou como alternativa a baseCalculo+aliquota para CST 49-99] Quantidade vendida, para apuração do COFINS por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do COFINS em R$ por unidade. Exemplo: 0.46

pisST   object  optional    

[Opcional] PIS-ST — use quando o PIS deste item já foi retido antes na cadeia por substituição tributária (comum em combustíveis, cigarros, bebidas frias), no lugar de impostos.pis. Informe impostos.pis OU impostos.pisST, nunca os dois nem nenhum dos dois — a SEFAZ rejeita a tag PIS e a PISST juntas no mesmo item.

baseCalculo   number  optional    

[Obrigatório junto de aliquota, como alternativa a quantidadeVendida+aliquotaReais] Base de cálculo do PIS-ST. Exemplo: 500

aliquota   number  optional    

[Obrigatório junto de baseCalculo] Alíquota do PIS-ST, em percentual. Exemplo: 1.65

valor   number  optional    

[Opcional com cálculo automático] Valor do PIS-ST. Se omitido, é calculado a partir de baseCalculo×aliquota ou quantidadeVendida×aliquotaReais. Exemplo: 8.25

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais, como alternativa a baseCalculo+aliquota] Quantidade vendida, para apuração do PIS-ST por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do PIS-ST em R$ por unidade. Exemplo: 0.1

somaValorTotalNota   boolean  optional    

[Opcional, default false] Indica se o valor do PIS-ST deve ser somado ao valor total da nota. O padrão é não somar, porque o valor retido normalmente já está embutido no preço cobrado do cliente. Exemplo: false

cofinsST   object  optional    

[Opcional] COFINS-ST — mesma mecânica de impostos.pisST, aplicada à COFINS. Informe impostos.cofins OU impostos.cofinsST, nunca os dois nem nenhum dos dois.

baseCalculo   number  optional    

[Obrigatório junto de aliquota, como alternativa a quantidadeVendida+aliquotaReais] Base de cálculo do COFINS-ST. Exemplo: 500

aliquota   number  optional    

[Obrigatório junto de baseCalculo] Alíquota do COFINS-ST, em percentual. Exemplo: 7.6

valor   number  optional    

[Opcional com cálculo automático] Valor do COFINS-ST. Se omitido, é calculado a partir de baseCalculo×aliquota ou quantidadeVendida×aliquotaReais. Exemplo: 38

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais, como alternativa a baseCalculo+aliquota] Quantidade vendida, para apuração do COFINS-ST por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do COFINS-ST em R$ por unidade. Exemplo: 0.46

somaValorTotalNota   boolean  optional    

[Opcional, default false] Indica se o valor do COFINS-ST deve ser somado ao valor total da nota. O padrão é não somar, porque o valor retido normalmente já está embutido no preço cobrado do cliente. Exemplo: false

ii   object  optional    

[Opcional] II (Imposto de Importação) — informe só quando o item for mercadoria importada diretamente pelo emitente (com DI/DUIMP). A maioria dos itens não é importação direta. Se informado, os 4 campos são obrigatórios — diferente de ICMS/PIS/COFINS/IPI, aqui não há cálculo automático: o valor do II depende de tabela aduaneira por NCM/país de origem e câmbio, que a devnota não tem como aproximar.

baseCalculo   number  optional    

[Obrigatório se impostos.ii for informado] Base de cálculo do Imposto de Importação. This field is required when itens.*.impostos.ii is present. Exemplo: 5000

despesasAduaneiras   number  optional    

[Obrigatório se impostos.ii for informado] Valor das despesas aduaneiras. This field is required when itens.*.impostos.ii is present. Exemplo: 300

valor   number  optional    

[Obrigatório se impostos.ii for informado] Valor do Imposto de Importação. This field is required when itens.*.impostos.ii is present. Exemplo: 900

valorIOF   number  optional    

[Obrigatório se impostos.ii for informado] Valor do IOF (Imposto sobre Operações Financeiras) incidente sobre a operação de importação. This field is required when itens.*.impostos.ii is present. Exemplo: 20

ibsCbs   object  optional    

[Opcional, mas obrigatório a partir de 2027 conforme cronograma da Reforma Tributária] IBS/CBS (EC 132/2023 / LC 214/2025). 2026 é o ano-teste: alíquotas simbólicas de calibração, sem efeito no valor total da nota — mas o grupo já precisa ser enviado para quem a Receita determinar. Cobre só o caminho regular (sem monofasia de combustíveis, Zona Franca de Manaus, compra governamental ou crédito presumido). Se informado, situacaoTributaria, classificacaoTributaria e baseCalculo são obrigatórios; as três alíquotas só são obrigatórias fora da combinação "padrão" (ver situacaoTributaria).

situacaoTributaria   string  optional    

[Obrigatório se impostos.ibsCbs for informado] Código de Situação Tributária do IBS/CBS (CST, 3 dígitos, tabela própria da Reforma — não confundir com o CST do ICMS). 000 = Tributação integral, sem benefício — junto com classificacaoTributaria 000001, é a única combinação com alíquota uniforme o bastante para ter default (ver aliquotaIBSEstadual/aliquotaIBSMunicipal/aliquotaCBS). Qualquer outro CST (isenção, redução, diferimento etc.) exige as três alíquotas explícitas. This field is required when itens.*.impostos.ibsCbs is present. Exemplo: 000

classificacaoTributaria   string  optional    

[Obrigatório se impostos.ibsCbs for informado] Código de Classificação Tributária do IBS/CBS (cClassTrib, 6 dígitos, tabela própria da Reforma). 000001 = Tributação integral, sem benefício — é o único código, junto com o CST 000, que habilita o default de alíquota do ano-teste. This field is required when itens.*.impostos.ibsCbs is present. Must be 6 digits. Exemplo: 000001

baseCalculo   number  optional    

[Obrigatório se impostos.ibsCbs for informado] Base de cálculo do IBS e da CBS. This field is required when itens.*.impostos.ibsCbs is present. Exemplo: 500

aliquotaIBSEstadual   number  optional    

[Opcional só para CST 000 + classificacaoTributaria 000001; obrigatório para qualquer outra classificação] Alíquota do IBS de competência da UF, em percentual. Se omitido na combinação padrão, usa a alíquota-teste de 2026 fixada em lei (0,1% — nessa fase, 100% da partilha do IBS fica com a UF) — sujeita a mudar conforme o cronograma de transição da LC 214/2025. Exemplo: 0.1

valorIBSEstadual   number  optional    

[Opcional com cálculo automático] Valor do IBS de competência da UF, líquido de eventual diferimento (ver percentualDiferimentoIBSEstadual). Se omitido, é calculado a partir de baseCalculo×aliquotaIBSEstadual (usando o default do ano-teste quando aplicável). Exemplo: 1

aliquotaIBSMunicipal   number  optional    

[Opcional só para CST 000 + classificacaoTributaria 000001; obrigatório para qualquer outra classificação] Alíquota do IBS de competência do Município, em percentual. Se omitido na combinação padrão, usa a alíquota-teste de 2026 fixada em lei (0% — nessa fase, a partilha do IBS não inclui o Município) — sujeita a mudar conforme o cronograma de transição da LC 214/2025. Exemplo: 0

valorIBSMunicipal   number  optional    

[Opcional com cálculo automático] Valor do IBS de competência do Município, líquido de eventual diferimento (ver percentualDiferimentoIBSMunicipal). Se omitido, é calculado a partir de baseCalculo×aliquotaIBSMunicipal (usando o default do ano-teste quando aplicável). Exemplo: 0

aliquotaCBS   number  optional    

[Opcional só para CST 000 + classificacaoTributaria 000001; obrigatório para qualquer outra classificação] Alíquota da CBS (contribuição federal), em percentual. Se omitido na combinação padrão, usa a alíquota-teste de 2026 fixada em lei (0,9%) — sujeita a mudar conforme o cronograma de transição da LC 214/2025. Exemplo: 0.9

valorCBS   number  optional    

[Opcional com cálculo automático] Valor da CBS, líquido de eventual diferimento (ver percentualDiferimentoCBS). Se omitido, é calculado a partir de baseCalculo×aliquotaCBS (usando o default do ano-teste quando aplicável). Exemplo: 9

percentualDiferimentoIBSEstadual   number  optional    

[Opcional] Percentual do IBS estadual cujo recolhimento é diferido (postergado para uma etapa seguinte da cadeia) — comum em operações da Zona Franca de Manaus e outros regimes especiais. Quando informado, valorIBSEstadual passa a ser o valor já líquido do diferimento (a menos que valorIBSEstadual venha explícito, que sempre prevalece). Exemplo: 100

valorDiferimentoIBSEstadual   number  optional    

[Opcional com cálculo automático, só junto de percentualDiferimentoIBSEstadual] Valor do IBS estadual diferido. Se omitido, é calculado a partir do valor integral do IBS estadual × percentualDiferimentoIBSEstadual. Exemplo: 1

percentualDiferimentoIBSMunicipal   number  optional    

[Opcional] Percentual do IBS municipal cujo recolhimento é diferido. Mesma mecânica de percentualDiferimentoIBSEstadual, aplicada ao componente municipal. Exemplo: 100

valorDiferimentoIBSMunicipal   number  optional    

[Opcional com cálculo automático, só junto de percentualDiferimentoIBSMunicipal] Valor do IBS municipal diferido. Se omitido, é calculado a partir do valor integral do IBS municipal × percentualDiferimentoIBSMunicipal. Exemplo: 0

percentualDiferimentoCBS   number  optional    

[Opcional] Percentual da CBS cujo recolhimento é diferido. Mesma mecânica de percentualDiferimentoIBSEstadual, aplicada à CBS. Exemplo: 100

valorDiferimentoCBS   number  optional    

[Opcional com cálculo automático, só junto de percentualDiferimentoCBS] Valor da CBS diferida. Se omitido, é calculado a partir do valor integral da CBS × percentualDiferimentoCBS. Exemplo: 9

percentualAproximadoTributos   object  optional    
fonte   string  optional    

[Opcional] Fonte dos percentuais aproximados de tributos (Lei da Transparência / IBPT). Exemplo: IBPT

detalhado   object  optional    
percentualFederal   number  optional    

[Opcional] Percentual aproximado de tributos federais. Exemplo: 8.5

percentualEstadual   number  optional    

[Opcional] Percentual aproximado de tributos estaduais. Exemplo: 18

percentualMunicipal   number  optional    

[Opcional] Percentual aproximado de tributos municipais. Exemplo: 0

Cancelar NF-e

requer autenticação

Cria uma solicitação de cancelamento de uma NF-e emitida. O processamento é assíncrono. Após o cancelamento, o XML protocolado com a tag de evento é sobrescrito na nota, garantindo que a impressão do DANFE exiba o carimbo "NFe CANCELADA".

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/nfe/550e8400-e29b-41d4-a716-446655440000/cancelar';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Company-uuid' => '{YOUR_COMPANY_UUID}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'callback' => 'https://example.com/callback',
            'ambiente' => 'developer',
            'justificativa' => 'Cancelamento solicitado pelo cliente por erro na emissão.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/nfe/550e8400-e29b-41d4-a716-446655440000/cancelar"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Company-uuid": "{YOUR_COMPANY_UUID}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "justificativa": "Cancelamento solicitado pelo cliente por erro na emissão."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/nfe/550e8400-e29b-41d4-a716-446655440000/cancelar'
payload = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "justificativa": "Cancelamento solicitado pelo cliente por erro na emissão."
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Company-uuid': '{YOUR_COMPANY_UUID}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/nfe/550e8400-e29b-41d4-a716-446655440000/cancelar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Company-uuid: {YOUR_COMPANY_UUID}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"callback\": \"https:\\/\\/example.com\\/callback\",
    \"ambiente\": \"developer\",
    \"justificativa\": \"Cancelamento solicitado pelo cliente por erro na emissão.\"
}"

Exemplo de resposta (201, Solicitação criada. O processamento ocorre de forma assíncrona.):


{
    "protocolo": 3051,
    "status": "processando"
}
 

Exemplo de resposta (422):


{
    "message": "The justificativa field is required.",
    "errors": {
        "justificativa": [
            "The justificativa field is required."
        ]
    }
}
 

Requisição      

POST api/v2/nfe/{uuid}/cancelar

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Company-uuid        

Exemplo: {YOUR_COMPANY_UUID}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da NF-e a ser cancelada. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Parâmetros do corpo

callback   string  optional    

[Opcional] URL de callback para receber o resultado. Exemplo: https://example.com/callback

ambiente   string     

Ambiente de emissão. Valores aceitos: production, developer ou sandbox. Exemplo: developer

justificativa   string     

Motivo do cancelamento (mínimo 15, máximo 255 caracteres). Exemplo: Cancelamento solicitado pelo cliente por erro na emissão.

NFC-e

APIs para emissão de cupons fiscais eletrônicos (venda ao consumidor) com payload simplificado.

Emitir NFC-e

requer autenticação

Cria uma solicitação de emissão de NFC-e (cupom fiscal eletrônico, venda ao consumidor) usando o payload da API v2. O modelo é fixo em 65, tpImp em 4 (DANFCE) e indFinal em 1 (sempre consumidor final) — nenhum desses precisa ser informado. O QR Code é gerado automaticamente usando o CSC configurado na empresa. Não existem campos de frete (transportadora/veículo/volumes) nem faturamento/duplicatas: a SEFAZ rejeita esses grupos para o modelo 65 — pagamento é sempre via pedido.pagamento.formas.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/nfc/gerar';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Company-uuid' => '{YOUR_COMPANY_UUID}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'callback' => 'https://example.com/callback',
            'ambiente' => 'developer',
            'numero' => 1,
            'serie' => 1,
            'pedido' => [
                'naturezaOperacao' => 'Venda de mercadoria',
                'presencaConsumidor' => 'OperacaoPresencial',
                'informacoesComplementares' => 'Obrigado pela preferência!',
                'informacoesFisco' => 'Documento emitido por ME ou EPP optante pelo Simples Nacional.',
                'pagamento' => [
                    'formas' => [
                        [
                            'tipo' => 'Pix',
                            'valor' => 29.9,
                        ],
                    ],
                ],
            ],
            'cliente' => [
                'nome' => 'Maria Silva',
                'cpfCnpj' => '12345678901',
                'email' => '[email protected]',
                'telefone' => '(81) 98765-4321',
                'endereco' => [
                    'uf' => 'PE',
                    'cidade' => '2611606',
                    'logradouro' => 'Rua das Flores',
                    'numero' => '100',
                    'complemento' => null,
                    'bairro' => 'Centro',
                    'cep' => '50010000',
                ],
            ],
            'itens' => [
                [
                    'cfop' => '5102',
                    'codigo' => '000123',
                    'descricao' => 'Refrigerante 350ml',
                    'ncm' => '22021000',
                    'ean' => '7891234567891',
                    'cest' => '0302100',
                    'quantidade' => 2.0,
                    'unidadeMedida' => 'UN',
                    'valorUnitario' => 5.99,
                    'desconto' => 0.0,
                    'impostos' => [
                        'icms' => [
                            'situacaoTributaria' => '500',
                            'origem' => '0',
                            'baseCalculo' => 0.0,
                            'aliquota' => 0.0,
                            'valor' => 0.0,
                            'modalidadeBaseCalculo' => 'corrupti',
                            'aliquotaCredito' => 1.25,
                            'valorCredito' => 0.07,
                            'baseCalculoST' => 0.0,
                            'aliquotaST' => 0.0,
                            'valorST' => 97.33803429,
                            'modalidadeBaseCalculoST' => 'quisquam',
                            'vBCFCP' => 100.0,
                            'pFCP' => 2.0,
                            'vFCP' => 2.0,
                            'vBCFCPST' => 100.0,
                            'pFCPST' => 2.0,
                            'vFCPST' => 2.0,
                        ],
                        'difal' => [
                            'baseCalculo' => 500.0,
                            'aliquotaInterna' => 18.0,
                            'aliquotaInterestadual' => 12.0,
                            'valor' => 30.0,
                            'valorRemetente' => 0.0,
                            'baseCalculoFCP' => 500.0,
                            'aliquotaFCP' => 2.0,
                            'valorFCP' => 10.0,
                        ],
                        'ipi' => [
                            'situacaoTributaria' => '50',
                            'enquadramentoLegal' => '999',
                            'baseCalculo' => 500.0,
                            'aliquota' => 10.0,
                            'valor' => 50.0,
                            'quantidadeUnidadeTributavel' => 10.0,
                            'valorUnidadeTributavel' => 1.5,
                            'cnpjProdutor' => '12345678000190',
                            'codigoSelo' => 'SELO123',
                            'quantidadeSelo' => '10',
                        ],
                        'pis' => [
                            'situacaoTributaria' => '07',
                            'baseCalculo' => 0.0,
                            'aliquota' => 0.0,
                            'valor' => 0.0,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.1,
                        ],
                        'cofins' => [
                            'situacaoTributaria' => '07',
                            'baseCalculo' => 0.0,
                            'aliquota' => 0.0,
                            'valor' => 0.0,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.46,
                        ],
                        'pisST' => [
                            'baseCalculo' => 500.0,
                            'aliquota' => 1.65,
                            'valor' => 8.25,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.1,
                            'somaValorTotalNota' => false,
                        ],
                        'cofinsST' => [
                            'baseCalculo' => 500.0,
                            'aliquota' => 7.6,
                            'valor' => 38.0,
                            'quantidadeVendida' => 100.0,
                            'aliquotaReais' => 0.46,
                            'somaValorTotalNota' => false,
                        ],
                        'ii' => [
                            'baseCalculo' => 5000.0,
                            'despesasAduaneiras' => 300.0,
                            'valor' => 900.0,
                            'valorIOF' => 20.0,
                        ],
                        'ibsCbs' => [
                            'situacaoTributaria' => '000',
                            'classificacaoTributaria' => '000001',
                            'baseCalculo' => 500.0,
                            'aliquotaIBSEstadual' => 0.1,
                            'valorIBSEstadual' => 1.0,
                            'aliquotaIBSMunicipal' => 0.0,
                            'valorIBSMunicipal' => 0.0,
                            'aliquotaCBS' => 0.9,
                            'valorCBS' => 9.0,
                            'percentualDiferimentoIBSEstadual' => 100.0,
                            'valorDiferimentoIBSEstadual' => 1.0,
                            'percentualDiferimentoIBSMunicipal' => 100.0,
                            'valorDiferimentoIBSMunicipal' => 0.0,
                            'percentualDiferimentoCBS' => 100.0,
                            'valorDiferimentoCBS' => 9.0,
                        ],
                        'percentualAproximadoTributos' => [
                            'fonte' => 'IBPT',
                            'detalhado' => [
                                'percentualFederal' => 8.5,
                                'percentualEstadual' => 12.0,
                                'percentualMunicipal' => 0.0,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/nfc/gerar"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Company-uuid": "{YOUR_COMPANY_UUID}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "numero": 1,
    "serie": 1,
    "pedido": {
        "naturezaOperacao": "Venda de mercadoria",
        "presencaConsumidor": "OperacaoPresencial",
        "informacoesComplementares": "Obrigado pela preferência!",
        "informacoesFisco": "Documento emitido por ME ou EPP optante pelo Simples Nacional.",
        "pagamento": {
            "formas": [
                {
                    "tipo": "Pix",
                    "valor": 29.9
                }
            ]
        }
    },
    "cliente": {
        "nome": "Maria Silva",
        "cpfCnpj": "12345678901",
        "email": "[email protected]",
        "telefone": "(81) 98765-4321",
        "endereco": {
            "uf": "PE",
            "cidade": "2611606",
            "logradouro": "Rua das Flores",
            "numero": "100",
            "complemento": null,
            "bairro": "Centro",
            "cep": "50010000"
        }
    },
    "itens": [
        {
            "cfop": "5102",
            "codigo": "000123",
            "descricao": "Refrigerante 350ml",
            "ncm": "22021000",
            "ean": "7891234567891",
            "cest": "0302100",
            "quantidade": 2,
            "unidadeMedida": "UN",
            "valorUnitario": 5.99,
            "desconto": 0,
            "impostos": {
                "icms": {
                    "situacaoTributaria": "500",
                    "origem": "0",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "modalidadeBaseCalculo": "corrupti",
                    "aliquotaCredito": 1.25,
                    "valorCredito": 0.07,
                    "baseCalculoST": 0,
                    "aliquotaST": 0,
                    "valorST": 97.33803429,
                    "modalidadeBaseCalculoST": "quisquam",
                    "vBCFCP": 100,
                    "pFCP": 2,
                    "vFCP": 2,
                    "vBCFCPST": 100,
                    "pFCPST": 2,
                    "vFCPST": 2
                },
                "difal": {
                    "baseCalculo": 500,
                    "aliquotaInterna": 18,
                    "aliquotaInterestadual": 12,
                    "valor": 30,
                    "valorRemetente": 0,
                    "baseCalculoFCP": 500,
                    "aliquotaFCP": 2,
                    "valorFCP": 10
                },
                "ipi": {
                    "situacaoTributaria": "50",
                    "enquadramentoLegal": "999",
                    "baseCalculo": 500,
                    "aliquota": 10,
                    "valor": 50,
                    "quantidadeUnidadeTributavel": 10,
                    "valorUnidadeTributavel": 1.5,
                    "cnpjProdutor": "12345678000190",
                    "codigoSelo": "SELO123",
                    "quantidadeSelo": "10"
                },
                "pis": {
                    "situacaoTributaria": "07",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1
                },
                "cofins": {
                    "situacaoTributaria": "07",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46
                },
                "pisST": {
                    "baseCalculo": 500,
                    "aliquota": 1.65,
                    "valor": 8.25,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1,
                    "somaValorTotalNota": false
                },
                "cofinsST": {
                    "baseCalculo": 500,
                    "aliquota": 7.6,
                    "valor": 38,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46,
                    "somaValorTotalNota": false
                },
                "ii": {
                    "baseCalculo": 5000,
                    "despesasAduaneiras": 300,
                    "valor": 900,
                    "valorIOF": 20
                },
                "ibsCbs": {
                    "situacaoTributaria": "000",
                    "classificacaoTributaria": "000001",
                    "baseCalculo": 500,
                    "aliquotaIBSEstadual": 0.1,
                    "valorIBSEstadual": 1,
                    "aliquotaIBSMunicipal": 0,
                    "valorIBSMunicipal": 0,
                    "aliquotaCBS": 0.9,
                    "valorCBS": 9,
                    "percentualDiferimentoIBSEstadual": 100,
                    "valorDiferimentoIBSEstadual": 1,
                    "percentualDiferimentoIBSMunicipal": 100,
                    "valorDiferimentoIBSMunicipal": 0,
                    "percentualDiferimentoCBS": 100,
                    "valorDiferimentoCBS": 9
                },
                "percentualAproximadoTributos": {
                    "fonte": "IBPT",
                    "detalhado": {
                        "percentualFederal": 8.5,
                        "percentualEstadual": 12,
                        "percentualMunicipal": 0
                    }
                }
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/nfc/gerar'
payload = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "numero": 1,
    "serie": 1,
    "pedido": {
        "naturezaOperacao": "Venda de mercadoria",
        "presencaConsumidor": "OperacaoPresencial",
        "informacoesComplementares": "Obrigado pela preferência!",
        "informacoesFisco": "Documento emitido por ME ou EPP optante pelo Simples Nacional.",
        "pagamento": {
            "formas": [
                {
                    "tipo": "Pix",
                    "valor": 29.9
                }
            ]
        }
    },
    "cliente": {
        "nome": "Maria Silva",
        "cpfCnpj": "12345678901",
        "email": "[email protected]",
        "telefone": "(81) 98765-4321",
        "endereco": {
            "uf": "PE",
            "cidade": "2611606",
            "logradouro": "Rua das Flores",
            "numero": "100",
            "complemento": null,
            "bairro": "Centro",
            "cep": "50010000"
        }
    },
    "itens": [
        {
            "cfop": "5102",
            "codigo": "000123",
            "descricao": "Refrigerante 350ml",
            "ncm": "22021000",
            "ean": "7891234567891",
            "cest": "0302100",
            "quantidade": 2,
            "unidadeMedida": "UN",
            "valorUnitario": 5.99,
            "desconto": 0,
            "impostos": {
                "icms": {
                    "situacaoTributaria": "500",
                    "origem": "0",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "modalidadeBaseCalculo": "corrupti",
                    "aliquotaCredito": 1.25,
                    "valorCredito": 0.07,
                    "baseCalculoST": 0,
                    "aliquotaST": 0,
                    "valorST": 97.33803429,
                    "modalidadeBaseCalculoST": "quisquam",
                    "vBCFCP": 100,
                    "pFCP": 2,
                    "vFCP": 2,
                    "vBCFCPST": 100,
                    "pFCPST": 2,
                    "vFCPST": 2
                },
                "difal": {
                    "baseCalculo": 500,
                    "aliquotaInterna": 18,
                    "aliquotaInterestadual": 12,
                    "valor": 30,
                    "valorRemetente": 0,
                    "baseCalculoFCP": 500,
                    "aliquotaFCP": 2,
                    "valorFCP": 10
                },
                "ipi": {
                    "situacaoTributaria": "50",
                    "enquadramentoLegal": "999",
                    "baseCalculo": 500,
                    "aliquota": 10,
                    "valor": 50,
                    "quantidadeUnidadeTributavel": 10,
                    "valorUnidadeTributavel": 1.5,
                    "cnpjProdutor": "12345678000190",
                    "codigoSelo": "SELO123",
                    "quantidadeSelo": "10"
                },
                "pis": {
                    "situacaoTributaria": "07",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1
                },
                "cofins": {
                    "situacaoTributaria": "07",
                    "baseCalculo": 0,
                    "aliquota": 0,
                    "valor": 0,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46
                },
                "pisST": {
                    "baseCalculo": 500,
                    "aliquota": 1.65,
                    "valor": 8.25,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.1,
                    "somaValorTotalNota": false
                },
                "cofinsST": {
                    "baseCalculo": 500,
                    "aliquota": 7.6,
                    "valor": 38,
                    "quantidadeVendida": 100,
                    "aliquotaReais": 0.46,
                    "somaValorTotalNota": false
                },
                "ii": {
                    "baseCalculo": 5000,
                    "despesasAduaneiras": 300,
                    "valor": 900,
                    "valorIOF": 20
                },
                "ibsCbs": {
                    "situacaoTributaria": "000",
                    "classificacaoTributaria": "000001",
                    "baseCalculo": 500,
                    "aliquotaIBSEstadual": 0.1,
                    "valorIBSEstadual": 1,
                    "aliquotaIBSMunicipal": 0,
                    "valorIBSMunicipal": 0,
                    "aliquotaCBS": 0.9,
                    "valorCBS": 9,
                    "percentualDiferimentoIBSEstadual": 100,
                    "valorDiferimentoIBSEstadual": 1,
                    "percentualDiferimentoIBSMunicipal": 100,
                    "valorDiferimentoIBSMunicipal": 0,
                    "percentualDiferimentoCBS": 100,
                    "valorDiferimentoCBS": 9
                },
                "percentualAproximadoTributos": {
                    "fonte": "IBPT",
                    "detalhado": {
                        "percentualFederal": 8.5,
                        "percentualEstadual": 12,
                        "percentualMunicipal": 0
                    }
                }
            }
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Company-uuid': '{YOUR_COMPANY_UUID}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/nfc/gerar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Company-uuid: {YOUR_COMPANY_UUID}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"callback\": \"https:\\/\\/example.com\\/callback\",
    \"ambiente\": \"developer\",
    \"numero\": 1,
    \"serie\": 1,
    \"pedido\": {
        \"naturezaOperacao\": \"Venda de mercadoria\",
        \"presencaConsumidor\": \"OperacaoPresencial\",
        \"informacoesComplementares\": \"Obrigado pela preferência!\",
        \"informacoesFisco\": \"Documento emitido por ME ou EPP optante pelo Simples Nacional.\",
        \"pagamento\": {
            \"formas\": [
                {
                    \"tipo\": \"Pix\",
                    \"valor\": 29.9
                }
            ]
        }
    },
    \"cliente\": {
        \"nome\": \"Maria Silva\",
        \"cpfCnpj\": \"12345678901\",
        \"email\": \"[email protected]\",
        \"telefone\": \"(81) 98765-4321\",
        \"endereco\": {
            \"uf\": \"PE\",
            \"cidade\": \"2611606\",
            \"logradouro\": \"Rua das Flores\",
            \"numero\": \"100\",
            \"complemento\": null,
            \"bairro\": \"Centro\",
            \"cep\": \"50010000\"
        }
    },
    \"itens\": [
        {
            \"cfop\": \"5102\",
            \"codigo\": \"000123\",
            \"descricao\": \"Refrigerante 350ml\",
            \"ncm\": \"22021000\",
            \"ean\": \"7891234567891\",
            \"cest\": \"0302100\",
            \"quantidade\": 2,
            \"unidadeMedida\": \"UN\",
            \"valorUnitario\": 5.99,
            \"desconto\": 0,
            \"impostos\": {
                \"icms\": {
                    \"situacaoTributaria\": \"500\",
                    \"origem\": \"0\",
                    \"baseCalculo\": 0,
                    \"aliquota\": 0,
                    \"valor\": 0,
                    \"modalidadeBaseCalculo\": \"corrupti\",
                    \"aliquotaCredito\": 1.25,
                    \"valorCredito\": 0.07,
                    \"baseCalculoST\": 0,
                    \"aliquotaST\": 0,
                    \"valorST\": 97.33803429,
                    \"modalidadeBaseCalculoST\": \"quisquam\",
                    \"vBCFCP\": 100,
                    \"pFCP\": 2,
                    \"vFCP\": 2,
                    \"vBCFCPST\": 100,
                    \"pFCPST\": 2,
                    \"vFCPST\": 2
                },
                \"difal\": {
                    \"baseCalculo\": 500,
                    \"aliquotaInterna\": 18,
                    \"aliquotaInterestadual\": 12,
                    \"valor\": 30,
                    \"valorRemetente\": 0,
                    \"baseCalculoFCP\": 500,
                    \"aliquotaFCP\": 2,
                    \"valorFCP\": 10
                },
                \"ipi\": {
                    \"situacaoTributaria\": \"50\",
                    \"enquadramentoLegal\": \"999\",
                    \"baseCalculo\": 500,
                    \"aliquota\": 10,
                    \"valor\": 50,
                    \"quantidadeUnidadeTributavel\": 10,
                    \"valorUnidadeTributavel\": 1.5,
                    \"cnpjProdutor\": \"12345678000190\",
                    \"codigoSelo\": \"SELO123\",
                    \"quantidadeSelo\": \"10\"
                },
                \"pis\": {
                    \"situacaoTributaria\": \"07\",
                    \"baseCalculo\": 0,
                    \"aliquota\": 0,
                    \"valor\": 0,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.1
                },
                \"cofins\": {
                    \"situacaoTributaria\": \"07\",
                    \"baseCalculo\": 0,
                    \"aliquota\": 0,
                    \"valor\": 0,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.46
                },
                \"pisST\": {
                    \"baseCalculo\": 500,
                    \"aliquota\": 1.65,
                    \"valor\": 8.25,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.1,
                    \"somaValorTotalNota\": false
                },
                \"cofinsST\": {
                    \"baseCalculo\": 500,
                    \"aliquota\": 7.6,
                    \"valor\": 38,
                    \"quantidadeVendida\": 100,
                    \"aliquotaReais\": 0.46,
                    \"somaValorTotalNota\": false
                },
                \"ii\": {
                    \"baseCalculo\": 5000,
                    \"despesasAduaneiras\": 300,
                    \"valor\": 900,
                    \"valorIOF\": 20
                },
                \"ibsCbs\": {
                    \"situacaoTributaria\": \"000\",
                    \"classificacaoTributaria\": \"000001\",
                    \"baseCalculo\": 500,
                    \"aliquotaIBSEstadual\": 0.1,
                    \"valorIBSEstadual\": 1,
                    \"aliquotaIBSMunicipal\": 0,
                    \"valorIBSMunicipal\": 0,
                    \"aliquotaCBS\": 0.9,
                    \"valorCBS\": 9,
                    \"percentualDiferimentoIBSEstadual\": 100,
                    \"valorDiferimentoIBSEstadual\": 1,
                    \"percentualDiferimentoIBSMunicipal\": 100,
                    \"valorDiferimentoIBSMunicipal\": 0,
                    \"percentualDiferimentoCBS\": 100,
                    \"valorDiferimentoCBS\": 9
                },
                \"percentualAproximadoTributos\": {
                    \"fonte\": \"IBPT\",
                    \"detalhado\": {
                        \"percentualFederal\": 8.5,
                        \"percentualEstadual\": 12,
                        \"percentualMunicipal\": 0
                    }
                }
            }
        }
    ]
}"

Exemplo de resposta (201, Solicitação criada. O processamento ocorre de forma assíncrona.):


{
    "protocolo": 3050,
    "status": "processando"
}
 

Exemplo de resposta (422):


{
    "message": "The itens field is required.",
    "errors": {
        "itens": [
            "The itens field is required."
        ]
    }
}
 

Requisição      

POST api/v2/nfc/gerar

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Company-uuid        

Exemplo: {YOUR_COMPANY_UUID}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros do corpo

callback   string  optional    

[Opcional] URL de callback para receber o resultado do processamento. Exemplo: https://example.com/callback

ambiente   string     

[Obrigatório] Ambiente de emissão. Valores aceitos: production, developer ou sandbox (emissão fictícia, sem certificado nem transmissão à SEFAZ). Exemplo: developer

numero   integer     

[Obrigatório] Número da NFC-e. Exemplo: 1

serie   integer     

[Obrigatório] Série da NFC-e. Exemplo: 1

pedido   object  optional    
naturezaOperacao   string  optional    

[Opcional com preenchimento automático] Natureza da operação. Se não informado, o sistema usa "Venda de mercadoria". Exemplo: Venda de mercadoria

presencaConsumidor   string  optional    

[Opcional com preenchimento automático] Indicador de presença do comprador. Se não informado, o sistema usa OperacaoPresencial. Valores aceitos: OperacaoPresencial, OperacaoNaoPresencialInternet, OperacaoNaoPresencialTeleatendimento, NFCeEntregaDomicilio, OperacaoPresencialForaEstabelecimento, OperacaoNaoPresencialOutros. Exemplo: OperacaoPresencial

informacoesComplementares   string  optional    

[Opcional] Informações complementares de interesse do contribuinte, impressas no DANFCE. Máximo de 5000 caracteres. Exemplo: Obrigado pela preferência!

informacoesFisco   string  optional    

[Opcional] Informações adicionais de interesse do Fisco. Máximo de 2000 caracteres. Exemplo: Documento emitido por ME ou EPP optante pelo Simples Nacional.

pagamento   object  optional    
formas   object[]     

[Obrigatório] Formas de pagamento utilizadas.

tipo   string     

[Obrigatório] Tipo de pagamento. Valores aceitos: Dinheiro, Cheque, CartaoCredito, CartaoDebito, CreditoLoja, ValeAlimentacao, ValeRefeicao, ValePresente, ValeCombustivel, DuplicataMercantil, BoletoBancario, DepositoBancario, Pix, TransferenciaBancaria, SemPagamento, Outros. Exemplo: Pix

valor   number     

[Obrigatório] Valor pago nessa forma. Exemplo: 29.9

cliente   object  optional    

[Opcional] Dados do consumidor. Na NFC-e o cliente não é obrigatório — omitir emite o cupom sem identificação. Quando informado, apenas CPF/CNPJ é obrigatório; nome é opcional.

nome   string  optional    

[Opcional] Nome do consumidor. Exemplo: Maria Silva

cpfCnpj   string  optional    

[Obrigatório se cliente for informado] CPF ou CNPJ do consumidor, sem pontuação. 11 dígitos é tratado como CPF, qualquer outro comprimento como CNPJ. Exemplo: 12345678901

email   string  optional    

[Opcional] E-mail do consumidor. Exemplo: [email protected]

telefone   string  optional    

[Opcional] Telefone do consumidor. Exemplo: (81) 98765-4321

endereco   object  optional    
uf   string  optional    

[Opcional] UF do consumidor. Exemplo: PE

cidade   string  optional    

[Opcional] Código IBGE do município. Exemplo: 2611606

logradouro   string  optional    

[Opcional] Logradouro. Exemplo: Rua das Flores

numero   string  optional    

[Obrigatório se cliente.endereco.logradouro for informado] Número. Exemplo: 100

complemento   string  optional    

[Opcional] Complemento.

bairro   string  optional    

[Opcional] Bairro. Exemplo: Centro

cep   string  optional    

[Opcional] CEP sem pontuação. Exemplo: 50010000

itens   object[]     

[Obrigatório] Itens do cupom.

cfop   string     

[Obrigatório] CFOP do item. Exemplo: 5102

codigo   string     

[Obrigatório] Código interno do produto. Exemplo: 000123

descricao   string     

[Obrigatório] Descrição do produto. Exemplo: Refrigerante 350ml

ncm   string     

[Obrigatório] NCM do produto. Exemplo: 22021000

ean   string  optional    

[Opcional] Código de barras (GTIN) do produto. Exemplo: 7891234567891

cest   string  optional    

[Opcional] Código CEST do produto. Exemplo: 0302100

quantidade   number     

[Obrigatório] Quantidade vendida. Exemplo: 2

unidadeMedida   string     

[Obrigatório] Unidade de medida. Exemplo: UN

valorUnitario   number     

[Obrigatório] Valor unitário do produto. Exemplo: 5.99

desconto   number  optional    

[Opcional] Valor do desconto do item. Não pode ser maior que quantidade × valorUnitario. Exemplo: 0

impostos   object  optional    
icms   object  optional    
situacaoTributaria   string     

[Obrigatório] CST/CSOSN do ICMS. Valores suportados: 00, 40, 41, 50, 60, 90 (CST - regime normal); 101, 102, 103, 201, 202, 203, 300, 400, 500, 900 (CSOSN - Simples Nacional). Exemplo: 500

origem   string  optional    

[Opcional] Origem da mercadoria (Tabela B do ICMS). Se não informado, o sistema usa 0 (nacional). Exemplo: 0

baseCalculo   number  optional    

[Obrigatório para CST 00/90] Base de cálculo do ICMS. Exemplo: 0

aliquota   number  optional    

[Obrigatório para CST 00/90] Alíquota do ICMS. Exemplo: 0

valor   number  optional    

[Opcional] Valor do ICMS. Se não informado, é calculado a partir de baseCalculo e aliquota. Exemplo: 0

modalidadeBaseCalculo   string  optional    

Exemplo: corrupti

aliquotaCredito   number  optional    

[Obrigatório para CSOSN 101] Alíquota de crédito do ICMS (Simples Nacional). Exemplo: 1.25

valorCredito   number  optional    

[Obrigatório para CSOSN 101] Valor do crédito do ICMS (Simples Nacional). Exemplo: 0.07

baseCalculoST   number  optional    

[Obrigatório para CSOSN 201/202/203] Base de cálculo do ICMS-ST. Exemplo: 0

aliquotaST   number  optional    

[Obrigatório para CSOSN 201/202/203] Alíquota do ICMS-ST. Exemplo: 0

valorST   number  optional    

Exemplo: 97.33803429

modalidadeBaseCalculoST   string  optional    

Exemplo: quisquam

vBCFCP   number  optional    

[Opcional] Valor da base de cálculo do FCP (Fundo de Combate à Pobreza). Aplicável só a NCM específicos definidos por cada UF. Exemplo: 100

pFCP   number  optional    

[Opcional] Percentual do FCP. Exemplo: 2

vFCP   number  optional    

[Opcional] Valor do FCP. Exemplo: 2

vBCFCPST   number  optional    

[Opcional] Valor da base de cálculo do FCP retido por Substituição Tributária. Exemplo: 100

pFCPST   number  optional    

[Opcional] Percentual do FCP retido por Substituição Tributária. Exemplo: 2

vFCPST   number  optional    

[Opcional] Valor do FCP retido por Substituição Tributária. Exemplo: 2

difal   object  optional    

[Opcional] DIFAL (partilha do ICMS interestadual, EC 87/2015) — informe só em vendas interestaduais para consumidor final não contribuinte do ICMS. Se informado, baseCalculo, aliquotaInterna e aliquotaInterestadual são obrigatórios.

baseCalculo   number  optional    

[Obrigatório se impostos.difal for informado] Base de cálculo do ICMS na UF de destino. This field is required when itens.*.impostos.difal is present. Exemplo: 500

aliquotaInterna   number  optional    

[Obrigatório se impostos.difal for informado] Alíquota interna do ICMS na UF de destino. This field is required when itens.*.impostos.difal is present. Exemplo: 18

aliquotaInterestadual   number  optional    

[Obrigatório se impostos.difal for informado] Alíquota interestadual do ICMS entre a UF de origem e a de destino. This field is required when itens.*.impostos.difal is present. Exemplo: 12

valor   number  optional    

[Opcional com cálculo automático] Valor do ICMS de partilha para a UF de destino. Se omitido, é calculado a partir de baseCalculo×aliquotaInterna menos o ICMS já retido na alíquota interestadual. Exemplo: 30

valorRemetente   number  optional    

[Opcional] Valor do ICMS de partilha para a UF de origem (remetente). Zerado desde 2019, quando a transição da EC 87/2015 terminou — normalmente não precisa informar. Exemplo: 0

baseCalculoFCP   number  optional    

[Opcional, só junto de aliquotaFCP] Base de cálculo do FCP na UF de destino. Se omitido e aliquotaFCP for informado, usa o mesmo valor de baseCalculo. Exemplo: 500

aliquotaFCP   number  optional    

[Opcional] Alíquota do FCP (Fundo de Combate à Pobreza) da UF de destino, quando essa UF cobrar FCP sobre a operação. Exemplo: 2

valorFCP   number  optional    

[Opcional com cálculo automático] Valor do FCP da UF de destino. Se omitido e aliquotaFCP for informado, é calculado a partir de baseCalculoFCP×aliquotaFCP. Exemplo: 10

ipi   object  optional    

[Opcional] Dados do IPI do item. A maioria dos produtos não paga IPI — omita o grupo inteiro nesse caso. Se informado, situacaoTributaria é obrigatório.

situacaoTributaria   string  optional    

[Obrigatório se impostos.ipi for informado] Código da Situação Tributária do IPI (CST). Tributado (exige baseCalculo+aliquota OU quantidadeUnidadeTributavel+valorUnidadeTributavel): 00 = Entrada com recuperação de crédito, 49 = Outras entradas, 50 = Saída tributada, 99 = Outras saídas. Sem valor a recolher: 01 = Entrada tributada com alíquota zero, 02 = Entrada isenta, 03 = Entrada não-tributada, 04 = Entrada imune, 05 = Entrada com suspensão, 51 = Saída tributada com alíquota zero, 52 = Saída isenta, 53 = Saída não-tributada, 54 = Saída imune, 55 = Saída com suspensão. This field is required when itens.*.impostos.ipi is present. Exemplo: 50

enquadramentoLegal   string  optional    

[Opcional] Código de Enquadramento Legal do IPI (tabela da RFB, até 3 dígitos). Se não informado, o sistema usa 999 (Outros). Must not be greater than 3 characters. Exemplo: 999

baseCalculo   number  optional    

[Obrigatório junto de aliquota, se o item não for tributado por unidade] Base de cálculo do IPI. Exemplo: 500

aliquota   number  optional    

[Obrigatório junto de baseCalculo, se o item não for tributado por unidade] Alíquota do IPI, em percentual. Exemplo: 10

valor   number  optional    

[Opcional com cálculo automático] Valor do IPI. Se omitido, é calculado a partir de baseCalculo×aliquota ou quantidadeUnidadeTributavel×valorUnidadeTributavel. Exemplo: 50

quantidadeUnidadeTributavel   number  optional    

[Obrigatório junto de valorUnidadeTributavel, só para produtos com pauta fiscal por unidade, ex.: cigarros] Quantidade total na unidade padrão de tributação. Exemplo: 10

valorUnidadeTributavel   number  optional    

[Obrigatório junto de quantidadeUnidadeTributavel] Valor do IPI por unidade tributável. Exemplo: 1.5

cnpjProdutor   string  optional    

[Opcional] CNPJ do produtor da mercadoria, quando diferente do emitente. Só para exportação direta ou indireta. Must be 14 digits. Exemplo: 12345678000190

codigoSelo   string  optional    

[Obrigatório junto de quantidadeSelo, se algum dos dois for informado] Código do selo de controle do IPI (cigarros/bebidas). Must not be greater than 60 characters. Exemplo: SELO123

quantidadeSelo   string  optional    

[Obrigatório junto de codigoSelo, se algum dos dois for informado] Quantidade de selo de controle do IPI. Must match the regex /^\d{1,12}$/. Exemplo: 10

pis   object  optional    
situacaoTributaria   string     

[Obrigatório] CST do PIS. Valores suportados: 01, 04, 06, 07, 08, 09, 49. Exemplo: 07

baseCalculo   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Base de cálculo do PIS. Exemplo: 0

aliquota   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Alíquota do PIS. Exemplo: 0

valor   number  optional    

[Opcional] Valor do PIS. Exemplo: 0

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais para CST 03, ou como alternativa a baseCalculo+aliquota para CST 49-99] Quantidade vendida, para apuração do PIS por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do PIS em R$ por unidade. Exemplo: 0.1

cofins   object  optional    
situacaoTributaria   string     

[Obrigatório] CST do COFINS. Valores suportados: 01, 04, 06, 07, 08, 09, 49. Exemplo: 07

baseCalculo   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Base de cálculo do COFINS. Exemplo: 0

aliquota   number  optional    

[Obrigatório para CST 01/49, salvo se 'valor' for informado direto] Alíquota do COFINS. Exemplo: 0

valor   number  optional    

[Opcional] Valor do COFINS. Exemplo: 0

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais para CST 03, ou como alternativa a baseCalculo+aliquota para CST 49-99] Quantidade vendida, para apuração do COFINS por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do COFINS em R$ por unidade. Exemplo: 0.46

pisST   object  optional    

[Opcional] PIS-ST — use quando o PIS deste item já foi retido antes na cadeia por substituição tributária (comum em combustíveis, cigarros, bebidas frias), no lugar de impostos.pis. Informe impostos.pis OU impostos.pisST, nunca os dois nem nenhum dos dois — a SEFAZ rejeita a tag PIS e a PISST juntas no mesmo item.

baseCalculo   number  optional    

[Obrigatório junto de aliquota, como alternativa a quantidadeVendida+aliquotaReais] Base de cálculo do PIS-ST. Exemplo: 500

aliquota   number  optional    

[Obrigatório junto de baseCalculo] Alíquota do PIS-ST, em percentual. Exemplo: 1.65

valor   number  optional    

[Opcional com cálculo automático] Valor do PIS-ST. Se omitido, é calculado a partir de baseCalculo×aliquota ou quantidadeVendida×aliquotaReais. Exemplo: 8.25

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais, como alternativa a baseCalculo+aliquota] Quantidade vendida, para apuração do PIS-ST por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do PIS-ST em R$ por unidade. Exemplo: 0.1

somaValorTotalNota   boolean  optional    

[Opcional, default false] Indica se o valor do PIS-ST deve ser somado ao valor total da nota. O padrão é não somar, porque o valor retido normalmente já está embutido no preço cobrado do cliente. Exemplo: false

cofinsST   object  optional    

[Opcional] COFINS-ST — mesma mecânica de impostos.pisST, aplicada à COFINS. Informe impostos.cofins OU impostos.cofinsST, nunca os dois nem nenhum dos dois.

baseCalculo   number  optional    

[Obrigatório junto de aliquota, como alternativa a quantidadeVendida+aliquotaReais] Base de cálculo do COFINS-ST. Exemplo: 500

aliquota   number  optional    

[Obrigatório junto de baseCalculo] Alíquota do COFINS-ST, em percentual. Exemplo: 7.6

valor   number  optional    

[Opcional com cálculo automático] Valor do COFINS-ST. Se omitido, é calculado a partir de baseCalculo×aliquota ou quantidadeVendida×aliquotaReais. Exemplo: 38

quantidadeVendida   number  optional    

[Obrigatório junto de aliquotaReais, como alternativa a baseCalculo+aliquota] Quantidade vendida, para apuração do COFINS-ST por quantidade (ex.: combustíveis). Exemplo: 100

aliquotaReais   number  optional    

[Obrigatório junto de quantidadeVendida] Alíquota do COFINS-ST em R$ por unidade. Exemplo: 0.46

somaValorTotalNota   boolean  optional    

[Opcional, default false] Indica se o valor do COFINS-ST deve ser somado ao valor total da nota. O padrão é não somar, porque o valor retido normalmente já está embutido no preço cobrado do cliente. Exemplo: false

ii   object  optional    

[Opcional] II (Imposto de Importação) — informe só quando o item for mercadoria importada diretamente pelo emitente (com DI/DUIMP). A maioria dos itens não é importação direta. Se informado, os 4 campos são obrigatórios — diferente de ICMS/PIS/COFINS/IPI, aqui não há cálculo automático: o valor do II depende de tabela aduaneira por NCM/país de origem e câmbio, que a devnota não tem como aproximar.

baseCalculo   number  optional    

[Obrigatório se impostos.ii for informado] Base de cálculo do Imposto de Importação. This field is required when itens.*.impostos.ii is present. Exemplo: 5000

despesasAduaneiras   number  optional    

[Obrigatório se impostos.ii for informado] Valor das despesas aduaneiras. This field is required when itens.*.impostos.ii is present. Exemplo: 300

valor   number  optional    

[Obrigatório se impostos.ii for informado] Valor do Imposto de Importação. This field is required when itens.*.impostos.ii is present. Exemplo: 900

valorIOF   number  optional    

[Obrigatório se impostos.ii for informado] Valor do IOF (Imposto sobre Operações Financeiras) incidente sobre a operação de importação. This field is required when itens.*.impostos.ii is present. Exemplo: 20

ibsCbs   object  optional    

[Opcional, mas obrigatório a partir de 2027 conforme cronograma da Reforma Tributária] IBS/CBS (EC 132/2023 / LC 214/2025). 2026 é o ano-teste: alíquotas simbólicas de calibração, sem efeito no valor total da nota — mas o grupo já precisa ser enviado para quem a Receita determinar. Cobre só o caminho regular (sem monofasia de combustíveis, Zona Franca de Manaus, compra governamental ou crédito presumido). Se informado, situacaoTributaria, classificacaoTributaria e baseCalculo são obrigatórios; as três alíquotas só são obrigatórias fora da combinação "padrão" (ver situacaoTributaria).

situacaoTributaria   string  optional    

[Obrigatório se impostos.ibsCbs for informado] Código de Situação Tributária do IBS/CBS (CST, 3 dígitos, tabela própria da Reforma — não confundir com o CST do ICMS). 000 = Tributação integral, sem benefício — junto com classificacaoTributaria 000001, é a única combinação com alíquota uniforme o bastante para ter default (ver aliquotaIBSEstadual/aliquotaIBSMunicipal/aliquotaCBS). Qualquer outro CST (isenção, redução, diferimento etc.) exige as três alíquotas explícitas. This field is required when itens.*.impostos.ibsCbs is present. Exemplo: 000

classificacaoTributaria   string  optional    

[Obrigatório se impostos.ibsCbs for informado] Código de Classificação Tributária do IBS/CBS (cClassTrib, 6 dígitos, tabela própria da Reforma). 000001 = Tributação integral, sem benefício — é o único código, junto com o CST 000, que habilita o default de alíquota do ano-teste. This field is required when itens.*.impostos.ibsCbs is present. Must be 6 digits. Exemplo: 000001

baseCalculo   number  optional    

[Obrigatório se impostos.ibsCbs for informado] Base de cálculo do IBS e da CBS. This field is required when itens.*.impostos.ibsCbs is present. Exemplo: 500

aliquotaIBSEstadual   number  optional    

[Opcional só para CST 000 + classificacaoTributaria 000001; obrigatório para qualquer outra classificação] Alíquota do IBS de competência da UF, em percentual. Se omitido na combinação padrão, usa a alíquota-teste de 2026 fixada em lei (0,1% — nessa fase, 100% da partilha do IBS fica com a UF) — sujeita a mudar conforme o cronograma de transição da LC 214/2025. Exemplo: 0.1

valorIBSEstadual   number  optional    

[Opcional com cálculo automático] Valor do IBS de competência da UF, líquido de eventual diferimento (ver percentualDiferimentoIBSEstadual). Se omitido, é calculado a partir de baseCalculo×aliquotaIBSEstadual (usando o default do ano-teste quando aplicável). Exemplo: 1

aliquotaIBSMunicipal   number  optional    

[Opcional só para CST 000 + classificacaoTributaria 000001; obrigatório para qualquer outra classificação] Alíquota do IBS de competência do Município, em percentual. Se omitido na combinação padrão, usa a alíquota-teste de 2026 fixada em lei (0% — nessa fase, a partilha do IBS não inclui o Município) — sujeita a mudar conforme o cronograma de transição da LC 214/2025. Exemplo: 0

valorIBSMunicipal   number  optional    

[Opcional com cálculo automático] Valor do IBS de competência do Município, líquido de eventual diferimento (ver percentualDiferimentoIBSMunicipal). Se omitido, é calculado a partir de baseCalculo×aliquotaIBSMunicipal (usando o default do ano-teste quando aplicável). Exemplo: 0

aliquotaCBS   number  optional    

[Opcional só para CST 000 + classificacaoTributaria 000001; obrigatório para qualquer outra classificação] Alíquota da CBS (contribuição federal), em percentual. Se omitido na combinação padrão, usa a alíquota-teste de 2026 fixada em lei (0,9%) — sujeita a mudar conforme o cronograma de transição da LC 214/2025. Exemplo: 0.9

valorCBS   number  optional    

[Opcional com cálculo automático] Valor da CBS, líquido de eventual diferimento (ver percentualDiferimentoCBS). Se omitido, é calculado a partir de baseCalculo×aliquotaCBS (usando o default do ano-teste quando aplicável). Exemplo: 9

percentualDiferimentoIBSEstadual   number  optional    

[Opcional] Percentual do IBS estadual cujo recolhimento é diferido (postergado para uma etapa seguinte da cadeia) — comum em operações da Zona Franca de Manaus e outros regimes especiais. Quando informado, valorIBSEstadual passa a ser o valor já líquido do diferimento (a menos que valorIBSEstadual venha explícito, que sempre prevalece). Exemplo: 100

valorDiferimentoIBSEstadual   number  optional    

[Opcional com cálculo automático, só junto de percentualDiferimentoIBSEstadual] Valor do IBS estadual diferido. Se omitido, é calculado a partir do valor integral do IBS estadual × percentualDiferimentoIBSEstadual. Exemplo: 1

percentualDiferimentoIBSMunicipal   number  optional    

[Opcional] Percentual do IBS municipal cujo recolhimento é diferido. Mesma mecânica de percentualDiferimentoIBSEstadual, aplicada ao componente municipal. Exemplo: 100

valorDiferimentoIBSMunicipal   number  optional    

[Opcional com cálculo automático, só junto de percentualDiferimentoIBSMunicipal] Valor do IBS municipal diferido. Se omitido, é calculado a partir do valor integral do IBS municipal × percentualDiferimentoIBSMunicipal. Exemplo: 0

percentualDiferimentoCBS   number  optional    

[Opcional] Percentual da CBS cujo recolhimento é diferido. Mesma mecânica de percentualDiferimentoIBSEstadual, aplicada à CBS. Exemplo: 100

valorDiferimentoCBS   number  optional    

[Opcional com cálculo automático, só junto de percentualDiferimentoCBS] Valor da CBS diferida. Se omitido, é calculado a partir do valor integral da CBS × percentualDiferimentoCBS. Exemplo: 9

percentualAproximadoTributos   object  optional    
fonte   string  optional    

[Opcional] Fonte dos percentuais de tributos (Lei da Transparência / IBPT). Exemplo: IBPT

detalhado   object  optional    
percentualFederal   number  optional    

[Opcional] Percentual aproximado de tributos federais. Exemplo: 8.5

percentualEstadual   number  optional    

[Opcional] Percentual aproximado de tributos estaduais. Exemplo: 12

percentualMunicipal   number  optional    

[Opcional] Percentual aproximado de tributos municipais. Exemplo: 0

Cancelar NFC-e

requer autenticação

Cria uma solicitação de cancelamento de uma NFC-e emitida. O processamento é assíncrono. Após o cancelamento, o XML protocolado com a tag de evento é sobrescrito na nota, garantindo que a impressão do DANFCE exiba o carimbo "NFe CANCELADA".

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/nfc/550e8400-e29b-41d4-a716-446655440000/cancelar';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Company-uuid' => '{YOUR_COMPANY_UUID}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'callback' => 'https://example.com/callback',
            'ambiente' => 'developer',
            'justificativa' => 'Cancelamento solicitado pelo cliente por erro na emissão.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/nfc/550e8400-e29b-41d4-a716-446655440000/cancelar"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Company-uuid": "{YOUR_COMPANY_UUID}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "justificativa": "Cancelamento solicitado pelo cliente por erro na emissão."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/nfc/550e8400-e29b-41d4-a716-446655440000/cancelar'
payload = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "justificativa": "Cancelamento solicitado pelo cliente por erro na emissão."
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Company-uuid': '{YOUR_COMPANY_UUID}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/nfc/550e8400-e29b-41d4-a716-446655440000/cancelar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Company-uuid: {YOUR_COMPANY_UUID}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"callback\": \"https:\\/\\/example.com\\/callback\",
    \"ambiente\": \"developer\",
    \"justificativa\": \"Cancelamento solicitado pelo cliente por erro na emissão.\"
}"

Exemplo de resposta (201, Solicitação criada. O processamento ocorre de forma assíncrona.):


{
    "protocolo": 3051,
    "status": "processando"
}
 

Exemplo de resposta (422):


{
    "message": "The justificativa field is required.",
    "errors": {
        "justificativa": [
            "The justificativa field is required."
        ]
    }
}
 

Requisição      

POST api/v2/nfc/{uuid}/cancelar

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Company-uuid        

Exemplo: {YOUR_COMPANY_UUID}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da NFC-e a ser cancelada. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Parâmetros do corpo

callback   string  optional    

[Opcional] URL de callback para receber o resultado. Exemplo: https://example.com/callback

ambiente   string     

Ambiente de emissão. Valores aceitos: production, developer ou sandbox. Exemplo: developer

justificativa   string     

Motivo do cancelamento (mínimo 15, máximo 255 caracteres). Exemplo: Cancelamento solicitado pelo cliente por erro na emissão.

NFS-e

APIs para emissão e cancelamento de notas fiscais de serviço.

Emitir NFS-e

requer autenticação

Cria uma solicitação de emissão de NFS-e usando o payload da API v2.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/nfse/gerar';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Company-uuid' => '{YOUR_COMPANY_UUID}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'callback' => 'https://example.com/callback',
            'ambiente' => 'developer',
            'prestador' => [
                'incentivadorCultural' => 'NAO',
                'incentivoFiscal' => 'NAO',
                'regimeTributario' => 'SIMPLES',
                'regimeTributarioEspecial' => 3526.27,
                'regimeApuracaoTributarioSimplesNacional' => 'FEDERAL_E_MUNICIPAL_FORA_SN',
                'naturezaTributacao' => 322644846.29,
            ],
            'rps' => [
                'numero' => 123456,
                'serie' => 1,
            ],
            'dataEmissao' => '2026-05-27T10:30:00-03:00',
            'dataCompetencia' => '2026-05-27',
            'tomador' => [
                'nome' => 'Cliente Example LTDA',
                'cpfCnpj' => '12345678000199',
                'email' => '[email protected]',
                'telefone' => '81999999999',
                'endereco' => [
                    'codigoMunicipioIBGE' => '2611606',
                    'logradouro' => 'Rua das Flores',
                    'numero' => '123',
                    'complemento' => 'Sala 101',
                    'bairro' => 'Centro',
                    'cep' => '50010000',
                ],
            ],
            'intermediario' => [
                'nome' => 'Intermediário Example LTDA',
                'cpfCnpj' => '12345678000199',
                'im' => '123456',
                'email' => '[email protected]',
                'telefone' => '81999999999',
                'endereco' => [
                    'codigoMunicipioIBGE' => '2611606',
                    'logradouro' => 'Rua das Flores',
                    'numero' => '123',
                    'complemento' => 'Sala 101',
                    'bairro' => 'Centro',
                    'cep' => '50010000',
                ],
            ],
            'obra' => [
                'codigo' => 'OBR-001',
                'art' => '123456789',
                'endereco' => [
                    'cep' => '50010000',
                    'logradouro' => 'Rua da Obra',
                    'numero' => '100',
                    'bairro' => 'Centro',
                ],
            ],
            'servico' => [
                'codigoServico' => '7.09',
                'codigoTributacaoMunicipio' => '0709',
                'nbs' => '123456789',
                'discriminacao' => 'Serviço de desenvolvimento de software.',
                'codigoMunicipioPrestacaoServicoIBGE' => '2611606',
                'codigoMunicipioIncidenciaIBGE' => '6660536',
                'informacoesComplementares' => 'iure',
                'valores' => [
                    'valor' => 1500.0,
                    'baseCalculo' => 1500.0,
                    'valorIntermediario' => 4.1,
                    'descontoCondicionado' => 0.0,
                    'descontoIncondicionado' => 0.0,
                    'issRetido' => 'NAO',
                    'aliquotaIss' => 5.0,
                    'cstPisCofins' => '01',
                    'baseCalculoPisCofins' => 1500.0,
                    'valorPis' => 4.5,
                    'valorCofins' => 18.0,
                    'aliquotaPis' => 0.65,
                    'aliquotaCofins' => 3.0,
                    'tpRetPisCofins' => 'animi',
                    'valorInss' => 0.0,
                    'valorIr' => 0.0,
                    'valorCsll' => 0.0,
                ],
            ],
            'ibscbs' => [
                'cst' => '00',
                'cClassTrib' => '1234567',
                'cIndOp' => '1',
                'finNFSe' => '1',
                'indDest' => '1',
                'indFinal' => '1',
            ],
            'tributacaoAproximada' => [
                'aliquotaSimplesNacional' => 4.6691,
                'federal' => [
                    'valor' => 10138852.6535,
                    'percentual' => 2.2033443,
                ],
                'estadual' => [
                    'valor' => 5089.870609,
                    'percentual' => 11043434.570587615,
                ],
                'municipal' => [
                    'valor' => 11264878.0162741,
                    'percentual' => 3515109.693682163,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/nfse/gerar"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Company-uuid": "{YOUR_COMPANY_UUID}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "prestador": {
        "incentivadorCultural": "NAO",
        "incentivoFiscal": "NAO",
        "regimeTributario": "SIMPLES",
        "regimeTributarioEspecial": 3526.27,
        "regimeApuracaoTributarioSimplesNacional": "FEDERAL_E_MUNICIPAL_FORA_SN",
        "naturezaTributacao": 322644846.29
    },
    "rps": {
        "numero": 123456,
        "serie": 1
    },
    "dataEmissao": "2026-05-27T10:30:00-03:00",
    "dataCompetencia": "2026-05-27",
    "tomador": {
        "nome": "Cliente Example LTDA",
        "cpfCnpj": "12345678000199",
        "email": "[email protected]",
        "telefone": "81999999999",
        "endereco": {
            "codigoMunicipioIBGE": "2611606",
            "logradouro": "Rua das Flores",
            "numero": "123",
            "complemento": "Sala 101",
            "bairro": "Centro",
            "cep": "50010000"
        }
    },
    "intermediario": {
        "nome": "Intermediário Example LTDA",
        "cpfCnpj": "12345678000199",
        "im": "123456",
        "email": "[email protected]",
        "telefone": "81999999999",
        "endereco": {
            "codigoMunicipioIBGE": "2611606",
            "logradouro": "Rua das Flores",
            "numero": "123",
            "complemento": "Sala 101",
            "bairro": "Centro",
            "cep": "50010000"
        }
    },
    "obra": {
        "codigo": "OBR-001",
        "art": "123456789",
        "endereco": {
            "cep": "50010000",
            "logradouro": "Rua da Obra",
            "numero": "100",
            "bairro": "Centro"
        }
    },
    "servico": {
        "codigoServico": "7.09",
        "codigoTributacaoMunicipio": "0709",
        "nbs": "123456789",
        "discriminacao": "Serviço de desenvolvimento de software.",
        "codigoMunicipioPrestacaoServicoIBGE": "2611606",
        "codigoMunicipioIncidenciaIBGE": "6660536",
        "informacoesComplementares": "iure",
        "valores": {
            "valor": 1500,
            "baseCalculo": 1500,
            "valorIntermediario": 4.1,
            "descontoCondicionado": 0,
            "descontoIncondicionado": 0,
            "issRetido": "NAO",
            "aliquotaIss": 5,
            "cstPisCofins": "01",
            "baseCalculoPisCofins": 1500,
            "valorPis": 4.5,
            "valorCofins": 18,
            "aliquotaPis": 0.65,
            "aliquotaCofins": 3,
            "tpRetPisCofins": "animi",
            "valorInss": 0,
            "valorIr": 0,
            "valorCsll": 0
        }
    },
    "ibscbs": {
        "cst": "00",
        "cClassTrib": "1234567",
        "cIndOp": "1",
        "finNFSe": "1",
        "indDest": "1",
        "indFinal": "1"
    },
    "tributacaoAproximada": {
        "aliquotaSimplesNacional": 4.6691,
        "federal": {
            "valor": 10138852.6535,
            "percentual": 2.2033443
        },
        "estadual": {
            "valor": 5089.870609,
            "percentual": 11043434.570587615
        },
        "municipal": {
            "valor": 11264878.0162741,
            "percentual": 3515109.693682163
        }
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/nfse/gerar'
payload = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "prestador": {
        "incentivadorCultural": "NAO",
        "incentivoFiscal": "NAO",
        "regimeTributario": "SIMPLES",
        "regimeTributarioEspecial": 3526.27,
        "regimeApuracaoTributarioSimplesNacional": "FEDERAL_E_MUNICIPAL_FORA_SN",
        "naturezaTributacao": 322644846.29
    },
    "rps": {
        "numero": 123456,
        "serie": 1
    },
    "dataEmissao": "2026-05-27T10:30:00-03:00",
    "dataCompetencia": "2026-05-27",
    "tomador": {
        "nome": "Cliente Example LTDA",
        "cpfCnpj": "12345678000199",
        "email": "[email protected]",
        "telefone": "81999999999",
        "endereco": {
            "codigoMunicipioIBGE": "2611606",
            "logradouro": "Rua das Flores",
            "numero": "123",
            "complemento": "Sala 101",
            "bairro": "Centro",
            "cep": "50010000"
        }
    },
    "intermediario": {
        "nome": "Intermediário Example LTDA",
        "cpfCnpj": "12345678000199",
        "im": "123456",
        "email": "[email protected]",
        "telefone": "81999999999",
        "endereco": {
            "codigoMunicipioIBGE": "2611606",
            "logradouro": "Rua das Flores",
            "numero": "123",
            "complemento": "Sala 101",
            "bairro": "Centro",
            "cep": "50010000"
        }
    },
    "obra": {
        "codigo": "OBR-001",
        "art": "123456789",
        "endereco": {
            "cep": "50010000",
            "logradouro": "Rua da Obra",
            "numero": "100",
            "bairro": "Centro"
        }
    },
    "servico": {
        "codigoServico": "7.09",
        "codigoTributacaoMunicipio": "0709",
        "nbs": "123456789",
        "discriminacao": "Serviço de desenvolvimento de software.",
        "codigoMunicipioPrestacaoServicoIBGE": "2611606",
        "codigoMunicipioIncidenciaIBGE": "6660536",
        "informacoesComplementares": "iure",
        "valores": {
            "valor": 1500,
            "baseCalculo": 1500,
            "valorIntermediario": 4.1,
            "descontoCondicionado": 0,
            "descontoIncondicionado": 0,
            "issRetido": "NAO",
            "aliquotaIss": 5,
            "cstPisCofins": "01",
            "baseCalculoPisCofins": 1500,
            "valorPis": 4.5,
            "valorCofins": 18,
            "aliquotaPis": 0.65,
            "aliquotaCofins": 3,
            "tpRetPisCofins": "animi",
            "valorInss": 0,
            "valorIr": 0,
            "valorCsll": 0
        }
    },
    "ibscbs": {
        "cst": "00",
        "cClassTrib": "1234567",
        "cIndOp": "1",
        "finNFSe": "1",
        "indDest": "1",
        "indFinal": "1"
    },
    "tributacaoAproximada": {
        "aliquotaSimplesNacional": 4.6691,
        "federal": {
            "valor": 10138852.6535,
            "percentual": 2.2033443
        },
        "estadual": {
            "valor": 5089.870609,
            "percentual": 11043434.570587615
        },
        "municipal": {
            "valor": 11264878.0162741,
            "percentual": 3515109.693682163
        }
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Company-uuid': '{YOUR_COMPANY_UUID}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/nfse/gerar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Company-uuid: {YOUR_COMPANY_UUID}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"callback\": \"https:\\/\\/example.com\\/callback\",
    \"ambiente\": \"developer\",
    \"prestador\": {
        \"incentivadorCultural\": \"NAO\",
        \"incentivoFiscal\": \"NAO\",
        \"regimeTributario\": \"SIMPLES\",
        \"regimeTributarioEspecial\": 3526.27,
        \"regimeApuracaoTributarioSimplesNacional\": \"FEDERAL_E_MUNICIPAL_FORA_SN\",
        \"naturezaTributacao\": 322644846.29
    },
    \"rps\": {
        \"numero\": 123456,
        \"serie\": 1
    },
    \"dataEmissao\": \"2026-05-27T10:30:00-03:00\",
    \"dataCompetencia\": \"2026-05-27\",
    \"tomador\": {
        \"nome\": \"Cliente Example LTDA\",
        \"cpfCnpj\": \"12345678000199\",
        \"email\": \"[email protected]\",
        \"telefone\": \"81999999999\",
        \"endereco\": {
            \"codigoMunicipioIBGE\": \"2611606\",
            \"logradouro\": \"Rua das Flores\",
            \"numero\": \"123\",
            \"complemento\": \"Sala 101\",
            \"bairro\": \"Centro\",
            \"cep\": \"50010000\"
        }
    },
    \"intermediario\": {
        \"nome\": \"Intermediário Example LTDA\",
        \"cpfCnpj\": \"12345678000199\",
        \"im\": \"123456\",
        \"email\": \"[email protected]\",
        \"telefone\": \"81999999999\",
        \"endereco\": {
            \"codigoMunicipioIBGE\": \"2611606\",
            \"logradouro\": \"Rua das Flores\",
            \"numero\": \"123\",
            \"complemento\": \"Sala 101\",
            \"bairro\": \"Centro\",
            \"cep\": \"50010000\"
        }
    },
    \"obra\": {
        \"codigo\": \"OBR-001\",
        \"art\": \"123456789\",
        \"endereco\": {
            \"cep\": \"50010000\",
            \"logradouro\": \"Rua da Obra\",
            \"numero\": \"100\",
            \"bairro\": \"Centro\"
        }
    },
    \"servico\": {
        \"codigoServico\": \"7.09\",
        \"codigoTributacaoMunicipio\": \"0709\",
        \"nbs\": \"123456789\",
        \"discriminacao\": \"Serviço de desenvolvimento de software.\",
        \"codigoMunicipioPrestacaoServicoIBGE\": \"2611606\",
        \"codigoMunicipioIncidenciaIBGE\": \"6660536\",
        \"informacoesComplementares\": \"iure\",
        \"valores\": {
            \"valor\": 1500,
            \"baseCalculo\": 1500,
            \"valorIntermediario\": 4.1,
            \"descontoCondicionado\": 0,
            \"descontoIncondicionado\": 0,
            \"issRetido\": \"NAO\",
            \"aliquotaIss\": 5,
            \"cstPisCofins\": \"01\",
            \"baseCalculoPisCofins\": 1500,
            \"valorPis\": 4.5,
            \"valorCofins\": 18,
            \"aliquotaPis\": 0.65,
            \"aliquotaCofins\": 3,
            \"tpRetPisCofins\": \"animi\",
            \"valorInss\": 0,
            \"valorIr\": 0,
            \"valorCsll\": 0
        }
    },
    \"ibscbs\": {
        \"cst\": \"00\",
        \"cClassTrib\": \"1234567\",
        \"cIndOp\": \"1\",
        \"finNFSe\": \"1\",
        \"indDest\": \"1\",
        \"indFinal\": \"1\"
    },
    \"tributacaoAproximada\": {
        \"aliquotaSimplesNacional\": 4.6691,
        \"federal\": {
            \"valor\": 10138852.6535,
            \"percentual\": 2.2033443
        },
        \"estadual\": {
            \"valor\": 5089.870609,
            \"percentual\": 11043434.570587615
        },
        \"municipal\": {
            \"valor\": 11264878.0162741,
            \"percentual\": 3515109.693682163
        }
    }
}"

Exemplo de resposta (200, NFS-e emitida com sucesso (retornado via callback ou consulta de protocolo).):


{
    "chave": "26116062255792707000170000000000017126057761392151",
    "competencia": null,
    "dataCancelamento": null,
    "dataEmissao": "2026-05-29T20:44:41.000000Z",
    "id": "8f7ba381-cb92-43f9-b9e5-6867d565e912",
    "numero": "171",
    "referencia": null,
    "serie": "1",
    "status": "emitida",
    "tipoReferencia": "",
    "total": "525.00"
}
 

Exemplo de resposta (201, Solicitação criada. O processamento ocorre de forma assíncrona.):


{
    "protocolo": 2950,
    "status": "processando"
}
 

Exemplo de resposta (422, Erro retornado pelo provedor (via callback ou consulta de protocolo).):


[
    {
        "codigo": "E0014",
        "mensagem": "Conjunto de Série, Número, Código do Município Emissor e CNPJ/CPF informado nesta DPS já existe em uma NFS-e gerada a partir de uma DPS enviada anteriormente.",
        "correcao": "Correção não fornecida pelo provedor"
    }
]
 

Requisição      

POST api/v2/nfse/gerar

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Company-uuid        

Exemplo: {YOUR_COMPANY_UUID}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros do corpo

callback   string  optional    

[Opcional] URL de callback para receber o resultado do processamento. Exemplo: https://example.com/callback

ambiente   string     

[Obrigatório] Ambiente de emissão. Valores aceitos: production, developer ou sandbox. Exemplo: developer

prestador   object  optional    
incentivadorCultural   string  optional    

Exemplo: NAO

Must be one of:
  • SIM
  • NAO
incentivoFiscal   string  optional    

Exemplo: NAO

Must be one of:
  • SIM
  • NAO
regimeTributario   string     

Exemplo: SIMPLES

Must be one of:
  • SIMPLES
  • MEI
  • REAL
  • PRESUMIDO
  • SIMPLES_EXCESSO
regimeTributarioEspecial   number  optional    

Exemplo: 3526.27

regimeApuracaoTributarioSimplesNacional   string  optional    

Exemplo: FEDERAL_E_MUNICIPAL_FORA_SN

Must be one of:
  • FEDERAL_E_MUNICIPAL_PELO_SN
  • FEDERAL_PELO_SN_MUNICIPAL_FORA
  • FEDERAL_E_MUNICIPAL_FORA_SN
naturezaTributacao   number  optional    

Exemplo: 322644846.29

rps   object  optional    
numero   integer     

[Obrigatório caso não esteja com gerenciador de RPS Automático habilitado na empresa] Número sequencial do RPS (Recibo Provisório de Serviços). Exemplo: 123456

serie   integer  optional    

[Obrigatório caso não esteja com gerenciador de RPS Automático habilitado na empresa] Série do RPS Exemplo: 1

dataEmissao   string  optional    

[Opcional com preenchimento automático] Data e hora de emissão. Se não informada, o sistema usa a data/hora atual considerando o fuso horário do município da empresa. Exemplo: 2026-05-27T10:30:00-03:00

dataCompetencia   string  optional    

[Opcional com preenchimento automático] Data de competência da emissão. Se não informada, o sistema usa a data atual. Exemplo: 2026-05-27

tomador   object  optional    
nome   string  optional    

[Opcional com preenchimento automático] Nome ou razão social do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o nome do cliente. Exemplo: Cliente Example LTDA

cpfCnpj   string  optional    

[Opcional] CPF ou CNPJ do tomador, sem pontuação. Quando informado, o sistema pode usar esse documento para buscar um tomador cadastrado e preencher os demais dados automaticamente. Exemplo: 12345678000199

im   string  optional    
email   string  optional    

[Opcional com preenchimento automático] E-mail do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o e-mail do cliente. Exemplo: [email protected]

telefone   string  optional    

[Opcional com preenchimento automático] Telefone do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o telefone do cliente. Exemplo: 81999999999

endereco   object  optional    
codigoMunicipioIBGE   string  optional    

[Opcional com preenchimento automático] Código IBGE do município do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o código IBGE da cidade do cliente. Exemplo: 2611606

logradouro   string  optional    

[Opcional com preenchimento automático] Logradouro do endereço do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o endereço cadastrado no cliente. Exemplo: Rua das Flores

numero   string  optional    

[Opcional com preenchimento automático] Número do endereço do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o número cadastrado no cliente. Exemplo: 123

complemento   string  optional    

[Opcional com preenchimento automático] Complemento do endereço do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o complemento cadastrado no cliente. Exemplo: Sala 101

bairro   string  optional    

[Opcional com preenchimento automático] Bairro do endereço do tomador. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o bairro cadastrado no cliente. Exemplo: Centro

cep   string  optional    

[Opcional com preenchimento automático] CEP do tomador, sem pontuação. Se não informado e houver cliente cadastrado com o CPF/CNPJ informado, o sistema usa o CEP cadastrado no cliente. Exemplo: 50010000

intermediario   object  optional    
nome   string  optional    

[Opcional] Nome ou razão social do intermediário do serviço. Exemplo: Intermediário Example LTDA

cpfCnpj   string  optional    

[Opcional] CPF ou CNPJ do intermediário, sem pontuação. Exemplo: 12345678000199

im   string  optional    

[Opcional] Inscrição municipal do intermediário. Exemplo: 123456

email   string  optional    

[Opcional] E-mail do intermediário. Exemplo: [email protected]

telefone   string  optional    

[Opcional] Telefone do intermediário. Exemplo: 81999999999

endereco   object  optional    
codigoMunicipioIBGE   string  optional    

[Opcional] Código IBGE do município do intermediário. Exemplo: 2611606

logradouro   string  optional    

[Opcional] Logradouro do endereço do intermediário. Exemplo: Rua das Flores

numero   string  optional    

[Obrigatório se rps.intermediario.endereco.logradouro for informado] Número do endereço do intermediário. Exemplo: 123

complemento   string  optional    

[Opcional] Complemento do endereço do intermediário. Exemplo: Sala 101

bairro   string  optional    

[Opcional] Bairro do endereço do intermediário. Exemplo: Centro

cep   string  optional    

[Opcional] CEP do intermediário, sem pontuação. Exemplo: 50010000

obra   object  optional    
codigo   string  optional    

[Opcional] Código da obra, quando o serviço estiver relacionado à construção civil. Exemplo: OBR-001

art   string  optional    

[Opcional] ART da obra. Exemplo: 123456789

endereco   object  optional    
cep   string  optional    

[Opcional] CEP da obra, sem pontuação. Exemplo: 50010000

logradouro   string  optional    

[Opcional] Logradouro do endereço da obra. Exemplo: Rua da Obra

numero   string  optional    

[Opcional] Número do endereço da obra. Exemplo: 100

bairro   string  optional    

[Opcional] Bairro do endereço da obra. Exemplo: Centro

servico   object  optional    
codigoServico   string     

[Obrigatório caso a empresa não tenha um serviço padrão cadastrado] Código do serviço prestado. Se não informado e a empresa tiver um serviço padrão cadastrado, o sistema usa o código desse serviço. Exemplo: 7.09

codigoTributacaoMunicipio   string  optional    

[Opcional com preenchimento automático] Código de tributação municipal do serviço. Se não informado, o sistema usa o código de tributação municipal do serviço padrão cadastrado para a empresa. Exemplo: 0709

codigoCnae   string  optional    
nbs   string  optional    

[Opcional com preenchimento automático] Código NBS relacionado ao serviço. Se não informado, o sistema usa o NBS do serviço padrão cadastrado para a empresa, quando houver. Exemplo: 123456789

discriminacao   string     

[Obrigatório] Descrição detalhada do serviço prestado. Exemplo: Serviço de desenvolvimento de software.

codigoMunicipioPrestacaoServicoIBGE   string  optional    

[Opcional com preenchimento automático] Código IBGE do município onde o serviço foi prestado. Se não informado, o sistema usa o código IBGE do município da empresa. Exemplo: 2611606

codigoMunicipioIncidenciaIBGE   string  optional    

Must be 7 digits. Exemplo: 6660536

informacoesComplementares   string  optional    

Exemplo: iure

valores   object  optional    
valor   number     

[Obrigatório] Valor total do serviço. Exemplo: 1500

baseCalculo   number  optional    

[Opcional] Base de cálculo do ISS. Exemplo: 1500

valorIntermediario   number  optional    

Exemplo: 4.1

descontoCondicionado   number  optional    

[Opcional] Valor do desconto condicionado. Exemplo: 0

descontoIncondicionado   number  optional    

[Opcional] Valor do desconto incondicionado. Exemplo: 0

issRetido   string  optional    

[Opcional com preenchimento automático] Indica se o ISS é retido. Se não informado, o sistema usa NAO como padrão. Valores aceitos: SIM ou NAO. Exemplo: NAO

aliquotaIss   number  optional    

[Opcional com preenchimento automático] Alíquota do ISS. Se não informada, o sistema usa a alíquota configurada na empresa. Exemplo: 5

cstPisCofins   string  optional    

[Opcional] Código de Situação Tributária para PIS/COFINS (utilizado para regime não cumulativo). Exemplo: 01

baseCalculoPisCofins   number  optional    

[Opcional] Base de cálculo para PIS/COFINS. Exemplo: 1500

valorPis   number  optional    

[Opcional] Valor do PIS, usado apenas quando aliquotaPis não for informado (ver aliquotaPis). Exemplo: 4.5

valorCofins   number  optional    

[Opcional] Valor da COFINS, usado apenas quando aliquotaCofins não for informado (ver aliquotaCofins). Exemplo: 18

aliquotaPis   number  optional    

[Opcional] Alíquota (%) do PIS. Use ou aliquotaPis ou valorPis, não precisa dos dois — se aliquotaPis for informado, ele é sempre usado primeiro e o valor do PIS é calculado a partir dele; valorPis só é considerado quando aliquotaPis não é informado. Exemplo: 0.65

aliquotaCofins   number  optional    

[Opcional] Alíquota (%) da COFINS. Use ou aliquotaCofins ou valorCofins, não precisa dos dois — se aliquotaCofins for informado, ele é sempre usado primeiro e o valor da COFINS é calculado a partir dele; valorCofins só é considerado quando aliquotaCofins não é informado. Exemplo: 3

tpRetPisCofins   string  optional    

[Opcional] Tipo de retenção para PIS/COFINS Exemplo: animi

valorInss   number  optional    

[Opcional] Valor do INSS. Exemplo: 0

valorIr   number  optional    

[Opcional] Valor do IR. Exemplo: 0

valorCsll   number  optional    

[Opcional] Valor da CSLL. Exemplo: 0

ibscbs   object  optional    
cst   string  optional    

[Opcional] Código de Situação Tributária para IBSC/IBCS. Exemplo: 00

cClassTrib   string  optional    

[Obrigatório se ibscbs.cst for informado] Código de classificação tributária para IBSC/IBCS. Exemplo: 1234567

cIndOp   string  optional    

[Obrigatório se ibscbs.cst for informado] Código do indicador de operação para IBSC/IBCS. Exemplo: 1

finNFSe   string  optional    

[Opcional] Finalidade da emissão para IBSC/IBCS. Exemplo: 1

indDest   string  optional    

[Opcional] Indicador do destinatário para IBSC/IBCS. Valores aceitos: 1 (contribuinte do ICMS), 2 (contribuinte isento de inscrição no cadastro de contribuintes do ICMS), 3 (não contribuinte). Exemplo: 1

indFinal   string  optional    

[Opcional] Indicador de operação final para IBSC/IBCS. Valores aceitos: 1 (operações destinadas a consumidor final), 2 (operações não destinadas a consumidor final). Exemplo: 1

tributacaoAproximada   object  optional    
aliquotaSimplesNacional   number  optional    

Exemplo: 4.6691

federal   object  optional    
valor   number  optional    

Exemplo: 10138852.6535

percentual   number  optional    

Exemplo: 2.2033443

estadual   object  optional    
valor   number  optional    

Exemplo: 5089.870609

percentual   number  optional    

Exemplo: 11043434.570588

municipal   object  optional    
valor   number  optional    

Exemplo: 11264878.016274

percentual   number  optional    

Exemplo: 3515109.6936822

Cancelar NFS-e

requer autenticação

Cria uma solicitação de cancelamento de uma NFS-e emitida.

O cancelamento é processado de forma assíncrona. O resultado pode ser consultado posteriormente pelo protocolo retornado ou enviado para a URL de callback informada.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/nfse/8f7ba381-cb92-43f9-b9e5-6867d565e912/cancelar';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Company-uuid' => '{YOUR_COMPANY_UUID}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'callback' => 'https://example.com/callback',
            'ambiente' => 'developer',
            'codigoCancelamento' => 'ERRO_EMISSAO',
            'motivoCancelamento' => 'Cancelamento devido a erro na emissão.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/nfse/8f7ba381-cb92-43f9-b9e5-6867d565e912/cancelar"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Company-uuid": "{YOUR_COMPANY_UUID}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "codigoCancelamento": "ERRO_EMISSAO",
    "motivoCancelamento": "Cancelamento devido a erro na emissão."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/nfse/8f7ba381-cb92-43f9-b9e5-6867d565e912/cancelar'
payload = {
    "callback": "https:\/\/example.com\/callback",
    "ambiente": "developer",
    "codigoCancelamento": "ERRO_EMISSAO",
    "motivoCancelamento": "Cancelamento devido a erro na emissão."
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Company-uuid': '{YOUR_COMPANY_UUID}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/nfse/8f7ba381-cb92-43f9-b9e5-6867d565e912/cancelar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Company-uuid: {YOUR_COMPANY_UUID}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"callback\": \"https:\\/\\/example.com\\/callback\",
    \"ambiente\": \"developer\",
    \"codigoCancelamento\": \"ERRO_EMISSAO\",
    \"motivoCancelamento\": \"Cancelamento devido a erro na emissão.\"
}"

Exemplo de resposta (200, NFS-e cancelada com sucesso (retornado via callback ou consulta de protocolo).):


{
    "chave": "26116062255792707000170000000000017126057761392151",
    "competencia": null,
    "dataCancelamento": "2026-05-29 17:54:35",
    "dataEmissao": "2026-05-29T20:44:41.000000Z",
    "id": "8f7ba381-cb92-43f9-b9e5-6867d565e912",
    "numero": "171",
    "referencia": null,
    "serie": "1",
    "status": "cancelada",
    "tipoReferencia": "",
    "total": "525.00"
}
 

Exemplo de resposta (201, Solicitação criada. O processamento ocorre de forma assíncrona.):


{
    "protocolo": 2950,
    "status": "processando"
}
 

Exemplo de resposta (422, Erro retornado pelo provedor (via callback ou consulta de protocolo).):


[
    {
        "codigo": "E0014",
        "mensagem": "Cancelamento não permitido pelo provedor.",
        "correcao": "Correção não fornecida pelo provedor"
    }
]
 

Requisição      

POST api/v2/nfse/{uuid}/cancelar

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Company-uuid        

Exemplo: {YOUR_COMPANY_UUID}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da NFS-e a ser cancelada. Exemplo: 8f7ba381-cb92-43f9-b9e5-6867d565e912

Parâmetros do corpo

callback   string  optional    

[Opcional] URL de callback para receber o resultado do processamento. Exemplo: https://example.com/callback

ambiente   string     

[Obrigatório] Ambiente de emissão. Valores aceitos: production, developer ou sandbox. Exemplo: developer

codigoCancelamento   string     

[Obrigatório] Código do motivo de cancelamento. Valores aceitos: ERRO_EMISSAO, SERVICO_NAO_PRESTADO, DUPLICIDADE ou OUTROS. Exemplo: ERRO_EMISSAO

motivoCancelamento   string  optional    

[Obrigatório se codigoCancelamento for OUTROS] Descrição detalhada do motivo de cancelamento. Exemplo: Cancelamento devido a erro na emissão.

Protocolos

APIs para consulta de protocolos.

Consulta

requer autenticação

Consulta o status de processamento de uma solicitação a partir do número do protocolo.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/consulta/protocolo/25';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/consulta/protocolo/25"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/consulta/protocolo/25'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
curl --request GET \
    --get "https://devnota.com.br/api/v2/consulta/protocolo/25" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200, Processando):


{
    "protocolo": 25,
    "status": "processando"
}
 

Exemplo de resposta (200, NFS-e emitida):


{
    "protocolo": 25,
    "status": "processado",
    "response": {
        "id": "1140d27f-7854-4715-aaf1-9590f95398c3",
        "dataEmissao": "2026-05-29T21:51:06.000000Z",
        "competencia": "2026-05-29T03:00:00.000000Z",
        "numero": "172",
        "serie": "1",
        "chave": "26116062255792707000170000000000017226054405240337",
        "total": "525.00",
        "referencia": 10,
        "tipoReferencia": "rps",
        "chaveDps": null,
        "status": "emitida",
        "dataCancelamento": null
    }
}
 

Exemplo de resposta (200, NFS-e cancelada):


{
    "protocolo": 25,
    "status": "processado",
    "response": {
        "id": "1140d27f-7854-4715-aaf1-9590f95398c3",
        "dataEmissao": "2026-05-29T21:51:06.000000Z",
        "competencia": "2026-05-29T03:00:00.000000Z",
        "numero": "172",
        "serie": "1",
        "chave": "26116062255792707000170000000000017226054405240337",
        "total": "525.00",
        "referencia": "311",
        "tipoReferencia": "DPS",
        "chaveDps": "261160625579270700017000001000000000000311",
        "status": "cancelada",
        "dataCancelamento": "2026-05-29 18:58:11"
    }
}
 

Exemplo de resposta (200, Processado com erro):


{
    "protocolo": 22,
    "status": "processado_com_erro",
    "response": [
        {
            "codigo": "E0014",
            "mensagem": "Conjunto de Série, Número, Código do Município Emissor e CNPJ/CPF informado nesta DPS já existe em uma NFS-e gerada a partir de uma DPS enviada anteriormente.",
            "correcao": "Correção não fornecida pelo provedor"
        }
    ]
}
 

Exemplo de resposta (200, Erro interno):


{
    "protocolo": 13,
    "status": "erro",
    "response": [
        {
            "codigo": 0,
            "mensagem": "Chave da NFS-e não encontrada.",
            "correcao": "Chave da NFS-e não encontrada.",
            "stack": "..."
        }
    ]
}
 

Exemplo de resposta (404):


{
    "protocolo": 25,
    "status": "erro",
    "response": {
        "codigo": "0",
        "mensagem": "Número de protocolo inexistente nesta empresa.",
        "correcao": "Verifique o número do protocolo e tente novamente."
    }
}
 

Requisição      

GET api/v2/consulta/protocolo/{protocolo}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

protocolo   integer     

Número do protocolo retornado na solicitação de emissão. Exemplo: 25

Reprocessar

requer autenticação

Reprocessar uma solicitação a partir do número do protocolo. Somente protocolos com status "processado_com_erro" ou "erro" podem ser reprocessados. Essa função ainda não foi liberada para uso, mas em breve será possível reprocessar protocolos com falha de processamento do tipo retryable = true.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/consulta/reprocessar/25';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/consulta/reprocessar/25"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/consulta/reprocessar/25'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/consulta/reprocessar/25" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200, Processando):


{
    "protocolo": 25,
    "status": "processando"
}
 

Exemplo de resposta (200, Erro interno):


{
    "protocolo": 13,
    "status": "erro",
    "response": [
        {
            "codigo": 0,
            "mensagem": "Chave da NFS-e não encontrada.",
            "correcao": "Chave da NFS-e não encontrada.",
            "stack": "..."
        }
    ]
}
 

Requisição      

POST api/v2/consulta/reprocessar/{protocolo}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

protocolo   integer     

Número do protocolo retornado na solicitação de emissão. Exemplo: 25

Serviços da empresa

APIs para gerenciamento dos serviços vinculados à empresa. O serviço padrão é usado automaticamente na emissão de notas quando nenhum código de serviço é informado.

Listar serviços

requer autenticação

Retorna todos os serviços cadastrados para a empresa identificada pelo UUID.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
curl --request GET \
    --get "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200):


[
    {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "title": "Desenvolvimento de software",
        "service_code": "7.09",
        "mun_trib_code": "0709",
        "nbs": null,
        "is_default": true
    }
]
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Requisição      

GET api/v2/empresas/{uuid}/servicos

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Cadastrar serviço

requer autenticação

Cadastra um novo serviço para a empresa. O primeiro serviço cadastrado é automaticamente definido como padrão.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Desenvolvimento de software',
            'service_code' => '7.09',
            'mun_trib_code' => '0709',
            'nbs' => '123456789',
            'is_default' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "Desenvolvimento de software",
    "service_code": "7.09",
    "mun_trib_code": "0709",
    "nbs": "123456789",
    "is_default": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos'
payload = {
    "title": "Desenvolvimento de software",
    "service_code": "7.09",
    "mun_trib_code": "0709",
    "nbs": "123456789",
    "is_default": false
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Desenvolvimento de software\",
    \"service_code\": \"7.09\",
    \"mun_trib_code\": \"0709\",
    \"nbs\": \"123456789\",
    \"is_default\": false
}"

Exemplo de resposta (201):


{
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "title": "Desenvolvimento de software",
    "service_code": "7.09",
    "mun_trib_code": "0709",
    "nbs": null,
    "is_default": true
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Exemplo de resposta (422):


{
    "message": "O título do serviço é obrigatório.",
    "errors": {
        "title": [
            "O título do serviço é obrigatório."
        ]
    }
}
 

Requisição      

POST api/v2/empresas/{uuid}/servicos

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Parâmetros do corpo

title   string     

Nome ou descrição curta do serviço. Exemplo: Desenvolvimento de software

service_code   string     

Código do serviço, único por empresa. Exemplo: 7.09

mun_trib_code   string  optional    

Código de tributação municipal. Exemplo: 0709

nbs   string  optional    

Código NBS do serviço. Exemplo: 123456789

is_default   boolean  optional    

Define este serviço como padrão da empresa. Exemplo: false

Atualizar serviço

requer autenticação

Atualiza os dados de um serviço cadastrado para a empresa.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Desenvolvimento de software',
            'service_code' => '7.09',
            'mun_trib_code' => '0709',
            'nbs' => '123456789',
            'is_default' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "Desenvolvimento de software",
    "service_code": "7.09",
    "mun_trib_code": "0709",
    "nbs": "123456789",
    "is_default": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011'
payload = {
    "title": "Desenvolvimento de software",
    "service_code": "7.09",
    "mun_trib_code": "0709",
    "nbs": "123456789",
    "is_default": false
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
curl --request PUT \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Desenvolvimento de software\",
    \"service_code\": \"7.09\",
    \"mun_trib_code\": \"0709\",
    \"nbs\": \"123456789\",
    \"is_default\": false
}"

Exemplo de resposta (200):


{
    "uuid": "661e8400-e29b-41d4-a716-446655440011",
    "title": "Desenvolvimento de software",
    "service_code": "7.09",
    "mun_trib_code": "0709",
    "nbs": null,
    "is_default": false
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Exemplo de resposta (422):


{
    "message": "O título do serviço é obrigatório.",
    "errors": {
        "title": [
            "O título do serviço é obrigatório."
        ]
    }
}
 

Requisição      

PUT api/v2/empresas/{uuid}/servicos/{company_service}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

company_service   string     

UUID do serviço. Exemplo: 661e8400-e29b-41d4-a716-446655440011

Parâmetros do corpo

title   string     

Nome ou descrição curta do serviço. Exemplo: Desenvolvimento de software

service_code   string     

Código do serviço, único por empresa. Exemplo: 7.09

mun_trib_code   string  optional    

Código de tributação municipal. Exemplo: 0709

nbs   string  optional    

Código NBS do serviço. Exemplo: 123456789

is_default   boolean  optional    

Define este serviço como padrão da empresa. Exemplo: false

Remover serviço

requer autenticação

Remove um serviço vinculado à empresa. Se o serviço removido era o padrão, o próximo serviço disponível é promovido automaticamente.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
curl --request DELETE \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200):


{
    "message": "Serviço removido com sucesso."
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Requisição      

DELETE api/v2/empresas/{uuid}/servicos/{company_service}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

company_service   string     

UUID do serviço. Exemplo: 661e8400-e29b-41d4-a716-446655440011

Definir serviço padrão

requer autenticação

Define o serviço como padrão da empresa. O serviço padrão é usado automaticamente na emissão de notas quando nenhum código de serviço é informado na requisição. O serviço anteriormente padrão é desmarcado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011/padrao';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011/padrao"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011/padrao'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers)
response.json()
curl --request PUT \
    "https://devnota.com.br/api/v2/empresas/550e8400-e29b-41d4-a716-446655440000/servicos/661e8400-e29b-41d4-a716-446655440011/padrao" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200):


{
    "message": "Serviço definido como padrão com sucesso."
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Requisição      

PUT api/v2/empresas/{uuid}/servicos/{company_service}/padrao

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

uuid   string     

UUID da empresa. Exemplo: 550e8400-e29b-41d4-a716-446655440000

company_service   string     

UUID do serviço. Exemplo: 661e8400-e29b-41d4-a716-446655440011

Tomadores

APIs para gerenciamento dos tomadores de serviço (clientes) vinculados à conta. Os dados do tomador podem ser usados automaticamente na emissão de NFS-e quando o CPF/CNPJ informado na nota corresponder a um tomador cadastrado.

Listar tomadores

requer autenticação

Retorna todos os tomadores cadastrados pelo usuário autenticado, ordenados por nome.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/tomadores';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/tomadores"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/tomadores'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
curl --request GET \
    --get "https://devnota.com.br/api/v2/tomadores" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (200):


[
    {
        "uuid": "550e8400-e29b-41d4-a716-446655440000",
        "name": "Cliente Exemplo LTDA",
        "document": "12345678000199",
        "email": "[email protected]"
    }
]
 

Requisição      

GET api/v2/tomadores

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Cadastrar tomador

requer autenticação

Cadastra um novo tomador de serviço vinculado ao usuário autenticado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/tomadores';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Cliente Exemplo LTDA',
            'document' => '12345678000199',
            'cep' => '50010000',
            'address' => 'Rua das Flores',
            'number' => '123',
            'neighborhood' => 'Centro',
            'ibge_code' => '2611606',
            'complement' => 'Sala 101',
            'contact' => '81999999999',
            'email' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/tomadores"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Cliente Exemplo LTDA",
    "document": "12345678000199",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "ibge_code": "2611606",
    "complement": "Sala 101",
    "contact": "81999999999",
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/tomadores'
payload = {
    "name": "Cliente Exemplo LTDA",
    "document": "12345678000199",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "ibge_code": "2611606",
    "complement": "Sala 101",
    "contact": "81999999999",
    "email": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
curl --request POST \
    "https://devnota.com.br/api/v2/tomadores" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Cliente Exemplo LTDA\",
    \"document\": \"12345678000199\",
    \"cep\": \"50010000\",
    \"address\": \"Rua das Flores\",
    \"number\": \"123\",
    \"neighborhood\": \"Centro\",
    \"ibge_code\": \"2611606\",
    \"complement\": \"Sala 101\",
    \"contact\": \"81999999999\",
    \"email\": \"[email protected]\"
}"

Exemplo de resposta (201):


{
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Cliente Exemplo LTDA",
    "document": "12345678000199",
    "email": "[email protected]"
}
 

Exemplo de resposta (422):


{
    "message": "O campo name é obrigatório.",
    "errors": {
        "name": [
            "O campo name é obrigatório."
        ]
    }
}
 

Requisição      

POST api/v2/tomadores

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros do corpo

name   string     

Nome ou razão social do tomador. Exemplo: Cliente Exemplo LTDA

document   string     

CPF (11 dígitos) ou CNPJ (14 dígitos) sem pontuação. Exemplo: 12345678000199

cep   string  optional    

CEP do tomador, sem pontuação. Exemplo: 50010000

address   string  optional    

Logradouro do endereço. Exemplo: Rua das Flores

number   string  optional    

Número do endereço. Exemplo: 123

neighborhood   string  optional    

Bairro. Exemplo: Centro

ibge_code   string  optional    

Código IBGE do município do tomador. Exemplo: 2611606

complement   string  optional    

Complemento do endereço. Exemplo: Sala 101

contact   string  optional    

Telefone do tomador. Exemplo: 81999999999

email   string  optional    

E-mail do tomador. Exemplo: [email protected]

Atualizar tomador

requer autenticação

Atualiza os dados de um tomador cadastrado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/tomadores/6f58f0bd-54c7-3f3d-a5ef-de6c2cb20e1b';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Cliente Exemplo LTDA',
            'document' => '12345678000199',
            'cep' => '50010000',
            'address' => 'Rua das Flores',
            'number' => '123',
            'neighborhood' => 'Centro',
            'ibge_code' => '2611606',
            'complement' => 'Sala 101',
            'contact' => '81999999999',
            'email' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/tomadores/6f58f0bd-54c7-3f3d-a5ef-de6c2cb20e1b"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Cliente Exemplo LTDA",
    "document": "12345678000199",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "ibge_code": "2611606",
    "complement": "Sala 101",
    "contact": "81999999999",
    "email": "[email protected]"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/tomadores/6f58f0bd-54c7-3f3d-a5ef-de6c2cb20e1b'
payload = {
    "name": "Cliente Exemplo LTDA",
    "document": "12345678000199",
    "cep": "50010000",
    "address": "Rua das Flores",
    "number": "123",
    "neighborhood": "Centro",
    "ibge_code": "2611606",
    "complement": "Sala 101",
    "contact": "81999999999",
    "email": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
curl --request PUT \
    "https://devnota.com.br/api/v2/tomadores/6f58f0bd-54c7-3f3d-a5ef-de6c2cb20e1b" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Cliente Exemplo LTDA\",
    \"document\": \"12345678000199\",
    \"cep\": \"50010000\",
    \"address\": \"Rua das Flores\",
    \"number\": \"123\",
    \"neighborhood\": \"Centro\",
    \"ibge_code\": \"2611606\",
    \"complement\": \"Sala 101\",
    \"contact\": \"81999999999\",
    \"email\": \"[email protected]\"
}"

Exemplo de resposta (200):


{
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Cliente Exemplo LTDA",
    "document": "12345678000199",
    "email": "[email protected]"
}
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Requisição      

PUT api/v2/tomadores/{customer_uuid}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

customer_uuid   string     

Exemplo: 6f58f0bd-54c7-3f3d-a5ef-de6c2cb20e1b

customer   string     

UUID do tomador. Exemplo: 550e8400-e29b-41d4-a716-446655440000

Parâmetros do corpo

name   string     

Nome ou razão social do tomador. Exemplo: Cliente Exemplo LTDA

document   string  optional    

CPF (11 dígitos) ou CNPJ (14 dígitos) sem pontuação. Exemplo: 12345678000199

cep   string  optional    

CEP do tomador, sem pontuação. Exemplo: 50010000

address   string  optional    

Logradouro do endereço. Exemplo: Rua das Flores

number   string  optional    

Número do endereço. Exemplo: 123

neighborhood   string  optional    

Bairro. Exemplo: Centro

ibge_code   string  optional    

Código IBGE do município do tomador. Exemplo: 2611606

complement   string  optional    

Complemento do endereço. Exemplo: Sala 101

contact   string  optional    

Telefone do tomador. Exemplo: 81999999999

email   string  optional    

E-mail do tomador. Exemplo: [email protected]

Remover tomador

requer autenticação

Remove permanentemente um tomador cadastrado.

Exemplo de requisição:
$client = new \GuzzleHttp\Client();
$url = 'https://devnota.com.br/api/v2/tomadores/5d71152e-d131-3d9e-bfb3-ce68cac86bb8';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://devnota.com.br/api/v2/tomadores/5d71152e-d131-3d9e-bfb3-ce68cac86bb8"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://devnota.com.br/api/v2/tomadores/5d71152e-d131-3d9e-bfb3-ce68cac86bb8'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
curl --request DELETE \
    "https://devnota.com.br/api/v2/tomadores/5d71152e-d131-3d9e-bfb3-ce68cac86bb8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"

Exemplo de resposta (204):

Resposta vazia
 

Exemplo de resposta (404):


{
    "message": "Not found."
}
 

Requisição      

DELETE api/v2/tomadores/{customer_uuid}

Headers

Authorization        

Exemplo: Bearer {YOUR_AUTH_KEY}

Content-Type        

Exemplo: application/json

Accept        

Exemplo: application/json

Parâmetros da URL

customer_uuid   string     

Exemplo: 5d71152e-d131-3d9e-bfb3-ce68cac86bb8

customer   string     

UUID do tomador. Exemplo: 550e8400-e29b-41d4-a716-446655440000