Invoice-Receipt (FR)¶
What it is¶
The Invoice-Receipt (FR) is an invoice and a receipt in one document: it bills the sale and acknowledges payment at the same time. It is the right document when the client pays on the spot.
- Very common for services (consultations, freelancers, independent professionals)
- Avoids issuing an Invoice (FT) and then a separate Receipt (RG)
- Client identification: can include NIF, name only, or be anonymous
Example¶
from decimal import Decimal
from vendus import ClientData, DocumentItem, Payment, TaxCategory, VendusClient
client = VendusClient.from_env()
# An FR records payment on issue, so you must say HOW it was paid.
# Payment-method ids are account-specific — look them up once.
cash = next(m for m in client.documents.list_payment_methods() if m.type == "NU")
fr = client.documents.create_invoice_receipt(
register_id=1,
client=ClientData(name="Acme Lda", fiscal_id="123456789"),
items=[
DocumentItem(
description="Consulting session (paid on the spot)",
quantity=Decimal("1"),
unit_price=Decimal("90.00"),
tax_category=TaxCategory.NORMAL,
),
],
payments=[Payment(method_id=cash.id, amount=Decimal("90.00"))],
external_reference="FR-2026-001",
)
print(fr.number) # "FR 2026/12"
print(fr.atcud)
Scenarios¶
# 1. With NIF
client.documents.create_invoice_receipt(
register_id=1, items=[...], payments=[...],
client=ClientData(name="Acme Lda", fiscal_id="123456789"),
)
# 2. Name only (client did not provide NIF)
client.documents.create_invoice_receipt(
register_id=1, items=[...], payments=[...],
client=ClientData(name="João Silva"),
)
# 3. Final consumer (anonymous)
client.documents.create_invoice_receipt(register_id=1, items=[...], payments=[...])
Async variant¶
fr = await client.documents.create_invoice_receipt_async(
register_id=1,
items=[...],
payments=[...],
)
FT vs FR¶
| Invoice (FT) | Invoice-Receipt (FR) | |
|---|---|---|
| Bills the sale | ✅ | ✅ |
| Acknowledges payment | ❌ (needs a separate Receipt (RG)) | ✅ |
| When to use | Client pays later (on credit, net 30) | Client pays on the spot |
Notes¶
- Immediate payment: FR assumes payment happens at issue time, so
paymentsis required — get the account's method ids fromlist_payment_methods(). If you bill on credit, usecreate_invoice(FT) instead. - Cancellation: an FR cannot be cancelled — reverse it with a credit note (
create_credit_note(reference_document_id=fr.id, reason=...)). - Credit note: crediting an FR uses the same
create_credit_note— it fetches the FR and credits its lines.