Org API · Multi-CNPJ (Homologação Grátis no Plano Free)

Gestão via API

Gerencie projetos, API keys, certificados A1 e configurações white-label da sua organização programaticamente. Ideal para Software Houses, ERPs e BPOs Contábeis que fazem onboarding autônomo de sub-clientes.

Consulte também os Termos de Uso da Org API / White-Label, LGPD e Acordo de Nível de Serviço (SLA) →

Limites por Plano (Homologação vs. Produção)

A Organization API pode ser testada gratuitamente em Homologação (`ambiente: 2`) desde o plano Free. Ao promover ou criar projetos em Produção (`ambiente: 1`) além do limite do seu plano atual, a API retorna 402 Payment Required (PAYWALL_PRODUCTION_PROJECT_REQUIRED).

PlanoProjetos em ProduçãoProjetos em HomologaçãoOrg Tokens AtivosRate LimitWhite-Label
FreeAté 1 CNPJAté 5 CNPJsHomologação (até 3 tokens)30 req/min—
DeveloperAté 3 CNPJsAté 10 CNPJsHomologação (até 3 tokens)30 req/min—
SaaS ProIlimitadoIlimitadoCompleta (até 20 tokens)120 req/minIncluso
EnterpriseIlimitadoIlimitadoCompleta (até 20 tokens)300 req/minIncluso

Autenticação

Todos os endpoints desta seção exigem um Organization Token (prefixo ntaas_org_) no header x-api-key. Tokens de projeto (ntaas_) não são aceitos nestas rotas.

curl -H "x-api-key: ntaas_org_XXXXXXXXXXXXXXXXXXXXXXXX" \
  https://platform.notaas.com.br/api/v1/org/projects
ScopePermissão
projects:readListar e visualizar projetos
projects:writeCriar, atualizar e excluir projetos
api_keys:manageCriar, listar e revogar API keys
settings:readLer configurações da organização
settings:writeConfigurar domínio white-label
certificates:writeUpload de certificado A1

Projetos

POST/org/projects🔑 x-api-key

Cria um novo projeto (empresa fiscal PJ ou Pessoa Física — Prestador PF de serviços na NFS-e Nacional ou Produtor Rural PF na NF-e) na organização. Verifica limite do plano e duplicidade de CNPJ/CPF.

Body (JSON)

