Invoice Payment Linking
Invoice payment linking connects bank deposits to open invoices — wires, checks, and manual payments that do not auto-match. Split one deposit across invoices; status moves to Partially Paid or Paid automatically.
Key capabilities
- Link as Payment from the Transactions drawer — pick an invoice and allocate an amount
- Record Payment modal on the invoice with a scored transaction picker
- A "✨ Recommended" group surfaces the best candidate deposits first
- Split payments: one bank transaction allocated across multiple invoices
- Partial payments: multiple transactions applied to one invoice over time
- Each payment records an allocated amount, a currency, and an effective payment date that can differ from the transaction's date
- Automatic status transitions: open → partially paid → paid
- Over-allocation protection — you can never allocate more than a transaction's unallocated balance
- Allocations are shared with bill payments, so a transaction's remaining balance reflects both
- Posting a payment moves the transaction's journal entry to Accounts Receivable
- Fully paying a Stripe-issued invoice notifies Stripe it was paid out-of-band
- Cash Receipts tab: weekly deposits received vs. applied vs. unapplied, with dismiss/restore for handled rows
How it works
You start from either side — a bank transaction or an invoice — and allocate an amount. DayZero checks the transaction still has enough unallocated balance, creates a payment record, recomputes how much of the invoice is now paid, and flips its status. Fully paying a Stripe invoice also tells Stripe it was settled out-of-band.
flowchart TD
start{"Start from"} -->|"Transaction"| link["Link as Payment"]
start -->|"Invoice"| rec["Record Payment (scored picker)"]
link --> alloc["Allocate amount to invoice(s)"]
rec --> alloc
alloc --> check{"Within unallocated balance?"}
check -->|"No"| block["Blocked: over-allocation"]
check -->|"Yes"| pay["Create payment + post to A/R"]
pay --> status["open > partially paid > paid"]How to use it
- From Transactions: open a deposit and click Link as Payment — choose the invoice and enter the amount to allocate.
- From Invoices: open an invoice and click Record Payment — the picker loads candidate deposits, with the best matches under Recommended.
- Select a transaction; the amount pre-fills to its remaining unallocated balance. Adjust it down for a partial payment.
- Optionally set a Payment Date to override the transaction's date as the effective settlement date, then click Add Payment.
- For a split payment, link the same transaction to several invoices, entering a different amount each time.
- Invoice status updates automatically as payments are linked.
- Use the Cash Receipts tab on the Invoices page to reconcile weekly deposit batches and work through unapplied amounts.
Pro tips
- Let the Recommended group do the work — DayZero ranks likely deposits first, so the right transaction is usually at the top.
- For a check that covers several invoices, record it against each invoice separately; the picker shows the shrinking "Available" balance so you don't over-allocate.
- Set the Payment Date when the deposit cleared on a different day than you're recording it — reporting uses the effective payment date.
- A transaction's unallocated balance accounts for both invoice and bill payments, so a deposit you've partly applied to a bill still shows the correct remaining amount here.
- Use Cash Receipts when a client deposits multiple checks in one bank deposit — see the week's received-vs-applied totals and clear the unapplied list in one pass.
- Dismiss cash-receipt rows you've intentionally left unapplied so the reconciliation list reflects real work remaining; restore them if you change your mind.
In-depth guide
The payment record
Linking creates a payment record — a link between an invoice and a bank transaction. Each record carries:
- An allocated amount
- A currency (defaulting to USD)
- An effective payment date
Because the amount is an allocation rather than the whole transaction:
- One deposit can fund several invoices (split).
- One invoice can be funded by several deposits (partial).
Match suggestions
The picker ranks candidate (transaction, invoice) pairs and surfaces the strongest matches in Recommended, including fuzzy name matching between counterparty and customer. High-confidence matches can auto-link; others appear as suggestions you accept or reject. When one deposit may pay several invoices, DayZero can also suggest split allocations across open invoices for the same customer.
Allocation limits and validation
Before a payment is created, DayZero runs these checks:
- Existence: the business, invoice, and transaction all exist.
- Eligibility: the invoice can still receive payment (it is open or partially paid).
- Unallocated balance: the absolute transaction amount minus everything already allocated to invoice payments and bill payments.
- Over-allocation guard: the action is rejected if your amount exceeds that unallocated balance.
The Record Payment modal does the same in your browser — it pre-fills the unallocated balance and shows Available so you rarely hit the error.
Status transitions and accounting impact
After a payment posts, the invoice's total paid is recompared to its total:
- At or above total → fully paid.
- Below total → partially paid.
- Settled through Stripe → paid through Stripe instead.
Two accounting effects follow:
- Linking a payment updates the underlying transaction's journal entry so the cash is recognized against Accounts Receivable.
- If a now-fully-paid invoice was issued through Stripe, DayZero notifies Stripe it was paid out-of-band so the two systems stay in sync.
Cash Receipts reconciliation
The Cash Receipts tab builds a weekly report (default: the last 12 weeks) showing:
- Total deposits received
- How much was applied to invoices and bills
- The unapplied remainder, with a per-transaction list of income that still has an unapplied balance
Drill into a week, or Dismiss / restore transactions you've deliberately left unapplied — so the list reflects work that still needs matching.