Sandbox
O Sandbox é onde você testa sua integração com a Notare sem gerar nota fiscal real e sem depender dos webservices das prefeituras. É a forma recomendada de validar seu código antes de ir para produção.
Como ativar
Use uma chave de teste (nnt_test_) no lugar da de produção (nnt_live_).
Mesma URL, mesmo JSON — só a chave muda.
Authorization: Bearer nnt_test_xxxxxxxxxxxxxxxxxxxxxxxxxx
O que é validado de verdade
O Sandbox roda as mesmas validações que a produção — não é um mock que sempre diz "ok". Se o seu request tem um problema, você recebe exatamente a mesma rejeição que produção daria:
- Schema — campos obrigatórios, formatos, enums, CPF/CNPJ, CEP.
- Regras do município — limites de tamanho, códigos aceitos, particularidades de cada prefeitura (ex.: "a descrição do serviço aceita no máximo 2000 caracteres neste município").
- Pré-validação — valores, deduções, regras de negócio.
Ou seja: se passou no Sandbox, vai passar em produção (na parte de validação).
O que é simulado
Quando o request é válido, o Sandbox devolve um retorno simulado:
status: "autorizada"numero,chaveAcessoenumeroRpscom prefixoSANDBOX-meta.sandbox: true
Nada disso toca a prefeitura nem gera documento fiscal. A numeração de RPS de produção não é consumida.
Exemplo de resposta (Sandbox)
{
"id": "a1b2c3d4-...",
"status": "autorizada",
"numero": "SANDBOX-123456",
"chaveAcesso": "SANDBOX5208707...",
"meta": {
"trilho": "municipal",
"municipio": { "ibge": "5208707", "nome": "Goiânia/GO", "padrao": "Nacional-1.01" },
"sandbox": true,
"tempoProcessamento": "12ms"
}
}
Exemplo de rejeição (idêntica à produção)
{
"status": "rejeitada_regras_municipais",
"erros": [
{
"codigo": "CENTI-001",
"campo": "servico[0].discriminacao",
"mensagem": "Discriminação do serviço aceita no máximo 2000 caracteres."
}
],
"meta": { "sandbox": true }
}
Webhooks no Sandbox
Se você configurar opcoes.webhookUrl no request, o Sandbox dispara o mesmo
webhook que produção dispararia (assinado com HMAC, igual). Assim você testa o
seu endpoint de webhook ponta a ponta — recebe o 202, e depois o webhook
chega. Veja Webhooks.
Diferenças resumidas
Sandbox (nnt_test_) | Produção (nnt_live_) | |
|---|---|---|
| Validações | ✅ reais (todas) | ✅ reais |
| Toca a prefeitura | ❌ não | ✅ sim |
| Gera documento fiscal | ❌ não | ✅ sim |
| Consome RPS de produção | ❌ não | ✅ sim |
| Webhook | ✅ simulado | ✅ real |
meta.sandbox | true | ausente |
Quando estiver pronto
Troque a chave nnt_test_ pela nnt_live_ e os mesmos requests passam a emitir
notas reais. Não há mais nada a mudar no seu código.