Managing refundable security deposits incorrectly is one of the most common accounting mistakes small businesses make — and it can silently distort your financial statements, inflate your AR balance, and create GST compliance headaches.
This guide gives you a verified, step-by-step system for recording, tracking, refunding, and forfeiting security deposits inside Zoho Books — with clean journal entries, the right account structure, and zero AR confusion.
Who this is for: Business owners, accountants, and finance teams using Zoho Books in India who collect refundable deposits from customers (rental businesses, SaaS companies, service providers, equipment lessors, and more).
Before touching Zoho Books, you need to understand the accounting principle that governs everything else in this guide:
A refundable security deposit is not income. It is not a customer credit. It is a liability — money you owe back to the customer.
It belongs on your Balance Sheet, not your Profit & Loss statement or your Accounts Receivable ledger.
Correct Journal Entry at Receipt:
DR Bank / Cash Account ₹1,000
CR Security Deposit Liability ₹1,000
Getting this wrong — even slightly — leads to:
The good news: Zoho Books gives you everything you need to handle this correctly. There's no dedicated "security deposit" module, but the combination of a custom liability account, journal entries, and optional invoice workflows creates a clean, auditable system.
| Component | The Issue | The Fix |
|---|---|---|
| Deposit Classification | Must be a liability, not revenue | Create a Current Liability account |
| Invoice Separation | Deposit must not inflate AR | Use a separate invoice or direct JE |
| Credit Confusion | Excess payments create "unused credits" | Reclassify via journal entry |
| Lifecycle Management | Need clean paths for refund AND forfeiture | Follow the phase-by-phase workflow below |
| GST Compliance | Deposit is not a supply — GST should not apply | Set item tax to "None / Exempt" |
Do this once. Every deposit transaction you record from this point forward will flow correctly.
Navigation (two valid paths depending on your UI version):
Left Sidebar → Accountant → Chart of Accounts → + New AccountLeft Sidebar → Settings → Chart of Accounts → + New AccountBoth paths lead to the same screen. Use whichever appears in your Zoho Books interface.
Account Settings:
├── Account Type : Current Liability
├── Account Name : Security Deposits Received
├── Account Code : 2300 (or your preferred code)
├── Description : Refundable deposits held from customers
└── Save
⚠️ Critical: Do NOT use "Other Income" or any revenue account type. The moment a deposit touches your P&L, your financial statements are incorrect. This account must be a Current Liability — it represents money you owe back.
This step makes invoicing faster and ensures the deposit always posts to the right account automatically.
Navigation: Items → + New Item
Item Settings:
├── Item Type : Service
├── Item Name : Security Deposit (Refundable)
├── Account : Security Deposits Received ← your new liability account
├── Tax : None / Exempt
└── Save
GST Note for India: Under Indian GST law, a refundable security deposit is not "consideration for a supply" under Section 2(31) of the CGST Act, 2017. It is therefore not taxable at the time of receipt. Set the tax field to None or Exempt. GST only becomes relevant if the deposit is later adjusted against a taxable supply — in which case, raise a proper GST invoice for that supply separately.
Choose the method that best fits how your customer pays.
Best for: Businesses that want a formal invoice document for the deposit, or where the customer pays the deposit and service fee separately.
Why it works: The deposit invoice posts directly to the liability account, keeping it completely isolated from your service invoice AR.
New Invoice:
├── Customer : [Customer Name]
├── Item : Your Service / Product
├── Amount : ₹10,000
├── GST : ₹1,800 (18% example)
└── Total Due : ₹11,800
New Invoice:
├── Customer : [Customer Name]
├── Item : Security Deposit (Refundable) ← item from Step 1.2
├── Amount : ₹1,000
├── Tax : NONE
└── Total Due : ₹1,000
When the customer pays ₹12,800 total:
Payment 1: Apply ₹11,800 → Service Invoice → PAID ✓
Payment 2: Apply ₹1,000 → Deposit Invoice → PAID ✓ → Posts to Liability
Result:
├── Service Invoice : PAID ✓
├── Deposit Invoice : PAID ✓
├── Customer AR Balance : ₹0 ✓
└── Liability Account : ₹1,000 CR ✓
Note: The deposit invoice will appear in the customer's AR balance until it is paid — this is correct behavior. The customer does owe you ₹1,000 until they transfer it.
Best for: When the customer pays a single lump sum and you want zero impact on the customer's AR ledger.
Why it works: You record the service invoice and payment normally, then handle the deposit entirely through a journal entry — no AR involvement, no unused credits, no confusion.
Service Invoice : ₹11,800 (₹10,000 + GST)
Record Payment : ₹11,800 → Invoice marked PAID ✓
Navigation: Quick Create (top-right icon) → Journal Entry
(Alternative: Accountant → Journal → + New Journal)
⚠️ Important: When your journal entry involves a bank or cash account, set the Journal Type to "Cash Based Journal" — otherwise Zoho Books will not allow cash/bank account lines in the entry.
┌─────────────────────────────────┬──────────┬──────────┐
│ Account │ Debit │ Credit │
├─────────────────────────────────┼──────────┼──────────┤
│ Bank / Cash Account │ ₹1,000 │ │
│ Security Deposits Received │ │ ₹1,000 │
└─────────────────────────────────┴──────────┴──────────┘
Notes : "Refundable security deposit – [Customer Name] – [Date]"
Reference : Customer name + Invoice number
Result:
├── Customer AR Balance : ₹0 (completely untouched) ✓
├── No unused credits : ✓
├── Bank Account : +₹1,000 ✓
└── Liability Account : ₹1,000 CR ✓
This is the recommended standard operating procedure. One journal entry, zero AR confusion, clean balance sheet, clear audit trail.
Best for: When the customer insists on a single receipt document for the full amount paid.
Limitation: Requires an extra reclassification step and may temporarily show an AR debit. Use Method B where possible.
+ New → Customer Payment (without applying to any invoice)
Amount: ₹12,800
Creates: Advance / Unused Credit of ₹12,800
Open the advance payment → Apply to Invoice
Apply: ₹11,800 → Service Invoice marked PAID ✓
Remaining advance: ₹1,000 (shows as unused credit ← needs reclassification)
┌─────────────────────────────────┬──────────┬──────────┐
│ Account │ Debit │ Credit │
├─────────────────────────────────┼──────────┼──────────┤
│ Accounts Receivable (Customer) │ ₹1,000 │ │
│ Security Deposits Received │ │ ₹1,000 │
└─────────────────────────────────┴──────────┴──────────┘
⚠️ This requires careful reconciliation. Method B is preferred.
When the customer relationship ends and the deposit is refunded in full (or in part):
Navigation: Quick Create → Journal Entry (set type to Cash Based Journal)
┌─────────────────────────────────┬──────────┬──────────┐
│ Account │ Debit │ Credit │
├─────────────────────────────────┼──────────┼──────────┤
│ Security Deposits Received │ ₹1,000 │ │
│ Bank / Cash Account │ │ ₹1,000 │
└─────────────────────────────────┴──────────┴──────────┘
Notes: "Refund of security deposit – [Customer Name] – [Date]"
Result:
├── Liability Account : ₹0 (fully cleared) ✓
├── Bank Account : -₹1,000 ✓
├── Customer AR : Unaffected ✓
└── P&L Impact : None ✓
Navigation: + New → Expense
├── Paid Through : Bank Account
├── Account : Security Deposits Received (Liability)
├── Amount : ₹1,000
├── Customer : [Customer Name] (for reference)
└── Notes : Security deposit refund – [Date]
When a customer breaches a contract, causes damage, or otherwise forfeits their deposit, the liability must be converted to income — but this must be done correctly.
Navigation: Accountant → Chart of Accounts → + New Account
├── Account Type : Other Income
├── Account Name : Forfeited Security Deposits
├── Account Code : 7100 (or preferred)
└── Description : Security deposits forfeited by customers
┌─────────────────────────────────┬──────────┬──────────┐
│ Account │ Debit │ Credit │
├─────────────────────────────────┼──────────┼──────────┤
│ Security Deposits Received │ ₹1,000 │ │
│ Forfeited Security Deposits │ │ ₹1,000 │
└─────────────────────────────────┴──────────┴──────────┘
Notes: "Deposit forfeited – [Customer Name] – [Reason] – [Date]"
Result:
├── Liability Account : ₹0 (cleared) ✓
├── Other Income : +₹1,000 ✓ (appears correctly in P&L)
├── Customer AR : Unaffected ✓
⚠️ GST Advisory on Forfeiture: CBIC has indicated that forfeited deposits may be treated as consideration for a supply in certain circumstances, making them potentially taxable. Do not treat forfeited deposits as GST-exempt income without consulting your Chartered Accountant. Reference: Various AAR rulings post-2018 and CBIC guidance on Section 2(31) of the CGST Act.
As your deposit volume grows, you need a system to track which deposit belongs to which customer.
Security Deposits Received (Parent)
├── Security Deposit – Customer A
├── Security Deposit – Customer B
└── Security Deposit – Customer C
Create each as a sub-account under "Security Deposits Received" in your Chart of Accounts.
Add a custom field called "Deposit Reference" or "Customer Name" to your Journal Entry template. Filter the liability account register by this field to see all deposits by customer.
Tag each deposit journal entry with the customer name or a deposit reference code. Run reports filtered by tag to see outstanding deposits at any time.
Customer pays a deposit
│
▼
Is it mixed with a service payment?
│
YES │ NO
│ └──→ Method A (Separate Invoice)
▼
Use Method B (Direct JE to Liability)
│
▼
Deposit lifecycle event occurs?
│
┌────┴────┐
│ │
REFUND FORFEIT
│ │
▼ ▼
DR Liability DR Liability
CR Bank CR Other Income (+ consult CA re: GST)
| Transaction | Debit | Credit |
|---|---|---|
| Deposit received | Bank / Cash | Security Deposits Received (Liability) |
| Deposit refunded in full | Security Deposits Received | Bank / Cash |
| Deposit forfeited | Security Deposits Received | Forfeited Deposits (Other Income) |
| Partial refund | Security Deposits Received | Bank / Cash (partial amount) |
| Deposit adjusted against invoice | Security Deposits Received | Accounts Receivable / Invoice |
| ❌ Wrong Approach | ✅ Correct Approach | Why It Matters |
|---|---|---|
| Recording as excess payment / unused credit | Direct JE to liability account | Unused credits distort AR and confuse reconciliation |
| Using "Other Income" account | Use "Current Liability" account | Income classification inflates revenue incorrectly |
| Applying GST to the deposit | No GST — it's not a supply | Incorrect GST filings create compliance risk |