Recording transactions
The four transactions you will post most often. Each scenario below walks you through the exact screen, the exact fields, which accounts move, and how to verify the posting landed.
All of these live in Finance → Vouchers tab
(/finance, then click the Vouchers tab at the top).
One rule that applies to every voucher
Before you post anything, glance at the colour strip under the page title. Green says Posting Period Open — you're fine. Amber says Locked, red says Closed. You cannot post a voucher dated inside a locked or closed period. If the strip isn't green, switch the voucher date to a day that falls inside an open period, or ask your GM / Finance Manager to reopen the period.
1. Supplier invoice (supplier bills the agency)
When to use: A supplier has sent you a bill — a hotel invoice, a ticketing DMC invoice, a transport vendor's charge. You want to record that you owe them the money. No cash has moved yet.
This is not a payment
Use this workflow to record the liability (what you owe). To actually pay the supplier, you come back later and post a Payment voucher (§2 of the supplier payment flow below — not this page).
Where
Finance → Vouchers tab → click the Journal button inside Voucher Entry (top-right of the voucher type grid).
Steps
- In the Voucher Entry panel, click Journal.
- In the Memo / Narration field type, e.g.,
Hotel Al Haram invoice INV-2326 — 40 rooms, Makkah, Mar 2026. Be specific — this text is what shows up in the Day Book and the audit trail. - Pick Entry Date — the date on the supplier's invoice, not today.
- Add two lines:
- Line 1 (debit the expense): pick the correct expense account
(e.g.
5101 Hotel Purchases,5102 Flight Purchases). Put the taxable value in the Debit column. Leave Credit blank. - Line 2 (credit the supplier): pick the supplier's creditor
account. Every supplier has one that auto-creates the first time
you transact with them — the code looks like
SUPP-<id>. Put the total invoice value (taxable + GST) in the Credit column.
- Line 1 (debit the expense): pick the correct expense account
(e.g.
- If the invoice has GST you can claim (ITC), add a third line:
- Debit
1402 Input CGST/1403 Input SGST(or1404 Input IGSTfor inter-state), with the GST portion split as per the invoice. - Adjust Line 2's credit so the voucher balances — the credit to the supplier now equals taxable value + GST.
- Debit
- Fill the GST meta on the voucher form (party GSTIN, HSN/SAC, invoice number, place of supply) — these feed the GSTR-1 export.
- Verify the Total Dr = Total Cr strip at the bottom of the form turns green before you click Post.
- Click Post.
What happens behind the scenes
- A
JournalEntryrow is created with status pending. JournalLinerows are inserted for every line you entered.- The entry sits in the Approvals tab (Finance → Approvals) until a second person approves it. It does not move balances yet.
- Once approved, the expense posts to P&L and the supplier's creditor balance goes up in the Trial Balance.
Fields reference (pure INR)
| Field | Example |
|---|---|
| Supplier | Hotel Al Haram |
| Invoice number | INV-2326 |
| Invoice date | 2026-04-14 |
| Currency | INR (default) |
| Taxable value | 450,000.00 |
| GST rate | 18% (IGST if supplier is in a different state, otherwise CGST 9% + SGST 9%) |
| HSN / SAC | 996311 (hotel short-stay services) |
| TDS section | 194C for most vendor contracts, 194J for professionals. Leave blank if below threshold. |
Fields reference (foreign currency, e.g. SAR hotel bill)
See the FX handling workflow — the form behaves the same but you additionally fill Original Currency, Original Amount, and FX Rate. The posted INR values are computed from those.
"Did it work?" checklist
- [ ] The voucher shows up in Journal tab, newest first, with an
RV/JVvoucher number. - [ ] Its status chip reads
Pending(amber) orApproved(green) depending on whether maker-checker has run. - [ ] Day Book for the entry date lists the posting with the expense debit and the supplier credit.
- [ ] Open the supplier's ledger (Accounts → click the supplier row): the new invoice is visible with the correct amount as a credit increasing what we owe.
- [ ] The audit log (Admin → Audit Log, filter by
journal_entry) showsfinance.voucher.createagainst the voucher id and your user name.
2. Customer receipt (customer pays the agency)
When to use: A customer has paid you — cash, NEFT, UPI, card, or cheque — and you want to record that the money landed in your bank / cash and reduce what they owe.
Where
Finance → Vouchers tab → click the Receipt button.
Steps
- In the Voucher Entry panel, click Receipt.
- Party Type: choose
Customer. (UseBusiness Partnerfor agent receipts, orSupplieronly when a supplier is refunding you.) - Party: pick the customer from the dropdown.
- Outstanding Invoice: if the customer is paying a specific invoice, pick it from this dropdown. The amount will auto-fill with the invoice's balance due.
- Booking (fallback): use only when there is no invoice to allocate against — e.g. an advance against a booking that hasn't been invoiced yet.
- Amount: the money actually received. Pre-filled if you picked an invoice.
- Method: pick how the money came in —
Cash,Bank Transfer,Card,Cheque,UPI, orSettlement(only for inter-company GL-to-GL settlements, rare). - Collection Ledger: pick the bank or cash account the money
landed in. For a UPI payment into your HDFC current account, pick
1101 HDFC Bank — Current. For cash received at the front desk, pick1001 Cash in Hand. - Reference: the UTR, cheque number, UPI transaction id, or any other bank-side reference. This is what you'll match against the bank statement later during reconciliation.
- Click Post.
What happens behind the scenes
- Debit: the collection ledger (bank/cash) — your asset goes up.
- Credit: the customer's debtor account — what they owed you goes
down. If an invoice was selected, the invoice's
balanceDueis recalculated and the invoice may flip fromOPEN→PARTIALLY_PAID→PAID. - The booking's
paidAmount/balanceAmountare refreshed. - A
Paymentrow + aJournalEntryrow are both inserted. The journal carries voucher numberRV-nnnn.
Pending outstanding items helper
When you pick a customer, the form shows a list of Outstanding items below the party dropdown. Tick the ones this receipt covers and click Use selected total to auto-fill the amount.
On-account receipt (money received with no specific allocation)
If the customer has paid in advance and you don't know yet which invoice / booking it will settle:
- Leave Outstanding Invoice and Booking empty.
- Set Amount to the received amount.
- Post as usual.
- The receipt lands on the customer's ledger as an unallocated advance.
- When the invoice is issued later, come back to the same form, pick the customer, and use the Allocate Customer On-Account Receipt card at the bottom to assign the advance to the invoice / booking.
"Did it work?" checklist
- [ ] Bank/Cash ledger balance went up by the receipt amount (check in Trial Balance or Accounts drill-down).
- [ ] Customer's outstanding balance went down by the same amount.
- [ ] Invoice status flipped if you allocated against one.
- [ ] Day Book for today shows the receipt with the voucher number.
- [ ] AR Aging report (Reports → Aging) no longer shows this invoice in overdue if it's now fully paid.
3. Bank transfer between own accounts (Contra voucher)
When to use: You moved money from one of your own accounts to another — e.g. deposited cash into the bank, transferred from HDFC current to ICICI current, or withdrew cash from the ATM for petty expenses.
Where
Finance → Vouchers tab → click the Contra button.
Steps
- In the Voucher Entry panel, click Contra.
- From Account: the account money is leaving (e.g.
1001 Cash in Handif you're depositing cash into the bank). - To Account: the account money is landing in (e.g.
1101 HDFC Bank — Current). - Amount: the exact amount transferred.
- Date: the date the transfer hit the target account — not the initiation date.
- Description: what the movement was (e.g.
Cash deposit to HDFC from Chennai office safe). - Click Post.
Contra only shows liquid accounts
The From/To dropdowns only list current-asset payment accounts — bank, cash, wallet, digital ledgers. You cannot pick an expense account, a customer/supplier account, or a P&L line. If the account you want isn't there, you are probably looking for a different voucher type (Journal).
What happens behind the scenes
- Debit: the To Account (money in).
- Credit: the From Account (money out).
- Net effect on your overall cash position: zero. Only the split between accounts changes.
"Did it work?" checklist
- [ ] Trial Balance: the two account balances moved in opposite directions by the same amount; the sum across liquid accounts is unchanged.
- [ ] Day Book for the transfer date shows the contra voucher.
- [ ] When you run Bank Reconciliation next, the corresponding bank statement line should auto-match this contra.
4. Refund
Two flavours — who owes whom.
4a. Customer refund (we pay the customer back)
When: A customer cancelled a booking and you're returning part or all of the money they had paid.
Context
Most refunds in our business flow out of Ops → Cancellation and land as a pending finance approval (see §5 of the approving journals workflow). The procedure below is for a manual, outside-of-flow refund — e.g. a goodwill refund that never originated from a cancellation.
Where: Finance → Vouchers tab → click Payment.
Steps:
- Party Type:
Customer. - Party: pick the customer.
- Credit From: pick the bank account the refund is going out from
(e.g.
1101 HDFC Bank — Current). - Amount: the refund amount.
- Date: the date the money left your bank.
- Description:
Refund for booking #BK-nnnn — customer cancellation before cut-offor similar. - Click Post.
What happens:
- Debit: the customer's debtor account (reduces what they owe / creates a negative balance = money we owe them back).
- Credit: the bank account (asset goes down).
Verify:
- [ ] Bank balance reduced by refund amount.
- [ ] Customer's ledger shows a debit entry; if they had a credit balance (unallocated advance) from the original booking, it is now offset.
- [ ] If the refund is linked to a cancelled booking, check the booking's detail page — the paid / refunded / balance numbers should reconcile.
4b. Supplier refund (supplier pays us back)
When: A supplier cancelled a block / contract and is returning money — e.g. an airline credit note against an unused block, or a hotel refund after a group cut short.
Where: Finance → Vouchers tab → click Receipt. Set Party Type = Supplier.
Steps:
- Party Type:
Supplier. - Party: pick the supplier.
- Amount: the refund amount.
- Method / Collection Ledger: where the money landed — same rules as a customer receipt.
- Reference: the supplier's credit note number or bank UTR.
- Click Post.
What happens:
- Debit: the bank / cash account (asset up).
- Credit: the supplier's creditor account (what you owed them is now lower — or they owe you, if you'd already paid).
Verify:
- [ ] Bank balance up by refund amount.
- [ ] Supplier's ledger now shows the refund reducing their creditor balance — or flipping it negative if you had prepaid.
- [ ] AP Aging no longer shows the amount as payable (if refund offset an existing liability).
General verification (applies to every voucher above)
Every posted voucher must satisfy all five of these, otherwise something went wrong and you should stop and investigate:
- Trial Balance balances — Total Debits = Total Credits. Check at Finance → Reports → Trial Balance.
- Day Book entry exists — Reports → Day Book, filter to the voucher date, and confirm the row is there.
- Party ledger moves by the right amount — click through to the party's ledger from their record (Accounts tab or Suppliers / Customers page).
- Audit log entry exists — every posting writes a
finance.voucher.createaudit row. Admin → Audit Log, filter by entity typejournal_entry. - Voucher number is printed — the voucher carries a prefix + number
(e.g.
RV-00124). If it's blank, the posting didn't complete cleanly. Re-check the Journal tab and, if necessary, reverse and re-post.
If the period strip turned red mid-entry
The period closed or was locked while you were filling the form. The Post button will throw an error. Don't try to force the date — your entry belongs in the current open period. Either change the voucher date to today, or ask your Finance Manager to reopen the target period.