Salta al contenuto principale

Cos'è la Contabilità Fornitori? Definizione, Esempi e AP vs AR (2026)

Pubblicato Ultimo aggiornamento 18 minuti di letturaMike ThriftMike Thrift
Cos'è la Contabilità Fornitori? Definizione, Esempi e AP vs AR (2026)
In questa pagina

La contabilità fornitori (AP) è il denaro che la tua azienda deve ai suoi fornitori per beni o servizi che hai già ricevuto ma che non hai ancora pagato. Nel mondo della contabilità, l'AP è classificata come passività corrente nello stato patrimoniale—un importo generalmente dovuto entro l'anno successivo, e spesso entro 30 o 60 giorni.

Questo concetto è centrale nella contabilità per competenza, dove registri la spesa e la corrispondente passività nel momento in cui arriva la fattura, non quando invii effettivamente il denaro. Questa guida ti mostrerà come gestire l'intero flusso di lavoro AP in modo pulito ed efficiente usando lo strumento di contabilità a testo semplice, Beancount.


Riepilogo Rapido

Prima di addentrarci nei dettagli, copriamo l'essenziale:

  • Contabilità Fornitori (AP) rappresenta i tuoi debiti a breve termine verso i fornitori. La troverai nella sezione Liabilities del tuo stato patrimoniale.
  • Competenza vs. Cassa: L'AP è un concetto che esiste solo se tieni i tuoi libri contabili per competenza. Beancount supporta pienamente i flussi di lavoro per competenza, e la sua interfaccia web, Fava, visualizzerà correttamente le tue passività.
  • AP vs. AR: È semplice: i debiti (Payables) sono ciò che devi, mentre i crediti (Receivables, AR) sono ciò che gli altri devono a te.

Dove Vive l'AP in Beancount (e Fava)

Per iniziare a tracciare l'AP, devi prima dichiarare un conto per essa nel tuo libro mastro. Una convenzione standard è:

Liabilities:AccountsPayable

Puoi opzionalmente creare sottoconti per i fornitori principali (es., Liabilities:AccountsPayable:ForestPaintSupply).

In Fava, questo conto apparirà nel tuo Stato Patrimoniale sotto Liabilities. Puoi cliccarci sopra per approfondire e vedere le registrazioni che compongono il saldo. Puoi anche vedere questo in azione nel libro mastro di esempio pubblico di Fava, che include un conto Liabilities:AccountsPayable.

Convenzione dei segni: Beancount memorizza i saldi delle passività come crediti (numeri negativi). Un saldo di -500.00 USD su Liabilities:AccountsPayable significa che devi $500. Il report delle partite aperte qui sotto inverte il segno con -SUM(number) così ogni fattura non pagata mostra un importo positivo dovuto. Una fattura completamente saldata somma a zero ed è esclusa da HAVING.


Mattoni Fondamentali di Beancount che Utilizzerai

Un flusso di lavoro AP robusto in Beancount si basa su alcune funzionalità principali:

  1. Conti: Utilizzerai principalmente il tuo conto Liabilities:AccountsPayable, un conto cassa come Assets:Bank:Checking, e i tuoi vari conti spesa (es., Expenses:Supplies).
  2. Metadati: Puoi allegare dati chiave-valore a qualsiasi transazione. Per l'AP, userai metadati come invoice:, due:, terms: e document:. Imposta option "documents" su una cartella così Beancount può scoprire i file lì; in Fava, trascinare un file su una riga del giornale inserisce una voce di metadati document:, e abilitare plugin "fava.plugins.link_documents" collega quelle voci ai Documenti scoperti.
  3. Tag e Link: Usa #tag (come #ap) per un facile filtraggio e ^link (come ^INV-10455) per collegare programmaticamente una fattura e il suo successivo pagamento. Questo crea una traccia chiara e verificabile nel giornale—ma i link da soli non sono sufficienti per la query delle fatture aperte qui sotto.
  4. Query (BQL): Il linguaggio di query simile a SQL di Beancount (BQL) ti permette di eseguire report potenti, come elencare tutti i debiti aperti ordinati per data di scadenza, direttamente dalla riga di comando con bean-query o sulla pagina "Query" di Fava.

