# Correcting Customer Deposit and Vendor Prepayment Balance Discrepancies in XoroERP

### Overview

In certain situations—such as exchange rate differences, credit adjustments, extra card charges, or accounting discrepancies (for example during T2 / CRA filing)—clients may need to correct balances related to:

* Customer Deposits
* Vendor Prepayments

A common misunderstanding is that these adjustments should be made directly through Journal Entries using the system-generated **Customer Deposit** or **Vendor Prepayment** accounts.

However, these accounts are system-controlled and restricted for transactional use only. Direct Journal Entry postings to these accounts can cause reconciliation and reporting mismatches.

This article explains the correct troubleshooting approach and resolution methods.

***

### Symptoms

You may encounter this issue when:

* The accounting team identifies discrepancies in Customer Deposit or Vendor Prepayment balances
* A user attempts to post a Journal Entry directly to the system-generated deposit/prepayment account
* The Trial Balance or Balance Sheet appears correct
* The Customer Deposit Centre or Vendor Prepayment Centre totals do not reconcile
* Exported reports (e.g., Excel) do not match financial statements
* The client wants to adjust overall liability or asset balances without impacting specific customers or vendors

***

### System Behavior – Customer Deposit Account

A **Customer Deposit Account** is a **Liability Account**.

It is used when:

* A customer pays money in advance
* Payment is received before an invoice is issued
* The amount is not yet applied to a specific invoice

This amount does not belong to the company yet. It remains a liability until:

* It is applied to an invoice, or
* It is refunded

**Customer Deposit accounts are tightly integrated with customer-level transactions and are not standalone general ledger accounts.**

They are directly connected to:

* Customer Profiles
* Invoices
* Credit Notes
* Refunds
* Payment Applications

The system tracks:

* Which customer made the payment
* The amount paid
* Whether the deposit is applied or unapplied
* The remaining balance per customer

This ensures:

* Accurate customer balances
* Correct Accounts Receivable (AR) aging
* Proper liability reporting in the Balance Sheet
* Accurate customer statements

{% hint style="info" %}
**Because deposits are customer-specific liabilities, they must always be recorded through customer-linked transaction**s.
{% endhint %}

***

#### Why You Cannot Select It in a Journal Entry

Journal Entries are general ledger postings. They are not linked to specific customers or vendors.

Customer Deposit and Vendor Prepayment accounts are:

* Sub-ledger controlled
* Customer/vendor linked
* System-restricted

Allowing direct Journal Entry posting would break the linkage between:

* General Ledger
* AR/AP Sub-ledger
* Customer/Vendor-level reporting

***

### Root Cause

Customer Deposit and Vendor Prepayment accounts are system-generated accounts.

Although they appear in the Chart of Accounts, they are:

* Locked for direct operational use
* Restricted to system-driven transactions
* Internally mapped to customer/vendor-level sub-ledgers

Behind the scenes:

* Vendor Prepayment falls under the Asset primary type
* Customer Deposit falls under the Liability primary type

If a Journal Entry is created directly (especially via backend support) using these accounts:

* The Trial Balance or Balance Sheet may reflect the adjustment
* But the Customer Deposit Centre or Vendor Prepayment Centre totals will not match
* Exported reports will show discrepancies

This creates reconciliation issues between financial statements and sub-ledger reports.

***

### Resolution

**Scenario A: Correcting Overall Asset or Liability (Not Customer/Vendor Specific)**

If the goal is to adjust overall balances and not a specific customer or vendor:

Step 1: Create a Placeholder Account

For Customer Deposit correction (Liability side):

* Create a new account
* Primary Type: Liability
* Account Type: Other Current Liability
* Example name: “Deposit Adjustment Placeholder”

For Vendor Prepayment correction (Asset side):

* Create a new account
* Primary Type: Asset
* Account Type: Other Current Asset
* Example name: “Prepayment Adjustment Placeholder”

Step 2: Create a Journal Entry

* Post the differential amount using the placeholder account
* Adjust the corresponding Asset or Liability account accordingly

This method corrects overall balances without interfering with system-controlled sub-ledger accounts.

***

**Scenario B: Adjusting Customer Deposit for a Specific Customer**

To Decrease Customer Deposit:

* Create an Invoice for the specific customer
* Apply the existing Customer Deposit against that invoice

To Increase Customer Deposit:

* Create a new Customer Deposit transaction
* Assign it to the correct customer

Important:\
There is no supported way to change Customer Deposit balance without affecting a specific customer. Backend Journal Entries are not recommended.

***

**Scenario C: Adjusting Vendor Prepayment for a Specific Vendor**

To Decrease Vendor Prepayment:

* Create an Expense Bill for the specific vendor
* Apply the Vendor Prepayment to the bill

To Increase Vendor Prepayment:

* Create a new Vendor Prepayment transaction
* Assign it to the correct vendor

There is no supported way to change Vendor Prepayment balance without affecting a specific vendor.

***

### Best Practices

* Never use system-generated Customer Deposit or Vendor Prepayment accounts in manual Journal Entries
* Use placeholder accounts under:
  * Other Current Asset (for asset corrections)
  * Other Current Liability (for liability corrections)
* Always determine whether the correction is:
  * Overall balance level, or
  * Customer/vendor specific

Use transaction-based corrections for all customer/vendor-level adjustments to maintain reconciliation between:

* General Ledger
* Sub-ledger reports
* Financial statements
* Customer/Vendor centres
