Expenses

The Expenses module enables you to manage and track your organization's business related expenses, whether they are goods, or services. Expense records also support billing them to your clients, so you can pass along the costs directly through your invoices. Effective use of the expense module can help you track and monitor your organization's cash flow, and keep up with your taxes.

Expenses Module View

When you select the Expenses module from the navigation menu on the left hand side of the screen, you will be taken to the table view listing and sorting all available expense records.

From the table view you can sort expense records by the various status filters on top of the table. You can use the Filter text box to search for an expense number, vendor, or amount. A More Actions menu to the right of each entry in the table shows a list of available management actions you can take against an expense record, such as editing, cloning to a new expense record, cloning to a new recurring expense record, archiving, or deleting.

Viewing/Editing an Expense

Simply click on an expense number from the table to view/edit that expense.

The view/edit panel for an expense record has all the details about the record broken into four sections, as follows:

Details

Notes

Additional Info

Note that when you view your reports, expenses will be categorized by the currency of the expense/vendor, not the currency selected under "Convert Currency". If you wish to consolidate your profit and loss totals under one currency, you should select your own currency for each expense record, and use the converted amount for the expense amount, leaving any reference to a foreign currency out of the record details.

Taxes

The taxes section is where you control how taxes are applied to the expense.

Expense Tax Rates must first be enabled under Settings > Tax Settings for expense taxes to work (or it will say "Item tax rates are disabled").

The Taxes panel on the bottom right of the expense edit screen will let you choose one of these options:

Here's a video of enabling the Expense Tax Rates, adding a new Expense Category, and recording a new expense using these options:

More Actions dropdown menu

You can use the More Actions dropdown menu (if on the expenses table view) or the Save dropdown arrow menu in the top right corner of the expense edit panel, to see a list of management actions that can be taken against the expense record:

These additional options will be visible only if Should be invoiced is checked:

Documents

The Documents tab supports uploading files such as documents, pictures, and more to allow you to share them with the client when attached to an invoice (if enabled) or with other users of the admin portal.

Lifecycle of an Expense

The following describe the lifecycle of an expense record

Logged

An expense's default state is Logged, when an expense is created. An expense is marked logged whether or not you have reported that you have paid the vendor for the expense yet.

Pending

An expense that has Should be Invoiced enabled, making it billable to a client, is automatically changed to a Pending state.

Invoiced

An expense record is automatically changed to Invoiced after the expense has been added to a client invoice. Note that an expense is marked Invoiced simply by being on an invoice, and its state doesn't change whether or not that invoice has been paid for by the client. The overview tab of the expense record's preview panel will link you to the invoice that expense is attached to.

Archived

An expense record can manually be archived, which simply hides it from view in the table or list of active expenses. The details of archived expenses are still included in reports. You can view archived expenses by changing filters in the table view, and you can use the "Restore" function to return an archived expense to its former state.

Deleted

An expense record can manually be deleted, which will remove it from view, and remove it from any reports as well. Deleted expense records can be seen by changing your filters when viewing the table or list of expenses, and using the "Restore" function can return the deleted expense record to its former state.

Tips

Expense Inbound Email (Self Host Only)

This feature allows you to configure an e-mail address to accept attachments from vendors, clients and internal users which can then be processed using Mindee to perform data extraction and create expense records. Zugferd xml files are also supported and are able to be automatically parsed and converted into an expense.

The system works by configuring an e-mail address to accept attachments, the attachments (and the email body text) are stored on file and an expense record is created. The system will attempt to extract data from the document and insert it into the expense record.

The following settings are available:

Inbound Providers

Mailgun

To ensure delivery, you have to configure all used mailgun regions with a recieving configuration using store & notify.

Create and setup your mailgun account Prepare your DNS settings for inbound mail processing, by setting up necessary MX records Create a receiving route using store and notify 3a. Go to Receiving Section and click on "Create Route" 3b. Create your route by selecting your mailbox configured in invoiceninja and add notify endpoint /api/v1/mailgun_inbound_webhook

Brevo

To ensure delivery you have to configure brevo inbound parsing according to: https://developers.brevo.com/docs/inbound-parse-webhooks

Create and setup your brevo account Prepare your DNS settings for inbound mail processing, by setting up necessary MX records Register the webhook via the brevo api to the following notify endpoint: /api/v1/brevo_inbound_webhook?token=brevo-api-token SetUp Postmark To ensure delivery you have to configure brevo inbound parsing according to: https://developers.brevo.com/docs/inbound-parse-webhooks

SetUp with Own MailServer

If you want to use your own mailbox, you have to either redirect the mail to a mailbox of one of the providers above or use a provider for inbound directly. We recommend to use one of these providers hosted on a subdomain f.ex. invoicing.xxx.com directly or to use the auto-generated mailbox of postmark when you are using redirect.

SetUp Mindee OCR

To parse a document IN can use OCR solutions like Mindee. Mindee offers to process documents and guess the contents using AI. Each account has 250 pages for free, which makes it very suiteable for small busineses using self-hosted.

Use the following .env variable to configure your mindee api key:

MINDEE_API_KEY=your-api-key

Want to contribute? Edit this page on GitHub!