Identità della fattura (richiesta per le query delle fatture aperte): Ogni fattura e ogni pagamento che la salda—intero, parziale o con sconto per pagamento anticipato—deve avere gli stessi metadati di transazione invoice: e due:, più lo stesso ^link. La query raggruppa per payee, any_meta('invoice') e any_meta('due'). Se un pagamento omette quelle chiavi, la sua registrazione AP finisce in un gruppo separato (payee, null, null) e una fattura saldata risulta ancora aperta. Mantieni (payee, invoice) univoco tra i fornitori. Campi opzionali solo-fattura come terms: e document: non devono essere ripetuti sui pagamenti.


Flusso di Lavoro AP Principale in Beancount

Gestire l'AP nel tuo libro mastro comporta due o tre passaggi chiave: registrare la fattura, pagarla e talvolta gestire pagamenti parziali o sconti.

1) Registra la Fattura del Fornitore (Questo Crea la Passività)

Per prima cosa, registri la spesa e crei il debito quando arriva la fattura.

; Optionally set your documents folder in your main Beancount file:
option "documents" "documents"
 
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
  invoice: "INV-10455"
  due: "2025-09-04"
  terms: "2/10, n/30"
  document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
  Expenses:Supplies:Paint         500.00 USD
  Liabilities:AccountsPayable    -500.00 USD

Questa singola voce realizza due cose fondamentali:

  1. Riconosce immediatamente la spesa di $500 nel periodo corretto (agosto)—una volta. Non registrare nuovamente la spesa al momento del pagamento.
  2. Accredita l'AP di $500 (-500.00 USD), registrando che devi tale importo a Forest Paint Supply.

Il link ^INV-10455 più i metadati invoice: / due: formano l'identità della fattura. Ogni pagamento successivo di questa fattura deve riutilizzare tutti e tre.

2) Paga la Fattura (Questo Estingue la Passività)

Quando paghi la fattura, crei una transazione che sposta denaro dal tuo conto bancario per estinguere la passività. Copia invoice: e due: dalla fattura sul pagamento così entrambe le registrazioni condividono un gruppo di query.

a) Pagamento Standard (Nessuno Sconto):

2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
  invoice: "INV-10455"
  due: "2025-09-04"
  Liabilities:AccountsPayable     500.00 USD
  Assets:Bank:Checking           -500.00 USD

Questa voce riduce il tuo saldo AP di $500 e il saldo del tuo conto corrente dello stesso importo. La passività per questa fattura ora è estinta (la somma AP del gruppo è zero). La spesa rimane sulla fattura di agosto—il pagamento non tocca Expenses:.

b) Sconto per Pagamento Anticipato (es., "2/10, n/30")—scegli esattamente un metodo:

Se i termini sono "2/10, n/30", puoi ottenere uno sconto del 2% se paghi entro 10 giorni. Per la nostra fattura di $500, si tratta di uno sconto di $10. Il blocco qui sotto mostra due alternative mutuamente esclusive: L'Opzione 1 è attiva; l'Opzione 2 è completamente commentata così un incolla non può registrare entrambe. Per usare invece l'Opzione 2, commenta l'Opzione 1 e decommenta l'Opzione 2. Non lasciare mai entrambe attive—questo estingue l'AP due volte e inventa un secondo beneficio di $10. Quale conto reddito vs. spesa usi è una scelta di politica contabile per i tuoi libri; Beancount non richiede l'una rispetto all'altra.

; Pick EXACTLY ONE of the two transactions below for a given invoice.
; Do not paste both into the same ledger — that clears AP twice.
 
; Option 1: Record the discount as other income
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
  invoice: "INV-10455"
  due: "2025-09-04"
  Liabilities:AccountsPayable     500.00 USD
  Assets:Bank:Checking           -490.00 USD
  Income:Discounts:Payables       -10.00 USD
 
; Option 2: Reduce the original expense directly
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
;   invoice: "INV-10455"
;   due: "2025-09-04"
;   Liabilities:AccountsPayable     500.00 USD
;   Assets:Bank:Checking           -490.00 USD
;   Expenses:Supplies:Paint         -10.00 USD

In entrambe le alternative da sole, estingui l'intera passività di $500, riduci il tuo saldo bancario dei $490 effettivamente pagati e contabilizzi il beneficio di $10. Sostituisci la transazione di pagamento completo standard con l'alternativa scelta—non impilare un pagamento scontato sopra il pagamento in contanti di $500 e non combinare questo blocco con la sezione 2a per la stessa fattura.

