Skip to content

vendus Python SDK

PyPI version Python versions License: MIT

Python SDK for Vendus, Portugal's AT-certified invoicing & POS platform.

Community SDK

This is an independent open-source project, not affiliated with or endorsed by Vendus.

Quickstart

from decimal import Decimal
from vendus import ClientData, DocumentItem, TaxCategory, VendusClient

client = VendusClient(api_key="your-api-key")

invoice = client.documents.create_invoice(
    register_id=1,
    client=ClientData(name="Acme Lda", fiscal_id="123456789"),
    items=[
        DocumentItem(
            description="Consulting hours",
            quantity=Decimal("10"),
            unit_price=Decimal("75.00"),
            tax_category=TaxCategory.NORMAL,
        ),
    ],
)

print(invoice.number)   # "FT 2026/123"
print(invoice.atcud)    # AT communication code
print(invoice.qrcode)   # AT QR code payload

Supported document types

Document Code Method Status
Invoice FT client.documents.create_invoice
Simplified Invoice FS client.documents.create_simplified_invoice
Invoice-Receipt FR client.documents.create_invoice_receipt
Receipt RG client.documents.create_receipt
Credit Note NC client.documents.create_credit_note

Why this SDK?

  • Sync + Async — same client, _async suffix for async variants
  • Fully typedmypy --strict, full IDE autocomplete
  • Decimal for money — never float. Cent precision required by AT
  • Safe retries — GET auto-retries; POST only when external_reference is present (prevents duplicate fiscal documents)
  • NIF validated locally — mod 11 algorithm, fails before hitting the API
  • PII redaction in logsfiscal_id, email, phone, address
  • AT is opaque — Vendus communicates with AT; the SDK never talks to AT directly

Next steps

  • Installation


    Install and configure in 2 minutes

    Get started

  • Documents


    Which type to use? Decision guide

    Documents

  • Recipes


    Guides for FastAPI, Flask, Django

    Recipes

  • Errors


    Exception hierarchy and handling

    Errors