Vendor Invoice Booking & 3-Way Match
Last updated September 28, 2026
Everything you need to know about booking vendor invoices, how the match works, what the statuses mean, and what you can do at each stage.
Overview
RDash now lets you book invoices at the item level — capturing exactly which items are being billed, at what quantity and rate, and checking them against the purchase order and goods received (GRN) before payment. This replaces the old total-amount-only booking.
There are two booking flows:
- Against Order — invoice is linked to a purchase order. Match runs against the order and GRN.
- Against Non-Order — no order linked. Match does not run.
Match status is always shown Match status is always computed and displayed regardless of validation configuration. Validation rules control whether booking is blocked or warned — they do not affect match status.
Booking an Invoice
How to start
- Go to Vendor Order → Vendor Invoice and click Add Invoice.
- In the Add Invoice dialog, choose the flow: — Against Order: select Order Number → PO Number → Invoice Type, then confirm. — Against Non-Order: select Invoice Type only, then confirm.
- The Booking page opens pre-filled with the dialog selections. Clicking Cancel at the Add Invoice dialog returns you to the Invoice List page.
Other entry points
| Entry point | Behaviour |
| Task Manager → Create Request → Vendor Invoice | Hover Vendor Invoice → choose Against Order or Against Non-Order → select project → Add Invoice dialog opens automatically. |
| Manage Vendor → Vendor Invoice page | Select Project Name → Order → PO → Invoice Type. Vendor Name field is not shown on the booking form (vendor is already known). |
| Manage Client → Client Invoice page | Select Project Name → Order → PO → Invoice Type. Vendor Name field is not shown (you are the vendor; client is fixed for the project). |
| Vendor Order → Order Detail → Invoice page | No Against Order / Non-Order selection — you are already inside an order. In the Add Invoice dialog, the order is pre-filled; select PO Number and Invoice Type, then the booking page opens. |
Invoice Types
| Type | When to use | Match applied | GRN checked | Special field |
| Advance Invoice | Pre-delivery payment before goods arrive | Per order type config — if 3-way is configured, GRN checks are skipped for advance invoices | No — GRN check skipped | — |
| RA Invoice | Running account / progressive billing on long contracts | Per order type config | Yes (if 3-way) | Billing Period (mandatory) |
| Final Invoice | Standard / final bill for goods or services | Per order type config | Yes (if 3-way) | — |
Advance invoices and GRN Advance invoices are not blocked by a missing GRN — they run 2-way match only. However, advance invoice quantities do count against the GRN pool. If you book an advance of 50 qty and a GRN of only 30 arrives, a subsequent Final invoice of 20 qty will fail the GRN check (GRN available = 30 − 50 = −20). GRN must reach at least 70 (advance 50 + final 20) for the Final invoice to pass.
How 3-Way Match Works
3-way match verifies that what you're billing aligns with what you agreed to buy (the order) and what you actually received (the GRN), before the invoice is approved for payment.
The three order item values that get matched
| Item value | Compares | Applies to |
| Order leg | Invoice qty / rate / amount vs order line | 2-way and 3-way |
| GRN leg | Invoice qty vs cumulative GRN received | 3-way only |
Matching criteria
| Setting | What it does |
| No Match | Match does not run. Status shows "—" (Not applicable). |
| 2-Way Match | Each invoice item checked against the order on quantity, rate, and base amount. GRN not read. |
| 3-Way Match | Each invoice item checked against both the order and the cumulative GRN received. |
Validations are snapshotted at order creation The matching criteria and exceed toggles that apply to an invoice are captured when the order is created — not when the invoice is booked. Changing the config later only affects new orders, not existing ones.
Validation rules
Your admin configures blocking rules per order type. When a toggle is on, invoicing above that value is blocked. When off, it is allowed.
| Toggle | Available under |
| Block invoice item quantity to exceed GRN quantity | 3-Way only |
| Block Editing GRN Qty less than invoiced qty on a created GRN | 3-Way only (subset of above) |
| Block invoice item quantity to exceed order quantity | 2-Way and 3-Way |
| Block invoice item rate to exceed order rate | 2-Way and 3-Way |
| Block invoice item amount to exceed order amount | 2-Way and 3-Way |
Advance invoices skip GRN checks Advance invoices will skip GRN checks regardless of how the GRN toggles are configured.
Match Status
Match status is shown at two levels — on each line item, and as a summary badge on the invoice header.
Invoice-level match status
| Status | Meaning |
| Match | All invoice item values match order values. No custom items. |
| Match with exception | All ordered invoice item values match order values. Custom items present. |
| Mismatch | One or more ordered invoice item values do not match order values. |
| Not applicable | No ordered items on this invoice. All items are custom. |
Item-level match status
| Icon | Meaning |
| ✅ (no icon) | Item passes all match criteria |
| ⚠️ Caution icon | Item fails one or more match criteria (Mismatch) |
| ? icon | No match basis — custom item or No Match order type |
Custom items never cause a Mismatch Custom items can only change Match to Match with exception (when all ordered items pass). If no ordered items exist, match cannot be evaluated and shows Not applicable.
Sequence & Cumulative Columns
When multiple invoices are booked against the same order line, RDash sequences them to determine cumulative quantities and who carries a Mismatch if the order limit is crossed.
Sequencing order
- Approved invoices first — by their approval date, regardless of invoice date.
- Then by invoice date — older invoice dates come first.
- Tie-breaker: created timestamp — if two invoices share the same date, the one created first sits earlier in the sequence.
The invoice that crosses the limit carries the Mismatch If cumulative quantity exceeds the order, the invoice at the crossing point in sequence carries the Mismatch. Earlier invoices keep their Match status.
Quick example
Order quantity = 500. Three invoices booked in this order:
| Invoice | Invoice date | State | Inv Qty (Seq. Till Now) | Inv Qty (Current) | Inv Qty (Seq. Cumulative) | Match |
| inv1 | Jan 1 | Approved | 0 | 200 | 200 | Match |
| inv2 | Jan 15 | Submitted | 200 | 200 | 400 | Match |
| inv3 | Feb 1 | Pending | 400 | 150 | 550 | Mismatch |
inv3's Seq. Till Now = 400 (inv1 + inv2, the two invoices dated before it). Its Seq. Cumulative = 550 (400 + 150), which crosses the order limit of 500 by 50 — so inv3 carries the Mismatch. inv1 and inv2 are unaffected.
If inv2 is now edited down from 200 → 100, inv3 (Pending = dynamic) recomputes live: Seq. Till Now drops to 300, Seq. Cumulative becomes 450 ≤ 500 → inv3 flips to Match automatically.
Column guide
| Column | What it shows |
Inv Qty (Till Now) | Total quantity invoiced against this order item across all booked invoices, regardless of sequence. Includes Submitted, Pending Approval, and Approved. Drafts excluded. |
Inv Qty (Seq. Till Now) | Total quantity invoiced by all invoices preceding this one in the billing sequence — Approved invoices first, then by invoice date. Drafts excluded. |
Inv Qty (Current) | Quantity being invoiced on this invoice. |
Inv Qty (Cumulative) | Total quantity invoiced including this invoice, regardless of sequence. |
Inv Qty (Seq. Cumulative) | Total quantity invoiced including this invoice, in the billing sequence — Approved invoices first, then by invoice date. |
Draft invoices and the sequence
Draft invoices are outside the reserved sequence. They show live till-now and cumulative columns as a preview (computed as if the draft were submitted now), but they do not affect any other invoice's figures. Once a draft is submitted, it enters the sequence at its invoice date position and later-dated invoices recompute.
Editing Rules
Billing fields (quantity, rate, amount, line items, invoice number) can be edited while the invoice is uncommitted — Draft, Submitted, or Pending Approval. Once Approved, billing fields are immutable. To change a billing field on an Approved invoice, cancel it and book a new one.
What triggers approval reset
Some edits reset the approval process; others do not.
| Edit type | Examples | Resets approval? |
| Resets approval | Quantity, rate, amount, line items, invoice number | Yes — approval restarts from step 1 |
| Does not reset approval | Supporting documents, remarks, TDS | No — no re-approval needed |
Key invoice edit rules
- I1 — Cannot reduce invoice total below a raised payment request amount.
- I2 — Cannot change vendor, linked order, or invoice type after submission. Cancel and rebook.
- I3 — Approved billing fields are immutable. Cancel and rebook to change them.
Credit Notes
What's new in this release Previously, credit notes could only be raised against Approved invoices. From this release, you can raise a credit note while booking the invoice itself — as soon as it is Submitted, without waiting for approval.
A credit note reduces the payable amount on a booked invoice without changing the original invoice record.
- Can only be raised against Submitted or Approved invoices.
- Does not change the invoice amount — it is a separate offsetting record.
- Does not affect item-level match status — match is per line; credit notes are at the invoice level.
- Only takes effect on approval — an unverified credit note has no impact on net payable.
- If an invoice is rejected while in Pending Approval, all linked credit notes are cancelled.
- Cancelling an invoice also cancels all linked credit notes.
Net payable = Invoice amount − approved credit notes (a derived figure shown in the Credit Note section; not a change to the invoice amount itself).
Deductions
Deductions reduce the final invoice amount for penalties, de-scoping, retention, and similar reductions. They are added at booking and can be edited or deleted while the invoice is uncommitted.
- Final invoice amount = Total invoice amount − deductions.
- The "invoice amount must not exceed order amount" validation and alert are evaluated on the final (post-deduction) amount.
- Deductions do not affect item-level match status.