3) Gestione dei Pagamenti Parziali

Riutilizza la stessa identità invoice: / due: / ^link su ogni rata così ogni pagamento riduce lo stesso gruppo di fatture aperte.

; Invoice for $1,200
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
  invoice: "INV-9001"
  due: "2025-09-09"
  Expenses:Parts                 1200.00 USD
  Liabilities:AccountsPayable   -1200.00 USD
 
; First payment of $400
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
  invoice: "INV-9001"
  due: "2025-09-09"
  Liabilities:AccountsPayable     400.00 USD
  Assets:Bank:Checking           -400.00 USD
 
; Final payment of $800
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
  invoice: "INV-9001"
  due: "2025-09-09"
  Liabilities:AccountsPayable     800.00 USD
  Assets:Bank:Checking           -800.00 USD

Dopo il primo pagamento, la somma AP del gruppo fattura è -800.00 USD (devi ancora $800). Dopo il pagamento finale è zero. Filtrare il giornale per ^INV-9001 mostra ancora la storia completa.


Query Utili (BQL)

Puoi eseguire queste query nella scheda "Query" di Fava o dalla riga di comando con bean-query (riferimento BQL). Verificate qui sotto con Beancount 3.2.3 e beanquery 0.2.0.

Suggerimento: La funzione any_meta() cerca una chiave di metadati prima sulla registrazione, poi ripiega sulla transazione—quindi i valori invoice: / due: a livello di transazione appaiono nel set di risultati.

AP Aperto per Fornitore (Vista Saldo):

Questa query somma l'inventario delle passività per fornitore. Un totale a credito (negativo) è ciò che devi ancora a quel fornitore.

SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;

Fatture aperte a una data fissa (report partite aperte):

Un report partite aperte risponde a "cosa rimane non pagato?". Deve (1) interrompersi a una data di riferimento esplicita così i pagamenti successivi non possono cancellare silenziosamente uno snapshot precedente, (2) raggruppare per l'identità condivisa della fattura (payee + invoice: + due:), (3) escludere i gruppi saldati (zero) e (4) mostrare un importo positivo dovuto—non un credito AP firmato grezzo.

Data di riferimento usata ovunque qui sotto: 2025-09-04.

Libro mastro AP iniziale scaricabile

Scarica accounts-payable-starter.bean—un unico libro mastro autonomo generato dall'intero blocco qui sotto (aperture conti, cassa iniziale fittizia, fatture saldate / parziali / non pagate, data di riferimento 2025-09-04). Ogni nome e importo sono dati di esempio fittizi. Nessun PDF di fattura, cartella documenti o altro file è richiesto per validarlo o interrogarlo.

Prima esecuzione da una directory temporanea pulita (versioni ancorate Beancount 3.2.3 / beanquery 0.2.0):

# Save the download as accounts-payable-starter.bean in this directory, then:
uvx --from beancount==3.2.3 bean-check accounts-payable-starter.bean
 
uvx --from beanquery==0.2.0 --with beancount==3.2.3 bean-query accounts-payable-starter.bean \
  "SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"

bean-check esce con 0 e nessun output. La query restituisce le cinque righe aperte nella tabella prevista qui sotto (Forest assente; Acme dovuto 800.00; somma dei dovuti positivi = 1500.00). Rigenera il download committato con yarn generate:ap-starter dopo aver modificato il blocco; yarn generate:ap-starter --check fallisce se l'artefatto è obsoleto.

