Python
Funções síncronas e assíncronas por operação, com modelos tipados.
pip install "nfse-digital @ git+https://github.com/andrebassi/nfse-digital.git#subdirectory=sdk/python"
# ou
uv add "nfse-digital @ git+https://github.com/andrebassi/nfse-digital.git#subdirectory=sdk/python"import os
from nfse_digital import AuthenticatedClient
from nfse_digital.api.notas import emit_invoice, get_invoice_by_key
from nfse_digital.models import EmitRequest
client = AuthenticatedClient(base_url="https://nfse.bassi.engineer/api/v1", token=os.environ["NFSE_TOKEN"])
response = emit_invoice.sync_detailed(client=client, body=EmitRequest(
idempotency_key="fatura-2026-11-0042", customer_id=1, template_id=1))
print(response.status_code, response.parsed) # 201 → Invoice; 422 → Error com .fields
invoice = get_invoice_by_key.sync(client=client, idempotency_key="fatura-2026-11-0042")- Os módulos seguem as tags do contrato:
api.notas,api.cadastros,api.conta. - Cada operação tem
sync,sync_detailed,asyncioeasyncio_detailed; as_detailedtrazemstatus_codeeheaders. - Limite conhecido: o gerador não tipa resposta em PDF. No
get_invoice_danf_se.sync_detailed, o PDF vem emresponse.content.