Link a Ledger Account to an Internal or External Account

You can link Internal Accounts or External Accounts to Ledger Accounts in order to automatically ledger payments and to perform Account Reconciliation.

Setup

An Internal Account can be linked to a Ledger Account by passing a ledger_account_id parameter on updating the Internal Account, or by passing ledgerable_id and ledgerable_type fields on creating or updating the Ledger Account.

An External Account can also be linked to a Ledger Account by passing a ledger_account_id parameter on updating the External Account, or by passing ledgerable_id and ledgerable_type fields on creating or updating the Ledger Account. You can also pass in a new ledger account object when creating an External Account, which will create both objects at the same time.

Account Reconciliation

Account reconciliation allows you to compare the balance of a Ledger Account to the balance of an Internal Account in the Modern Treasury dashboard. This is an important step to ensure that your ledger is in sync with the bank or provider's balance reports, and that you have not failed to ledger any transactions.

Once an Internal Account is linked to a Ledger Account, you will see the variance between the two accounts displayed on the Reconciliation Overview and Reconcile pages, as well as the Ledgers tab on the Internal Account page.

Read more on Account Reconciliation.

Default Ledgering

If you link both Internal Accounts and External Accounts to Ledger Accounts, any Payment Orders you initiate between the Internal and External Accounts will be automatically ledgered.

When creating a Payment Order between these bank accounts, if you do not specify an attached Ledger Transaction, one will be created for you. Payments increasing the Internal Account balance will debit its corresponding Ledger Account and credit the External Account's corresponding Ledger Account. Payments decreasing the Internal Account balance will credit its corresponding Ledger Account and debit the External Account's corresponding Ledger Account.

Ledger transactions are created asynchronously, so the ledger_transaction_id will not be in the payment order response. For this information, you can listen to the ledger_transaction.created or payment_order.auto_ledgered webhooks.