Incolla questo fixture completo (aperture + cassa iniziale + le tre forme di fattura, più righe per scadenza-oggi / scaduto / casi limite per l'anzianità). Le alternative di sconto per pagamento anticipato per INV-10455 rimangono completamente commentate—attiva esattamente una solo se sostituisci il pagamento standard Forest; non lasciare mai entrambe le opzioni di sconto attive insieme a quel pagamento.

; accounts-payable-starter — complete runnable AP workflow
option "operating_currency" "USD"
 
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Equity:Opening-Balances USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
2025-01-01 open Expenses:Parts USD
2025-01-01 open Expenses:Office USD
2025-01-01 open Income:Discounts:Payables USD
 
; Fictional opening cash — enough to cover every payment in this ledger
2025-01-01 * "Opening balance"
  Assets:Bank:Checking           5000.00 USD
  Equity:Opening-Balances       -5000.00 USD
 
; Settled before as-of — must disappear from the open report
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
  invoice: "INV-10455"
  due: "2025-09-04"
  Expenses:Supplies:Paint         500.00 USD
  Liabilities:AccountsPayable    -500.00 USD
 
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
  invoice: "INV-10455"
  due: "2025-09-04"
  Liabilities:AccountsPayable     500.00 USD
  Assets:Bank:Checking           -500.00 USD
 
; Early-payment discount alternatives for INV-10455 — mutually exclusive with
; the standard payment above AND with each other. To take 2/10 instead: delete
; (or comment out) the 2025-09-01 payment, then uncomment EXACTLY ONE option.
; Never leave both options active — that clears AP twice.
;
; Option 1: Record the discount as other income
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
;   invoice: "INV-10455"
;   due: "2025-09-04"
;   Liabilities:AccountsPayable     500.00 USD
;   Assets:Bank:Checking           -490.00 USD
;   Income:Discounts:Payables       -10.00 USD
;
; Option 2: Reduce the original expense directly
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
;   invoice: "INV-10455"
;   due: "2025-09-04"
;   Liabilities:AccountsPayable     500.00 USD
;   Assets:Bank:Checking           -490.00 USD
;   Expenses:Supplies:Paint         -10.00 USD
 
; Partial before as-of; final $800 payment is AFTER 2025-09-04
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
  invoice: "INV-9001"
  due: "2025-09-09"
  Expenses:Parts                 1200.00 USD
  Liabilities:AccountsPayable   -1200.00 USD
 
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
  invoice: "INV-9001"
  due: "2025-09-09"
  Liabilities:AccountsPayable     400.00 USD
  Assets:Bank:Checking           -400.00 USD
 
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
  invoice: "INV-9001"
  due: "2025-09-09"
  Liabilities:AccountsPayable     800.00 USD
  Assets:Bank:Checking           -800.00 USD
 
; Unpaid — not yet due as of 2025-09-04
2025-08-15 * "Bright Office Co" "INV-220" ^INV-220
  invoice: "INV-220"
  due: "2025-09-14"
  Expenses:Office                 300.00 USD
  Liabilities:AccountsPayable    -300.00 USD
 
; Unpaid — due today (as-of == due)
2025-08-20 * "Helix Industries" "INV-440" ^INV-440
  invoice: "INV-440"
  due: "2025-09-04"
  Expenses:Parts                  200.00 USD
  Liabilities:AccountsPayable    -200.00 USD
 
; Unpaid — 30 days overdue as of 2025-09-04
2025-07-06 * "Metro Hardware" "INV-77" ^INV-77
  invoice: "INV-77"
  due: "2025-08-05"
  Expenses:Parts                  150.00 USD
  Liabilities:AccountsPayable    -150.00 USD
 
; Overpayment — credit balance (not an amount due; see edge cases)
2025-08-01 * "Credit Vendor" "INV-C1" ^INV-C1
  invoice: "INV-C1"
  due: "2025-08-20"
  Expenses:Parts                  100.00 USD
  Liabilities:AccountsPayable    -100.00 USD
 
2025-08-18 * "Credit Vendor" "Overpay INV-C1" ^INV-C1
  invoice: "INV-C1"
  due: "2025-08-20"
  Liabilities:AccountsPayable     150.00 USD
  Assets:Bank:Checking           -150.00 USD
 
; Missing due metadata — still open; age into a separate bucket, do not drop
2025-08-12 * "No Due Co" "INV-ND" ^INV-ND
  invoice: "INV-ND"
  Expenses:Office                  50.00 USD
  Liabilities:AccountsPayable     -50.00 USD

Query partite aperte (beanquery 0.2.0 supporta HAVING SUM(number) < 0; non supporta il confronto di un inventory a 0 con COST(SUM(position)) != 0):

SELECT payee,
       any_meta('invoice') AS invoice,
       any_meta('due')     AS due,
       -SUM(number)        AS outstanding
WHERE account ~ "^Liabilities:AccountsPayable"
  AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) < 0