CampoTipoReq?Descrição
namestringsimNome do projeto (ex: "Filial SP", "Consultório Dr. João" ou "Fazenda Boa Vista")
cnpj (ou cpf / documento)stringsimCNPJ com 14 posições (Pessoa Jurídica — numérico tradicional \d{14} ou alfanumérico [0-9A-Z]{12}\d{2} conforme IN RFB nº 2.229/2024, com ou sem máscara SS.SSS.SSS/SSSS-DD) ou CPF com 11 dígitos (Pessoa Física — Prestador de serviços na NFS-e Nacional ou Produtor Rural na NF-e). Validado com dígitos verificadores (Módulo 11 ASCII - 48 para CNPJ). Na resposta da API e no banco, o documento é persistido e retornado no formato canônico limpo em maiúsculas (14 posições para CNPJ ou 11 dígitos para CPF) na propriedade cnpj.
razaoSocialstringsimRazão social da empresa ou nome completo da Pessoa Física (Prestador de serviços ou Produtor Rural)
caepfstring | nullnãoCadastro de Atividade Econômica da Pessoa Física (TSCAEPF — 14 dígitos numéricos ou máscara XXX.XXX.XXX/XXX-XX). Opcional e exclusivo para projetos com CPF (11 dígitos); rejeitado com HTTP 400 em projetos CNPJ. Pré-preenche <CAEPF> no grupo <prest> da DPS Nacional (SNNFSE) e é exibido no DANFSe.
inscricaoMunicipalstringnãoInscrição municipal
inscricaoEstadualstringnãoInscrição estadual. Para emissão de NF-e por Produtor Rural Pessoa Física (CPF), o validador pré-emissão exige IE numérica ativa de 2 a 14 dígitos ("ISENTO" não é aceito).
regimeTributario"1"|"2"|"3"|"3e"não"1" = Não Optante (Regime Normal / CRT 3), "2" = MEI, "3" = SN ME/EPP, "3e" = SN Excesso de Sublimite. Para projetos CPF (Prestador PF de serviços ou Produtor Rural PF), deve ser obrigatoriamente "1" (default automático com CRT 3).
codigoMunicipiostringnãoCódigo IBGE 7 dígitos (ex: "4113700"). Validado contra a tabela de municípios.
emailstringnãoE-mail da empresa
telefonestringnãoTelefone da empresa
descriptionstringnãoDescrição do projeto
endereco.logradourostringnãoLogradouro
endereco.numerostringnãoNúmero
endereco.complementostringnãoComplemento
endereco.bairrostringnãoBairro
endereco.cidadestringnãoNome da cidade
endereco.ufstringnãoSigla do estado (ex: "SP")
endereco.cepstringnãoCEP (apenas dígitos)
codigoTributacaostringnãoCódigo de Tributação Nacional (LC 116/2003). Pré-preenche ao emitir NFS-e.
tributacaoIss1|2|3|4nãoTributação ISSQN: 1=Tributável, 2=Fora do campo, 3=Exportação, 4=Não Incidência
serieNfsestringnãoSérie da NFS-e (padrão: "1608", máx 5 dígitos)
aliquotaSimplesnumbernãoAlíquota efetiva DAS (%) para empresas SN ME/EPP
regimeIss1|2|3nãoApuração ISS no SN: 1=ISS no DAS, 2=ISS separado, 3=Ambos separados
codigoServicoSpstringnãoCódigo de serviço da Prefeitura SP (5 dígitos). Obrigatório para município SP.
cnaestringnãoCNAE principal. Obrigatório para GINFES e Brasília/DF.
basicAuthUsuariostringnãoUsuário para municípios com sistema Basic Auth (Centi, HM2)
basicAuthSenhastringnãoSenha Basic Auth (write-only)
ambiente1|2nãoAmbiente: 1=Produção, 2=Homologação (padrão na criação: 2). Respeita os limites de Produção e Homologação do plano.
serieNfenumbernãoSérie padrão NF-e mod. 55. Para CNPJ: 1 a 889 (padrão: 1). Para CPF (Produtor Rural PF): 920 a 969 conforme NT 2018.001 (padrão: 920).
serieNfcenumbernãoSérie NFC-e mod. 65 (1-999)
cscIdstringnãoID do CSC obtido no portal SEFAZ do estado
cscTokenstringnãoToken CSC (write-only — nunca retornado)
cstPisCofinsstring|nullnãoCST PIS/COFINS padrão (2 dígitos). Ex: "01"=Alíquota Básica, "07"=Isenta. Relevante apenas para Não Optante (regime "1"). Ignorado para MEI/SN.
aliquotaPisnumber|nullnãoAlíquota PIS padrão (%). Ex: 0.65. Usado no cálculo automático do bloco <tribFed> no DPS.
aliquotaCofinsnumber|nullnãoAlíquota COFINS padrão (%). Ex: 3.00. Usado no cálculo automático do bloco <tribFed> no DPS.
tipoRetencaoPisCofinsnumber|nullnãoTipo retenção PIS/COFINS: 0=Não Retidos (default), 1=PIS/COFINS Retidos, 3=Todos Retidos.
defaultCstIbscbsstring|nullnãoCST padrão de IBS/CBS (3 dígitos, Reforma Tributária LC 214/2025). Ex: "000" (Tributada integralmente), "200" (Redução de alíquota), "410" (Isenção).
defaultClassificacaoTributariastring|nullnãoCódigo de classificação tributária padrão cClassTrib (6 dígitos). Ex: "000001", "200046".
defaultIndicadorOperacaostring|nullnãoCódigo indicador de operação padrão cIndOp (6 dígitos). Ex: "100301", "020301".
defaultNbsstring|nullnãoCódigo NBS padrão (9 dígitos numéricos). Ex: "114012100".
danfeTemplate"padrao"|"retrato_logo"|"paisagem_logo"nãoModelo de layout do DANFE: "padrao" (default), "retrato_logo" ou "paisagem_logo" (uso de logo customizada requer plano Pro ou superior).
{
  "name": "Filial São Paulo",
  "cnpj": "12345678000195",
  "razaoSocial": "Acme Sistemas Ltda",
  "regimeTributario": "3",
  "codigoMunicipio": "3550308",
  "email": "[email protected]",
  "endereco": {
    "logradouro": "Av Paulista",
    "numero": "1000",
    "bairro": "Bela Vista",
    "cidade": "São Paulo",
    "uf": "SP",
    "cep": "01310100"
  },
  "defaultCstIbscbs": "000",
  "defaultClassificacaoTributaria": "000001",
  "defaultIndicadorOperacao": "100301",
  "defaultNbs": "114012100"
}
// O CNPJ alfanumérico "12.ABC.345/01DE-35" (ou "12abc34501de35") é normalizado
// para 14 caracteres maiúsculos sem pontuação ("12ABC34501DE35") ao persistir.
{
  "id": "a1b2c3d4-...",
  "name": "Matriz Curitiba — CNPJ Alfanumérico",
  "cnpj": "12ABC34501DE35",
  "caepf": null,
  "razaoSocial": "Tech Inovação Alfanumérica S.A.",
  "codigoMunicipio": "4106902",
  "ambiente": 2,
  "regimeTributario": "1",
  "crt": 3,
  "serieNfse": "1",
  "serieNfe": 1,
  "serieNfce": 1,
  "tributacaoIss": 1,
  "cstPisCofins": null,
  "defaultCstIbscbs": null,
  "defaultClassificacaoTributaria": null,
  "defaultIndicadorOperacao": null,
  "defaultNbs": null,
  "danfeTemplate": "padrao",
  "active": true,
  "createdAt": "2026-10-27T14:00:00Z"
}

