Ledger accounts
Overview
A general ledger (GL) account is a component of an accounting system that is used to record and categorize a company’s financial transactions. Some examples of common ledger accounts are:
- Expenses: office supplies, utilities, salaries, taxes, and so on,
- Income: sales and revenue, dividends, and so on,
- Assets: cash, inventory, and so on,
- Liabilities: accounts payable, debt, and so on.
Within an accounting system, each line item on an invoice is assigned a ledger account in order to properly categorize various expenses and income sources. In Monite, the ledger_account_id
field of products and payable line items is used to assign ledger accounts to business objects. Additionally, the entity setting accounting.ledger_account_ids.payments
specifies the ledger account for all payment records.
Monite supports two types of ledger accounts:
- External ledger accounts (
is_external = true
): These are pulled from connected accounting systems and are read-only in Monite. They reflect the chart of accounts from your external accounting software. - Internal ledger accounts (
is_external = false
): These are created and managed directly within Monite, giving you flexibility to define custom accounts for your business needs.
Products and payables pulled from the accounting system have the ledger_account_id
pre-filled. However, when new products, payables, and payment records are created in Monite, the user must manually specify the ledger_account_id
for those objects. This is required for Monite to be able to push those objects to the accounting system.
External ledger accounts
For external ledger accounts, the typical flow is as follows:
- After connecting an entity to an accounting system, wait until the initial data pull is completed.
- Call
GET /ledger_accounts
to get a list of an entity’s general ledgers pulled from the accounting system. - If an entity uses accounts payable:
- Get the line items of all payables and check if the line items have
ledger_account_id
. - If any line item is missing a value for
ledger_account_id
, prompt the user to assign the appropriate ledger account.
- Get the line items of all payables and check if the line items have
- If an entity uses accounts receivable:
- Get all products and check if they have
ledger_account_id
. - If any product is missing a value for
ledger_account_id
, prompt the user to assign the appropriate ledger account.
- Get all products and check if they have
- If an entity uses payment records:
- Prompt the user to specify a ledger account for all payment records and store the account ID in the entity setting
accounting.
.ledger_account_ids. payments
- Prompt the user to specify a ledger account for all payment records and store the account ID in the entity setting
Internal ledger accounts
You can create internal ledger accounts directly in Monite using the POST /ledger_accounts
endpoint:
The successful 201
response returns the created ledger account:
All fields in the create request are optional. Internal ledger accounts are created with is_external = false
by default.
Get ledger accounts
After connecting to an accounting system, Monite automatically retrieves a list of ledger accounts from there. Once the initial data synchronization has completed, you can call GET /ledger_accounts
to get an entity’s ledger accounts that exist in the accounting system:
Below is an example of ledger account details. Note down the IDs of the ledger accounts - these are the possible values of the ledger_account_id
field in products and payable line items.
The GET /ledger_accounts
endpoint can also be used to retrieve internal ledger accounts by setting the query parameter is_external = false
(e.g., GET /ledger_accounts?is_external=false
).
To get information about a specific ledger account, call GET /ledger_accounts/{ledger_account_id}
.
Edit a ledger account
To edit an existing ledger account, call PATCH /ledger_accounts/{ledger_account_id}
.
is_external = false
.Delete a ledger account
To delete a specific ledger account, call DELETE /ledger_accounts/{ledger_account_id}
.
is_external = false
.Assign ledger accounts to products and payable line items
Before payables can be pushed to an accounting system, each line item in all payables must have the ledger_account_id
specified. Similarly, before Account Receivable invoices can be pushed to accounting, all products listed on invoices must have the ledger_account_id
specified.
To specify an associated ledger account for a payable line item or a product, PATCH this object and provide the value for ledger_account_id
. For example:
Assign a ledger account to payment records
Before payment records can be pushed to an accounting system, the entity must specify
the ledger account for these records.
To do this, store the account ID in the the entity setting accounting.
:
The specified ledger account will be used both for manually added payment records and for payments made via Monite payment page.
This setting can be changed at any time, but it will have no impact on payment records that have already been pushed.