ORDER BY due, payee;

Righe previste al 2025-09-04 (derivate indipendentemente dalle transazioni: fattura − pagamenti datati ≤ data di riferimento; Forest azzera a 0 ed è assente):

payeeinvoicedueoutstanding
No Due CoINV-ND(vuoto)50.00
Metro HardwareINV-772025-08-05150.00
Helix IndustriesINV-4402025-09-04200.00
Acme PartsINV-90012025-09-09800.00
Bright Office CoINV-2202025-09-14300.00

Somma dei dovuti positivi = 1.500,00. La fattura di $500 di Forest è sparita. Acme mostra ancora $800 ($1.200 − $400); il pagamento di $800 del 2025-09-05 è dopo la data di riferimento, quindi non può chiudere questo snapshot.

Riconcilia con la passività AP allo stesso taglio:

SELECT COST(SUM(position)) AS ap_balance
WHERE account ~ "^Liabilities:AccountsPayable"
  AND date <= 2025-09-04;

Previsto: ap_balance = (-1450.00 USD). Indipendentemente: dovuto aperto $1.500 meno il credito fornitore di $50 (sotto) = $1.450 dovuti → inventario passività -1450.00 USD.

Sposta la data di riferimento di un giorno dopo (date <= 2025-09-05) e riesegui la query partite aperte: la riga di Acme sparisce (pagamento finale incluso) e ap_balance diventa (-650.00 USD). Un pagamento dopo la data di riferimento non riscrive mai il report precedente.

Crediti fornitori / pagamenti eccessivi: HAVING SUM(number) < 0 mantiene solo gli importi che devi ancora. Un pagamento eccessivo porta la somma AP del gruppo a positivo. Elenca quelli separatamente—non trattare un saldo AP positivo come "importo dovuto":

SELECT payee,
       any_meta('invoice') AS invoice,
       any_meta('due')     AS due,
       SUM(number)         AS credit
WHERE account ~ "^Liabilities:AccountsPayable"
  AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) > 0
ORDER BY payee;

Previsto: una riga—Credit Vendor / INV-C1 / 2025-08-20 / credit = 50.00 (hai pagato $50 in eccesso).

due: mancante: INV-ND appare ancora nel report delle aperte con una scadenza vuota. Raggruppala in un bucket dedicato missing-due (sotto); non ometterla mai silenziosamente.

Elenca le Fatture con PDF Allegati:

SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;

Dove Vedere l'AP in Fava

  • Stato Patrimoniale: Vai su Stato PatrimonialeLiabilitiesAccountsPayable per vedere il saldo totale e approfondire i dettagli delle transazioni.
  • Giornale: Filtra il giornale per account:Liabilities:AccountsPayable o un link specifico come ^INV-xxxx per vedere il ciclo di vita completo di una fattura.
  • Documenti: Con option "documents" impostato, Beancount scopre i file sotto quell'albero. Le viste Documenti di Fava e il plugin link_documents (vedi sopra) collegano quei file alle transazioni che portano i metadati document:.

Anzianità AP, Rotazione e Consapevolezza del Flusso di Cassa

Programma di anzianità (esportazione riproducibile + bucket): beanquery 0.2.0 può emettere le righe partite aperte sopra, ma non fornisce un'espressione integrata per bucket di anzianità sui metadati due. Esporta il report delle aperte, poi raggruppa in bucket deterministicamente contro la stessa data di riferimento.

bean-query -f csv -o open-ap.csv accounts-payable-starter.bean \
  "SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"

Colonne CSV: payee, invoice, due, outstanding.

Regola del bucket per la data di riferimento D = 2025-09-04 e il due di ogni riga (ISO YYYY-MM-DD):

CondizioneBucket
due vuotomissing-due
due > Dnot-yet-due
due == Ddue-today
1 ≤ (D − due) ≤ 301-30-overdue
31 ≤ (D − due) ≤ 6031-60-overdue
(D − due) ≥ 6161+-overdue

Python compatto (solo libreria standard) che implementa quella tabella:

from datetime import date
 
AS_OF = date(2025, 9, 4)
# Apply bucket() to each CSV row's due column (ISO YYYY-MM-DD or empty).
 