Erros

CampoTipoReq?Descrição
400Bad RequestnãoCNPJ/CPF inválido, caepf inválido ou informado para projeto CNPJ, ambiente fora de 1|2, regime ou serieNfe incompatível com projeto CPF, campo obrigatório ausente ou código IBGE inexistente
402Payment RequirednãoPAYWALL_PRODUCTION_PROJECT_REQUIRED — limite de projetos em Produção (ambiente=1) do plano atingido. Faça upgrade para Developer ou SaaS Pro.
403ForbiddennãoSANDBOX_PROJECT_LIMIT_REACHED — limite de projetos simultâneos em Homologação (ambiente=2) atingido.
409ConflictnãoCNPJ ou CPF já cadastrado na organização (retorna existingProjectId)
GET/org/projects🔑 x-api-key

Lista todos os projetos da organização com paginação e status de certificado/API key.

Query Params

CampoTipoReq?Descrição
pagenumbernãoPágina (padrão: 1)
limitnumbernãoItens por página (padrão: 20, máx: 100)
activebooleannãoFiltrar por ativos (padrão: true). Use active=false para incluir inativos.
// Response 200
{
  "data": [
    {
      "id": "a1b2c3d4-...",
      "name": "Filial SP",
      "cnpj": "12345678000195",
      "codigoMunicipio": "3550308",
      "active": true,
      "hasCertificate": true,
      "hasApiKey": true,
      "createdAt": "2026-04-21T20:30:00Z"
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 3 }
}
GET/org/projects/{id}🔑 x-api-key

Retorna os dados completos de um projeto (exceto certificado e senha).

// Response 200
{
  "id": "a1b2c3d4-...",
  "name": "Filial SP",
  "cnpj": "12345678000195",
  "caepf": null,
  "razaoSocial": "Acme Sistemas Ltda",
  "inscricaoMunicipal": "12345",
  "inscricaoEstadual": "123456789",
  "regimeTributario": "3",
  "crt": 1,
  "codigoMunicipio": "3550308",
  "endereco": {
    "logradouro": "Av Paulista",
    "numero": "1000",
    "complemento": null,
    "bairro": "Bela Vista",
    "cidade": "São Paulo",
    "uf": "SP",
    "cep": "01310100"
  },
  "email": "[email protected]",
  "telefone": "11999999999",
  "codigoTributacao": null,
  "tributacaoIss": 1,
  "serieNfse": "1608",
  "aliquotaSimples": 3.5,
  "regimeIss": null,
  "codigoServicoSp": "01015",
  "cnae": "6201501",
  "basicAuthUsuario": null,
  "ambiente": 2,
  "serieNfe": 1,
  "serieNfce": 1,
  "cscId": "000001",
  "hasCscToken": true,
  "cstPisCofins": "01",
  "aliquotaPis": 0.65,
  "aliquotaCofins": 3.00,
  "tipoRetencaoPisCofins": 0,
  "defaultCstIbscbs": "000",
  "defaultClassificacaoTributaria": "000001",
  "defaultIndicadorOperacao": "100301",
  "defaultNbs": "114012100",
  "danfeTemplate": "padrao",
  "active": true,
  "createdAt": "2026-04-21T20:30:00Z",
  "updatedAt": "2026-04-21T20:30:00Z"
}
PATCH/org/projects/{id}🔑 x-api-key

Atualiza campos do projeto. O CNPJ/CPF é imutável após criação.

Body (JSON) — campos opcionais

CampoTipoReq?Descrição
namestringnãoNovo nome do projeto
razaoSocialstringnãoNova razão social ou nome completo da Pessoa Física
caepfstring | nullnãoCAEPF do prestador Pessoa Física (14 dígitos numéricos ou máscara XXX.XXX.XXX/XXX-XX). Exclusivo para projetos CPF (rejeitado com HTTP 400 em projetos CNPJ). Envie null ou "" para remover.
inscricaoMunicipalstringnãoInscrição municipal
inscricaoEstadualstringnãoInscrição estadual (para emissão de NF-e por Produtor Rural PF, o validador pré-emissão exige IE numérica ativa de 2 a 14 dígitos)
regimeTributario"1"|"2"|"3"|"3e"nãoRegime tributário ("1"=Não Optante, "2"=MEI, "3"=SN ME/EPP, "3e"=SN Excesso). Para projetos CPF (Prestador PF de serviços ou Produtor Rural PF), apenas "1" é permitido.
codigoMunicipiostringnãoCódigo IBGE do município
emailstringnãoE-mail
telefonestringnãoTelefone
descriptionstringnãoDescrição do projeto
endereco.*objectnãoCampos de endereço (logradouro, numero, bairro, cidade, uf, cep)
codigoTributacaostringnãoCódigo de Tributação Nacional (LC 116/2003)
tributacaoIss1|2|3|4nãoTributação ISSQN: 1=Tributável, 2=Fora do campo, 3=Exportação, 4=Não Incidência
serieNfsestringnãoSérie da NFS-e (padrão: "1608", máx 5 dígitos)
aliquotaSimplesnumber | nullnãoAlíquota efetiva DAS (%) para empresas SN ME/EPP
regimeIss1|2|3 | nullnãoApuração ISS no SN: 1=ISS no DAS, 2=ISS separado, 3=Ambos separados
codigoServicoSpstringnãoCódigo de serviço da Prefeitura SP (5 dígitos)
cnaestringnãoCNAE principal
basicAuthUsuariostringnãoUsuário para municípios com sistema Basic Auth (Centi, HM2)
basicAuthSenhastringnãoSenha Basic Auth (write-only)
ambiente1|2nãoAmbiente: 1=Produção, 2=Homologação (padrão na criação: 2). Respeita os limites de Produção e Homologação do plano.
serieNfenumber | nullnãoSérie NF-e mod. 55 (1–889 para CNPJ; 920–969 para CPF)
serieNfcenumber | nullnãoSérie NFC-e mod. 65 (1-999)
cscIdstring | nullnãoID do CSC
cscTokenstring | nullnãoToken CSC (write-only)
cstPisCofinsstring | nullnãoCST PIS/COFINS padrão (2 dígitos, ex: "01", "07"). Envie null para remover.
aliquotaPisnumber | nullnãoAlíquota PIS padrão (%). Envie null para remover.
aliquotaCofinsnumber | nullnãoAlíquota COFINS padrão (%). Envie null para remover.
tipoRetencaoPisCofinsnumber | nullnãoTipo retenção PIS/COFINS: 0=Não Retidos, 1=Retidos, 3=Todos. Envie null para remover.
defaultCstIbscbsstring | nullnãoCST padrão IBS/CBS (3 dígitos numéricos). Envie null para remover.
defaultClassificacaoTributariastring | nullnãoClassificação tributária cClassTrib padrão (6 dígitos). Envie null para remover.
defaultIndicadorOperacaostring | nullnãoIndicador de operação cIndOp padrão (6 dígitos). Envie null para remover.
defaultNbsstring | nullnãoNBS padrão (9 dígitos numéricos). Envie null para remover.
danfeTemplate"padrao"|"retrato_logo"|"paisagem_logo" | nullnãoModelo de layout do DANFE: "padrao", "retrato_logo" ou "paisagem_logo" (uso de logo requer plano Pro ou superior). Envie null para restaurar "padrao".
// Request
{ "name": "Filial SP - Centro", "regimeTributario": "1", "defaultCstIbscbs": "000" }

// Response 200
{ "updated": true, "id": "a1b2c3d4-..." }
DELETE/org/projects/{id}🔑 x-api-key

Exclui (desativa) o projeto de forma irreversível via API e revoga imediatamente todas as API Keys vinculadas. O histórico fiscal, as notas emitidas, as numerações, os arquivos e o certificado digital são preservados. Libera a quota de CNPJs do plano e permite re-cadastrar o mesmo CNPJ em um novo projeto.

Respostas

CampoTipoReq?Descrição
204No ContentnãoProjeto desativado com sucesso (sem corpo na resposta)
401UnauthorizednãoToken ausente ou inválido
403ForbiddennãoToken sem o escopo projects:write
404Not FoundnãoProjeto inexistente, já inativo ou de outra organização
429Too Many RequestsnãoRate limit excedido
# cURL
curl -X DELETE \
  -H "x-api-key: ntaas_org_..." \
  https://platform.notaas.com.br/api/v1/org/projects/{id}

// JavaScript (fetch)
const res = await fetch(
  'https://platform.notaas.com.br/api/v1/org/projects/{id}',
  { method: 'DELETE', headers: { 'x-api-key': 'ntaas_org_...' } }
);
// res.status === 204 → sucesso (sem corpo)

⚠️ Atenção

A desativação é irreversível via API e revoga todas as API Keys do projeto na mesma transação. Notas fiscais já emitidas, numerações e certificado são mantidos para fins fiscais e de auditoria.

Numeração

GET/org/projects/{id}/numeracao🔑 x-api-key

Retorna o estado atual da numeração de NFS-e, NF-e e NFC-e do projeto.

// Response 200
{
  "nfse": {
    "ultimoNumero": 1500,
    "proximoNumero": 1501,
    "serie": "1608"
  },
  "nfe": {
    "ultimoNumero": 2000,
    "proximoNumero": 2001,
    "serie": 1
  },
  "nfce": {
    "ultimoNumero": 500,
    "proximoNumero": 501,
    "serie": 1
  }
}
PATCH/org/projects/{id}/numeracao🔑 x-api-key

Ajusta a numeração sequencial. Números nunca diminuem — se o valor enviado for menor que o atual, será ignorado (guard GREATEST).

Body (JSON)

CampoTipoReq?Descrição
ultimoNumeroNfsenumbernãoÚltimo número DPS (NFS-e). O próximo será este +1.
ultimoNumeroNfenumbernãoÚltimo número NF-e (mod. 55). O próximo será este +1.
ultimoNumeroNfcenumbernãoÚltimo número NFC-e (mod. 65). O próximo será este +1.
curl -X PATCH \
  -H "x-api-key: ntaas_org_..." \
  -H "Content-Type: application/json" \
  -d '{"ultimoNumeroNfse": 1500, "ultimoNumeroNfe": 2000}' \
  https://platform.notaas.com.br/api/v1/org/projects/{id}/numeracao

// Response 200 — valores efetivos após GREATEST
{
  "nfse": { "ultimoNumero": 1500, "proximoNumero": 1501, "serie": "1608" },
  "nfe":  { "ultimoNumero": 2000, "proximoNumero": 2001, "serie": 1 },
  "nfce": { "ultimoNumero": 500,  "proximoNumero": 501,  "serie": 1 }
}

API Keys de Projeto

POST/org/projects/{id}/api-keys🔑 x-api-key

Cria uma API key para o projeto. A chave completa é retornada apenas nesta resposta — nunca mais.

Body (JSON)

CampoTipoReq?Descrição
namestringsimNome descritivo da chave (ex: "Produção Backend")
// Response 201
{
  "id": "key-uuid-...",
  "name": "Produção Backend",
  "key": "ntaas_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "keyPrefix": "ntaas_XXXX",
  "scopes": ["emit", "cancel", "query"],
  "rateLimitPerMinute": 60,
  "createdAt": "2026-04-21T20:35:00Z"
}

⚠️ Atenção

O campo key é exibido apenas nesta resposta. Armazene-o com segurança. Se perdido, revogue e crie uma nova chave.

GET/org/projects/{id}/api-keys🔑 x-api-key

Lista as API keys do projeto (sem expor a chave completa).

// Response 200
{
  "data": [
    {
      "id": "key-uuid-...",
      "name": "Produção Backend",
      "keyPrefix": "ntaas_XXXX",
      "scopes": ["emit", "cancel", "query"],
      "rateLimitPerMinute": 60,
      "active": true,
      "lastUsedAt": "2026-04-21T20:40:00Z",
      "createdAt": "2026-04-21T20:35:00Z"
    }
  ]
}
DELETE/org/projects/{id}/api-keys/{keyId}🔑 x-api-key

Revoga (desativa) uma API key. A chave para de funcionar imediatamente.

// Response 200
{ "revoked": true, "id": "key-uuid-..." }

Certificado Digital A1

GET/org/projects/{id}/certificate🔑 x-api-key

Consulta os metadados seguros do certificado digital A1 ativo do projeto (jamais expõe o binário .pfx ou a senha). Requer escopo projects:read.

// Response 200
{
  "projectId": "6f9b1c20-8a4d-4e3a-9c11-...",
  "hasActiveCertificate": true,
  "validUntil": "2027-01-15T23:59:59.000Z",
  "isExpired": false,
  "daysUntilExpiration": 269,
  "uploadUrl": "https://platform.notaas.com.br/certificates?projectId=6f9b1c20-..."
}
POST/org/projects/{id}/certificate/upload-session🔑 x-api-key

Cria uma sessão efêmera one-time (TTL 15 minutos) para upload de Certificado A1 sem expor a senha ao LLM e sem exigir login Clerk. Retorna o comando read -s + curl para terminal (Opção 2 do MCP) e a URL Dropzone /onboarding/cert#token=... para o contador/cliente (Opção 3 do MCP). Requer escopo certificates:write.

// Response 201
{
  "sessionId": "8f14e45f-ceea-467f-a8c9-...",
  "projectId": "6f9b1c20-8a4d-4e3a-9c11-...",
  "projectName": "Matriz SP",
  "razaoSocial": "ACME SISTEMAS LTDA",
  "cnpj": "12345678000195",
  "uploadToken": "ntaas_cert_up_64_hex...",
  "uploadSessionUrl": "https://platform.notaas.com.br/onboarding/cert#token=ntaas_cert_up_...",
  "terminalCommand": "read -r -s -p \"Senha do Certificado A1: \" NOTAAS_PFX_PASS && echo \"\" && curl -sS -X POST ...",
  "expiresAt": "2026-10-28T10:30:00.000Z",
  "ttlMinutes": 15
}
POST/org/projects/{id}/certificate🔑 x-api-key

Upload de certificado digital A1 (.pfx/.p12 — e-CNPJ A1 para projetos PJ ou e-CPF A1 para projetos PF — Prestador de serviços na NFS-e Nacional ou Produtor Rural na NF-e). Substitui atomicamente o certificado anterior e valida o documento do titular contra o projeto quando extraível do certificado ICP-Brasil.

Body (multipart/form-data)

CampoTipoReq?Descrição
fileFile (.pfx/.p12)simArquivo do certificado A1 e-CNPJ ou e-CPF (máx. 50KB)
passwordstringsimSenha do certificado
curl -X POST https://platform.notaas.com.br/api/v1/org/projects/{id}/certificate \
  -H "x-api-key: ntaas_org_XXXXXXXX..." \
  -F "[email protected]" \
  -F "password=minhaSenha123"
// Response 201
{
  "id": "cert-uuid-...",
  "fileName": "certificado.pfx",
  "subjectCN": "ACME SISTEMAS LTDA:12345678000195",
  "validFrom": "2026-01-15T00:00:00Z",
  "validUntil": "2027-01-15T23:59:59Z",
  "daysUntilExpiration": 269,
  "active": true
}

Erros

CampoTipoReq?Descrição
400Bad RequestnãoArquivo inválido, senha incorreta, certificado expirado ou titular (CNPJ numérico ou alfanumérico [0-9A-Z]{12}\d{2} no e-CNPJ via OID 2.16.76.1.3.3 / CN, ou 11 dígitos no e-CPF) divergente do documento do projeto (previne Rejeições SEFAZ 213 e 227)
413Payload Too LargenãoArquivo excede 50KB

Gerencie o logo que será impresso nos DANFEs dos modelos retrato_logo e paisagem_logo.

POST/org/projects/{id}/logo🔑 x-api-key

Upload de logo do emitente (PNG/JPEG/WebP). Substitui o logo anterior.

Body (multipart/form-data)

CampoTipoReq?Descrição
fileFilesimImagem do logo (máx. 500KB). Recomendado 400x400px.
curl -X POST https://platform.notaas.com.br/api/v1/org/projects/{id}/logo \
  -H "x-api-key: ntaas_org_XXXXXXXX..." \
  -F "[email protected]"
// Response 201
{
  "ok": true,
  "key": "logos/uuid-proj/logo.png"
}
DELETE/org/projects/{id}/logo🔑 x-api-key

Remove o logo do projeto e reseta o danfeTemplate para 'padrao'.

curl -X DELETE https://platform.notaas.com.br/api/v1/org/projects/{id}/logo \
  -H "x-api-key: ntaas_org_XXXXXXXX..."
// Response 200
{ "ok": true }

Configurações da Organização

GET/org/settings🔑 x-api-key

Retorna configurações atuais da organização e resumo de uso do plano.

// Response 200
{
  "name": "Acme Sistemas",
  "slug": "acme-sistemas",
  "storageBaseUrl": "https://storage.acmesistemas.com.br",
  "subscription": {
    "planName": "Pro",
    "planSlug": "pro",
    "creditsUsed": 42,
    "creditsLimit": 500,
    "daysLeft": 18
  }
}
PATCH/org/settings🔑 x-api-key

Configura o domínio white-label para documentos (PDF/XML). O CNAME deve apontar para backbone.notaas.com.br.

Body (JSON)

CampoTipoReq?Descrição
storageBaseUrlstring | nullsimURL HTTPS do domínio customizado (ex: "https://storage.acme.com.br"). Envie null para remover.
// Request
{ "storageBaseUrl": "https://storage.acmesistemas.com.br" }

// Response 200
{
  "storageBaseUrl": "https://storage.acmesistemas.com.br",
  "status": "pending_verification",
  "message": "Configure o CNAME do domínio apontando para backbone.notaas.com.br."
}

Validações e Requisitos

CampoTipoReq?Descrição
PlanoSaaS Pro+nãoConfigurar storageBaseUrl não-nulo exige plano SaaS Pro ou Enterprise (retorna 402 PAYWALL_WHITELABEL_REQUIRED em Free/Dev). Enviar null para remover é permitido em qualquer plano.
HTTPSobrigatórionãoApenas URLs com protocolo https: são aceitas
Domínio públicoobrigatórionãoSem localhost, IPs, .local ou hostnames sem domínio
CNAMEmanualnãoConfigure o registro CNAME apontando para backbone.notaas.com.br

Rate Limiting e Limite de Tokens

O rate limit dos Org Tokens varia conforme o plano da organização: 30 req/min (Free e Developer em modo Homologação), 120 req/min (SaaS Pro) e 300 req/min (Enterprise). Cada organização pode manter até 3 tokens ativos nos planos Free/Developer e até 20 tokens ativos nos planos SaaS Pro/Enterprise. Ao exceder o rate limit, a API retorna 429 Too Many Requests com o header Retry-After.

Fluxo Completo de Onboarding

PASSO A PASSO

  1. Criar org token no dashboard (API Keys → Organization Tokens → Novo Token) ou via pareamento Device Flow RFC 8628 no MCP (notaas_start_account_onboarding)
  2. POST /org/projects — criar projeto do sub-cliente (em Homologação ambiente: 2 ou Produção ambiente: 1)
  3. POST /org/projects/:id/certificate (upload direto multipart/form-data) ou POST /org/projects/:id/certificate/upload-session (sessão one-time de 15 min para envio via terminal read -s ou link Dropzone sem login /onboarding/cert#token=... para o contador/cliente)
  4. POST /org/projects/:id/api-keys — criar API key do projeto
  5. Usar a ntaas_ key retornada para emitir notas via POST /emitir

💡 Paridade 100% com o Onboarding Web: as rotas de provisionamento atualizam seletivamente o checklist da organização (onboarding_objectives) conforme a operação e os dados enviados — criação e atualização de projeto (POST /org/projects e PATCH /org/projects/:id) marcam company_data, fiscal_config e nfe_config conforme os campos preenchidos; o upload do certificado marca certificate; e a criação da chave (POST /org/projects/:id/api-keys) marca api_key. Além disso, o cadastro de um projeto fiscal real substitui/promove automaticamente o projeto placeholder inicial intocado ("Projeto Padrão" / CNPJ 00.000.000/0000-00), sem desativar nenhum projeto real existente.