Bills
Bills track what you owe vendors from capture through payment. Enter them manually, forward them by email, or extract them with AI — then move each bill to Paid while DayZero posts the AP journal entries that keep aging accurate.
Key capabilities
- Multiple entry paths: manual draft, AI extraction from documents, bulk CSV import, or auto-created from a purchase order/transfer
- Seven-state lifecycle (draft, pending_approval, forecasted, received, partially_paid, paid, canceled) with capability gating per state
- One-time and recurring bill types, with recurring templates that auto-generate future bills
- Partial payments that track the amount paid and a live remaining balance, flipping status to Partially Paid then Paid
- Vendor credits applied against a bill to reduce the net balance due alongside cash payments
- AP aging report bucketed by vendor (Current, 1-30, 31-60, 61-90, 91+ days past due)
- Bill metrics (total due, total balance due) across all open bills
- Bank-transaction payment matching with confidence scoring, plus split one payment across many bills
- Contract comparison that stamps each bill with a contract-match status (feeds AP approval)
- Three-way match (PO ↔ receipt ↔ invoice) with quantity/price variance flags on PO-sourced bills
- Document attachments (PDF/image) kept on the bill for the audit trail
- Optional payment-method label (Wire Transfer, ACH, Check, Credit Card) for reporting
- Optional AP approval routing via an explicit Send for Approval action — a per-business toggle (off by default) that holds a bill in Pending Approval until it's signed off
How it works
A bill is created and, when the approval workflow is off, marked received (posting to AP). When approval is on, a cleaned-up draft is explicitly Sent for Approval (Pending Approval, not yet in the ledger) and only posts to Received once approved. Either way the bill is then paid down by one or more transactions until the balance is zero.
flowchart TD
create["Create (manual / AI / CSV / PO)"] --> draft["draft / forecasted"]
draft --> toggle{"AP approval enabled?"}
toggle -->|"Off (default)"| received["received (posts to AP)"]
toggle -->|"On: Send for Approval"| pending["pending_approval (not in ledger)"]
pending -->|"approved"| received
pending -->|"rejected"| canceled["canceled"]
received --> partial["partially_paid"]
partial --> paid["paid"]
received --> paid
draft --> canceledHow to use it
- Open Bills under the Payables sidebar group.
- Click New Bill to enter one manually, or use the Bill Inbox to convert an emailed/AI-extracted draft.
- Pick the vendor, enter the amount, expense account (ledger), bill number, and dates (received and due).
- Save — a received bill posts its journal entry and starts showing in AP aging; a draft waits until you mark it received.
- To pay, open the bill and use Record Payment, choosing the matching bank transaction and amount. Partial amounts are allowed.
- Use the search and filter controls to narrow by vendor, status, payment method, or linked journal entry.
- Review the AP aging view regularly to catch overdue balances before late fees hit.
Pro tips
- Recording a payment requires a real bank transaction — DayZero links the bill to that transaction's journal entry rather than inventing cash movement, so reconcile your bank feed first.
- Removing a payment only un-links the transaction; it never deletes the bank transaction, and the bill's status recalculates back to Received or Partially Paid.
- Use payment matching to auto-find likely payments, then bulk-approve the high-confidence suggestions instead of matching by hand.
- Split a single bank payment across several bills with the batch process — it validates the total against the transaction's unallocated balance before creating any payment, so an over-allocation fails cleanly.
- The payment-method label is informational only — it never touches the ledger, so it stays editable even after a bill is paid.
- Bills that come from a purchase order carry a three-way match status; Quantity variance or Price variance means "ordered ≠ received ≠ billed" and is worth investigating before paying.
- When a PO-linked bill is received with a total that differs from the PO, landed COGS for that PO's items is automatically trued up to the billed actuals — the Inventory → Landed COGS tab tags those snapshots Billed actuals.
- Keep vendor contracts current — contract-match status drives whether AP approval auto-approves or escalates.
In-depth guide
Lifecycle & balances
- Edit / delete / cancel — allowed only while in Draft, Pending Approval, Forecasted, or Received.
- Pending Approval — the bill is held for sign-off and is not in the general ledger yet; it posts its journal entry only once approved and moved to Received. Rejecting it moves the bill to Canceled.
- Payments — accepted only in Received or Partially Paid.
- Remaining balance — the bill amount minus payments applied (cash side).
- Balance due — also subtracts applied vendor credits and is 0 for Paid or Canceled.
- Overdue — true when the bill is unpaid and its due date is in the past.
Accounting impact (double-entry)
- Mark received (or create as received with an expense account): Debit the chosen expense ledger, Credit Accounts Payable.
- Record payment: Debit Accounts Payable, Credit Cash. When payments reach the bill amount, status flips to Paid.
- Cancel: status moves to Canceled and any associated journal entries are removed.
Journal entries are only created when the business has the ledger integration enabled.
AI bill capture (OCR / extraction)
- Inputs — AI extraction accepts pasted text, PDFs, images, Excel, or a multi-bill CSV and returns draft bills for review before anything is created.
- Auto-matching — fuzzy-matches vendor and expense ledger from extracted bill data; low-confidence matches stay in review.
- On approval — with the approval workflow off (default), reviewed drafts are created as received bills so they post a journal entry immediately. With approval on, clean up the draft and Send for Approval so it posts only after sign-off.
- Inbox flow — see AP Emails and AP Automation & Bill Capture.
Payment matching
- Scan — payment matching surfaces likely links between unallocated outgoing bank transactions and open bills.
- Suggestions — each suggestion has a confidence score; accept individually, auto-match high-confidence pairs, or bulk-approve the strong matches.
- Accepting — creates the real payment and updates the bill.
- Payment priority — the AI payment-priority utility can rank which open bills to pay first.
Related features & AP approval
- Per-business toggle — approval routing is opt-in per business and off by default. With it off, a cleaned-up bill posts straight to Received. With it on, you explicitly Send for Approval to hold the bill in Pending Approval before it touches the ledger. Toggle it on the business's AP Approval page.
- Send for Approval — submitting a draft for approval captures the resolved expense ledger and amount, moves the bill to Pending Approval, and starts the workflow. The bill posts its journal entry (moving to Received) only when approved; rejection cancels it.
- Workflows — when approval is on and a published workflow is present, the bill's amount and contract-match status are read to route it to auto-approve, operations, or advisor + owner tiers — see AP Approval Workflow.
- Downstream — bills also feed AP aging, cash forecasting, and (when sourced from inventory) the PO/transfer three-way match and landed-COGS true-up from billed actuals.
Edge cases
- A bill can exist without a vendor — useful for quick drafts, but contract matching and approval assignment need a vendor.
- Bulk CSV import creates entries as Draft, Forecasted (when marked for approval), or Received (when marked create-as-received, which requires a resolvable expense account per row).
- Force-deleting a bill with payments removes the link records but not the underlying bank transactions.