def bucket(due: str | None) -> str:
    if not due:
        return "missing-due"
    days = (AS_OF - date.fromisoformat(due)).days
    if days < 0:
        return "not-yet-due"
    if days == 0:
        return "due-today"
    if days <= 30:
        return "1-30-overdue"
    if days <= 60:
        return "31-60-overdue"
    return "61+-overdue"

Anzianità prevista per le righe aperte al 2025-09-04:

invoiceduegiorni di ritardobucketoutstanding
INV-ND(vuoto)missing-due50.00
INV-772025-08-05301-30-overdue150.00
INV-4402025-09-040due-today200.00
INV-90012025-09-09−5not-yet-due800.00
INV-2202025-09-14−10not-yet-due300.00

Scadenza-oggi non è incorporata in "corrente": due == data-di-riferimento è un bucket a sé. Non-ancora-scaduta richiede due > data-di-riferimento.

  • Indice di Rotazione AP: Acquisti Totali dai Fornitori ÷ AP Medio. Una metrica correlata, Giorni di Pagamento Fornitori (DPO), è approssimativamente 365 ÷ Indice di Rotazione.
  • Se Non Puoi Pagare in Tempo: L'AP è pensata per debiti a breve termine. Se un fornitore accetta un rimborso formale a lungo termine, riclassifica fuori dall'AP in un debito rappresentato da cambiale—mantieni la stessa identità di fattura sulla conversione così il gruppo AP si estingue.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
  invoice: "INV-1110"
  due: "2025-09-15"
  Liabilities:AccountsPayable    2000.00 USD
  Liabilities:NotesPayable      -2000.00 USD

Migliori Pratiche per l'AP in un Libro Mastro a Testo Semplice

  • Vai Senza Carta: Conserva i PDF delle fatture sotto il tuo albero documenti e allegali con la chiave di metadati document: (e caricamento Fava / link_documents quando usi Fava).
  • Riutilizza l'Identità della Fattura sui Pagamenti: Metti lo stesso invoice:, due: e ^link sulla fattura e su ogni pagamento che la salda.
  • Report Contro una Data di Riferimento: Taglia le query di partite aperte e anzianità con date <= AAAA-MM-GG così un pagamento successivo non può riscrivere uno snapshot precedente; calcola l'anzianità con la stessa D.
  • Mantieni Ordinati i Metadati: Usare coerentemente invoice:, due: e terms: migliora la ricerca, le query e le revisioni finanziarie.
  • Competenza fino in Fondo: Se vuoi report AP utili, impegnati a tenere i tuoi libri per competenza. Beancount e Fava gestiscono i saldi per competenza nello Stato Patrimoniale senza plugin speciali.

Starter Copia-Incolla: Fattura Fornitore + Pagamento

Per il flusso di lavoro completo delle partite aperte (saldate + parziali + non pagate, data di riferimento, anzianità), preferisci lo starter AP scaricabile sopra. La coppia minima fattura+pagamento qui sotto mostra comunque l'identità su entrambe le gambe—apri prima i conti (o includi queste aperture nel tuo libro mastro principale). I metadati document: opzionali sono omessi qui così non è richiesto nulla al di fuori del libro mastro.

option "operating_currency" "USD"
 
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
 
; ---- Bill ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
  invoice: "INV-10455"
  due: "2025-09-04"
  Expenses:Supplies:Paint         500.00 USD
  Liabilities:AccountsPayable    -500.00 USD
 
; ---- Payment (no discount) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
  invoice: "INV-10455"
  due: "2025-09-04"
  Liabilities:AccountsPayable     500.00 USD
  Assets:Bank:Checking           -500.00 USD

Con Beancount 3.2.3 e beanquery 0.2.0, caricare questo starter non produce errori, il conto AP azzera a zero e la query fattura+scadenza restituisce un singolo gruppo (Forest Paint Supply, INV-10455, 2025-09-04) il cui importo è vuoto (saldata)—non una riga fatturata più una riga di pagamento orfana (…, null, null).


Questa guida è a scopo educativo e non costituisce consulenza fiscale, legale o finanziaria.

Riferimenti e Letture Aggiuntive:

Condividi questo articolo

Fonte: https://beancount.io/it/blog/2025/08/20/what-is-accounts-payable

Pubblicato: 20 agosto 2025

Ultimo aggiornamento: 15 settembre 2026