> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getasset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Invoice Reconciliation

## **Overview**

Invoice Reconciliation is the process of creating Invoices, matching Transactions, and handling Refunds for a [Business](/getstarted/CoreConcepts#businesses-your-smb-customers).

It ensures the correct bookkeeping entries are made for outstanding, paid, and voided Invoices, while helping Business owners clearly see earned revenue and cash still to be collected.

***

## **Working with Invoices in Asset**

### 1. Create an Invoice

1. Call the **[Create an Invoice](/api-reference/invoice/create-an-invoice)** endpoint.

<Note>
  You can use the **[Customer Credit Balance Report](/bookkeeping/reports/customercredit)** to check available credits for a customer before creating an Invoice. This lets you apply credits immediately to reduce the amount due.
</Note>

2. Asset automatically creates a **[Journal Entry](/getstarted/CoreConcepts#journal-entry)** to record earned revenue:
   * Debit **Accounts Receivable**
   * Credit **Sales Revenue** (selected Ledger)

***

### 2. Match Payments to an Invoice

1. Call the **[Create Transactions](/api-reference/transaction/create-transactions)** endpoint to create a new Transaction in Asset. Alternatively, use a Transaction that already exists.\*
2. Call the **[Apply a Payment to an Invoice](/api-reference/invoice/apply-a-payment-to-an-invoice)** endpoint to match a Transaction to an Invoice:
   * If the Transaction amount is **less than** the Invoice amount, additional Transactions can be applied later.
   * If the Transaction amount is **greater than** the Invoice amount, the extra amount can be applied to another Invoice. If not, Asset records the excess as **Customer Credit**.
3. Asset creates a Journal Entry to record the payment date.
4. Once the sum of matched Transactions is greater than or equal to the Invoice amount, the Invoice status updates to **paid**.

\*Asset attempts to automatically match Transactions to Invoices based on description, amount, and date.

***

### 3. Refund an Invoice

1. Call the **[Refund an Invoice](/api-reference/invoice/refund-an-invoice)** endpoint.

<Note>
  Do not manually update the Invoice status to **refunded** or **partially\_refunded**. The status updates automatically when you call the Refund an Invoice endpoint.
</Note>

2. Refund rules:
   * **Partial Refund:** You must provide the line ID being refunded. Asset sets the Invoice status to **partially\_refunded**.
   * **Full Refund:** When the Refund amount equals the Invoice amount, the status updates to **refunded**.
   * Refunds **cannot exceed** the Invoice amount (the system returns an error).

3. The `refund_credit` field specifies refund type:
   * **True** → Creates a **Customer Credit Journal Entry** (Refund completed).
   * **False** → Creates a **Journal Entry** increasing **Accounts Payable** (Refund pending).

***

### 4. Match Payments to an Invoice Refund

1. Call the **[Create Transactions](/api-reference/transaction/create-transactions)** endpoint to create a new Transaction in Asset.\*
2. Call the **[Apply Transaction to a Refund](/api-reference/invoice/apply-transaction-to-a-refund)** endpoint to match a Transaction to a Refund:
   * If the Transaction amount is **less than** the Refund amount, additional Transactions can be applied later.
   * If the Transaction amount is **greater than** the Refund amount, the excess can be applied to another Refund. If not, Asset records the extra as **Uncategorized Outflow**.
3. Asset creates a Journal Entry to record the payment date.
4. Once the sum of matched Transactions is greater than or equal to the Refund amount, the Refund status updates to **completed**.

\*Asset attempts to automatically match Transactions to Refunds based on description, amount, and date.

***

<Note>
  Questions? Reach out via our [Contact form](https://www.getasset.com/get-in-touch).
</Note>
