From dc7c7d2a2907bde987644f3d79589e0c88fc691a Mon Sep 17 00:00:00 2001 From: larm-odoo Date: Thu, 6 Nov 2025 15:49:17 -0500 Subject: [PATCH] [ADD] Expenses: Expense cards --- content/applications/finance/expenses.rst | 1 + .../finance/expenses/expense_cards.rst | 337 ++++++++++++++++++ .../expenses/expense_cards/card-form.png | Bin 0 -> 23477 bytes 3 files changed, 338 insertions(+) create mode 100644 content/applications/finance/expenses/expense_cards.rst create mode 100644 content/applications/finance/expenses/expense_cards/card-form.png diff --git a/content/applications/finance/expenses.rst b/content/applications/finance/expenses.rst index 7eeb31fa13..c0643f79b9 100644 --- a/content/applications/finance/expenses.rst +++ b/content/applications/finance/expenses.rst @@ -7,6 +7,7 @@ Expenses .. toctree:: expenses/expense_categories + expenses/expense_cards expenses/log_expenses expenses/expense_reports expenses/approve_expenses diff --git a/content/applications/finance/expenses/expense_cards.rst b/content/applications/finance/expenses/expense_cards.rst new file mode 100644 index 0000000000..c19cbf1547 --- /dev/null +++ b/content/applications/finance/expenses/expense_cards.rst @@ -0,0 +1,337 @@ +============= +Expense cards +============= + +Odoo offers physical and virtual expense cards, allowing for better expense tracking and management. +Using expense cards allows for real time expense management, creating expense records as soon as an +expense transaction occurs, allowing management greater visibility of expense costs as they are +incurred. + +The elimination of the need to :doc:`actively create expense records ` allows for a +more streamlined expense workflow, with records automatically created as purchases are made. + +To use expense cards, first a :ref:`card is configured `, then it is +:ref:`activated `. Before employees can make purchases with their expense +card, :ref:`funds must be added ` to the company's Stripe account. Once there is +money available in the account (this typically takes 2-3 business days for the transfer to Stripe), +employees can use their expense cards, and the money is pulled from the company's Stripe account. + +.. important:: + To create and use expense cards, the **Accounting** app **must** be installed. + +.. note:: + Expense cards act like pre-paid debit cards, as they can **only** be used with a connected Stripe + account, and **only** if funds are added to that account, to be drawn from. + +.. seealso:: + :doc:`../payment_providers/stripe` + +Availability +============ + +Expense cards are currently available for the following countries: + ++-------------+-------------+-------------+-------------+ +| Austria | Belgium | Croatia | Cyprus | ++-------------+-------------+-------------+-------------+ +| Estonia | Finland | France | Germany | ++-------------+-------------+-------------+-------------+ +| Greece | Ireland | Italy | Latvia | ++-------------+-------------+-------------+-------------+ +| Lithuania | Luxembourg | Malta | Netherlands | ++-------------+-------------+-------------+-------------+ +| Portugal | Slovakia | Slovenia | Spain | ++-------------+-------------+-------------+-------------+ + +Only companies located in one of these countries are able to create and use expense cards. Check + +.. _expenses/card-settings: + +Configuration +============= + +Two settings must be configured to use expense cards. Navigate to :menuselection:`Expenses app --> +Configuration --> Settings`. Tick the box next to :guilabel:`Expense Card`, then click +:guilabel:`Save`. The :guilabel:`Settings` page reloads, and two fields now appear beneath the +:guilabel:`Expense Card` option. + +A :guilabel:`Journal` field with :guilabel:`Stripe Issuing` appears, populating the field. This is +the default journal, and it is **not** recommended to alter this unless instructed by the accounting +department. + +Next, click the text link :guilabel:`terms and conditions` and an :guilabel:`Expense Cards Terms and +Conditions` pop-up window loads, with all the details of the agreement. After this has been read, +click :guilabel:`Close`, then tick the checkbox next to :guilabel:`I confirm agreeing to the terms +and conditions` to accept the terms, then click :guilabel:`Save`. + +.. note:: + The terms and conditions **must** be agreed to use expense cards. + +After agreeing to the terms and conditions, click :icon:`oi-arrow-right` :guilabel:`Connect` that +appears after the terms and conditions checkbox is ticked. A *Stripe* website loads, allowing for +the configuration of the company's Stripe account with Odoo's **Expenses** app. + +Follow the steps to sign in to the Stripe website with the proper account credentials, and configure +any requested information. When completed, return to Odoo using the :icon:`oi-arrow-left` +:guilabel:`Return to Odoo` link on the left side of the website, and click :guilabel:`Save`. + +A green :guilabel:`Verified` tag now appears next to :icon:`oi-arrow-left` :guilabel:`Refresh`, +indicating the account is properly configured. + +.. _expenses/card-configure: + +Configure expense cards +======================= + +To create and configure a new expense card, click :menuselection:`Cards` in the main **Expenses** +app menu to view the :guilabel:`Cards` dashboard. Click :guilabel:`New` and a blank +:guilabel:`Cards` form loads. Enter the following information on the form: + +- :guilabel:`Card Name`: The first line on the card form is blank, and displays `Draft`. Enter a + name for the card in this field. This does **not** need to be a person's name, it can be something + descriptive to explain the use of the card. + + .. example:: + An employee is going on a week-long business trip to Berlin to visit many clients. The employee + needs to pay for meals, transportation, and other business-related expenses. Since this is a + short trip, a virtual card is created to capture all the expenses, with the name `Business Trip + - Berlin`. + + The marketing department pays for many expenses throughout the year, from email marketing + services, venue rentals for events, promotional merchandise, etc. Since the expenses do not + have an end date, and it is used for an entire department, a physical card is ordered with the + name `Marketing`. + +- :guilabel:`Cardholder`: Select the person using the card from the drop-down menu. Once selected, + the person's name populates the :guilabel:`Draft` field, above :guilabel:`Cardholder`. +- :guilabel:`Update info`: Next to the cardholder's name, click :guilabel:`Update info` and a + :guilabel:`Cardholder Configuration` pop-up window loads. Update the cardholder's name, birthday, + phone number, email, and physical address. All the requested information **must** be populated, as + it is used to create the expense card with Stripe, and to verify the cardholder's identity, when + needed. If any information is missing from this form, the card **cannot** be created, and an error + appears when creating or ordering the card. +- :guilabel:`Type`: Click the radio button next to the desired *type* of expense card. Options are: + + - :guilabel:`Physical`: A physical card is printed and mailed out to the employee. If selected, a + :guilabel:`Delivery Address` field appears. Using the drop-down menu, select the employee or + company address the card is mailed to. + - :guilabel:`Virtual`: Virtual cards are available instantaneously once the card configuration is + completed. + +- :guilabel:`Company`: Select the company the expenses are associated with using the drop-down menu. + Each card must be associated with a single company, and are **not** available for use between all + companies or branches in the database. +- :guilabel:`Stripe Journal`: :guilabel:`Stripe Issuing` populates this field by default, and cannot + be modified. + +Next, configure the following fields in the :guilabel:`Spending Policy` tab of the card form: + +- :guilabel:`Countries`: Using the drop-down menu, select the countries the card is able to be used + in. The company's country location populates this field, by default. All other countries the + employee may travel to or purchase expensable items from, should be included in this list. +- :guilabel:`Categories`: If the expense card is limited to purchase items within a specific + *category*, select them using the drop-down menu. If this field is left blank, the card may be + used for *any* expense category. + + .. example:: + A company issues an expense card that is only authorized for airline, train, and taxi travel + expenses. + + To configure this, click into the :guilabel:`Category` field, and click :guilabel:`Search + more...` at the bottom. In the :guilabel:`Search: Categories` pop-up window, click into the + search bar and click :guilabel:`Transportation services` in the :icon:`fa-filter` + :guilabel:`Filters` column. + + Next, tick the checkboxes next to the desired transportation categories. In this example, only + :guilabel:`Railroads`, :guilabel:`Passenger Railways`, :guilabel:`Taxicabs Limousines`, and + :guilabel:`Airlines Air Carriers` are selected. + + Click :guilabel:`Select` and the selected transportation categories now populate the + :guilabel:`Categories` field. + +- :guilabel:`Limit`: Configure the two spending limits for the card. The first configuration sets + the total expense amount allowed during a specific time period. Using the drop-down menu after the + word :guilabel:`per`, select the time period the limit applies to. The available options are: + :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, :guilabel:`Year`, or :guilabel:`All Time`. + Next, enter the maximum amount allowed for the selected time period. + + Next, set the *per transaction* limit. Enter the maximum amount that can be charged on the expense + card in a single transaction in the field. + + .. example:: + A company allows employees to purchase airline tickets that are less than $1,000.00 total. + Additionally, there is a monthly cap of $3,000.00 for all expenses. + + The company would configure the limit as follows: `3,000.00` per :guilabel:`Month` and + `1,000.00` per transaction. + + .. important:: + Since the company Stripe account is linked for **all** Stripe transactions, not only expenses, + card limits **must** be set to avoid large charges or transactions that may prematurely deplete + the Stripe account. + +.. image:: expense_cards/card-form.png + :alt: An expense card form filled out for transportation and food only. + +.. _expenses/card-activate: + +Activate expense cards +====================== + +Once an expense card is configured, the next step is to activate the cards. First, navigate to +:menuselection:`Expenses app --> Cards`, and the :guilabel:`Cards` dashboard loads, displaying all +expense cards in a Kanban view. + +All cards display their status on a banner in the upper-right corner of each card. Statuses are +either: + +- :guilabel:`Draft`: The card form is filled out, but the card has not been requested or activated. +- :guilabel:`Pending`: A physical card has been ordered, but not activated. +- :guilabel:`Active`: The card is able to be used. This status does **not** display a status banner + on the card. +- :guilabel:`Paused`: A card has been put *on hold* and no transactions can be processed with this + status. +- :guilabel:`Blocked`: The physical or virtual card is *cancelled* and cannot be used. + +Click on a card to activate, and the card form loads. Ensure all the fields are :ref:`configured +`, then click either :guilabel:`Order` if requesting a physical card, or +:guilabel:`Activate` if creating a virtual card. + +If a physical card is requested, the card status changes to :guilabel:`Inactive`, while it is being +printed and mailed to the selected address. Once the card arrives, follow the included instructions +to activate the card. + +If the card is a virtual card, once :guilabel:`Activate` is clicked, the status changes to +:guilabel:`Active` and it is available for use. + +Once the status of an expense card is :guilabel:`Active`, the user can use the card to purchase +expensable items, as long as the purchases are within the limits set on the card. + +.. _expenses/add-funds: + +Add funds to Stripe account +=========================== + +For employees to use their expense cards, funds must be available in the company's Stripe account, +to make purchases against. To add funds to the company's Stripe account, open the **Accounting** +app. On the :guilabel:`Stripe Issuing` Kanban card, click :guilabel:`Top-up`, and a +:guilabel:`Top-up` pop-up window loads. + +Enter the amount being transferred into the account in the :guilabel:`Amount` field. The +:guilabel:`IBAN` and :guilabel:`BIC` fields are populated according to the Stripe configuration and +cannot be changed. When configured, click :guilabel:`Topup`, and the transfer is initiated. + +.. important:: + It typically takes 2-3 business days for transfers to be processed. Funds are **not** available + until the transfer is complete. + +Using expense cards +=================== + +Using an expense card is almost identical to using any other credit or debit card. The only +difference is if a :ref:`physical card ` or a :ref:`virtual card +` is used. + +When a charge is made using an expense card, an expense record is automatically created in the +**Expenses** app, linked to the specific card. The next step is to attach the corresponding receipt. + +.. note:: + It is best proactive to take a photo of a receipt as soon as it is received, to eliminate the + risk of losing the receipt and having an expense reimbursement request denied. + +Open the expense record by navigating to :menuselection:`Expenses app --> Cards`, and click on the +specific card. Next, click the :icon:`fa-usd` :guilabel:`Expenses` smart button, and the +:guilabel:`Expenses` dashboard loads for that card. Any expense that does *not* have a receipt +attached to the record displays a :icon:`fa-credit-card` :guilabel:`Please upload the receipt.` + +Click on the desired expense record to open the detailed expense form. Click the :guilabel:`Attach +Receipt` button, and a file explorer loads. Navigate to the receipt, and click :guilabel:`Open` to +select it and attach it to the expense. + +Make any other adjustments to :ref:`the expense record `, if necessary. +Once the record is correct, click :guilabel:`Submit` to submit the receipt, or :guilabel:`Split`, if +the receipt needs to be split between multiple expenses. + +.. important:: + If a purchase is attempted that either is outside the listed countries, listed categories, or + exceeds the transaction limit or total expense limit for the specified time period, the expense + is denied and captured in the :guilabel:`Expenses` dashboard for the card, with a status of + *Refused*. + + To view the details of why the transaction was refused, click on the :icon:`fa-usd` + :guilabel:`Expenses` smart button for the card, and click on the refused transaction. The details + explaining why the transaction was refused appears in the chatter, authored by *OdooBot*. + +.. _expenses/physical: + +Physical card +============= + +When using a physical card, make charges in the same manner as a regular physical pre-paid debit +card. + +.. _expenses/virtual: + +Virtual card +============ + +If using a virtual card, there is one additional step to access the card information to use for +purchases. + +To obtain the card information, navigate to :menuselection:`Expenses app --> Cards` and click on the +virtual card being used. Next, click into the :guilabel:`Card Details` tab, and two items appear: +the expense card number, with only the last four digits displayed, and the expiration date. + +To view the full details, click :icon:`fa-eye` :guilabel:`View Details`, and a :guilabel:`Two-Factor +Authentication` pop-up window loads. Enter the six-digit authentication code that is texted to the +cardholder's phone number. The card appears in the pop-up window, with all the information +displayed: the card number, expiration date, and security code. When done, close the window by +clicking :guilabel:`X`. + +Lost cards +========== + +When a physical card is lost, or if credentials for a virtual card have been compromised, the cards +must be updated in the **Expenses** app so they cannot be used. This is referred to in Odoo as +*blocking*. + +To stop any charges on a card, navigate to :menuselection:`Expenses app --> Cards`, and click on the +specific card being deactivated. On the card form, click the :guilabel:`Block` button, and a +:guilabel:`Block a Card` pop-up window loads. + +Click into the field next to :guilabel:`Reason`, and select the reason the card is being blocked. +The options are :guilabel:`Lost`, :guilabel:`Stolen`, or :guilabel:`Other`. After making a +selection, click :guilabel:`Block`, and the card is unable to be used, and a red :guilabel:`Blocked` +banner appears on the card in the :guilabel:`Cards` dashboard view. + +.. example:: + An employee is given a virtual expense card to use for an upcoming business trip. The employee + uses this card to purchase an airline ticket and a hotel room, one month before the scheduled + trip. + + A week before the trip, they receive an email from the airline, explaining there has been a data + breach, and customer names, contact information, and purchase details including credit card + numbers have been leaked. + + The employee reaches out to their manager, explaining the situation. The manager opens the + virtual expense card, and blocks the card using the reason :guilabel:`Other`. Then the manager + issues another virtual card for the employee to use for their business trip. + +Temporary card pauses +===================== + +When an employee is out of office for an extended period of time, such as a vacation, or an illness, +it is recommended to temporarily deactivate their card to prevent any fraudulent charges. This is +referred to in Odoo as *pausing* a card. + +To pause a card, navigate to :menuselection:`Expenses app --> Cards`, and click on the specific card +being paused. On the card form, click :guilabel:`Pause`, and the card is unable to be used until it +is activated. + +.. example:: + An employee in the sales department has a physical expense card to use for client meetings. They + recently welcomed a new child, and will be out of office on parental leave for three months. + + On the employee's last day, their manager opens the expense card record, and clicks + :guilabel:`Pause`. When the employee returns to work, the manager opens the expense card form and + clicks :guilabel:`Active` to reactivate the card. diff --git a/content/applications/finance/expenses/expense_cards/card-form.png b/content/applications/finance/expenses/expense_cards/card-form.png new file mode 100644 index 0000000000000000000000000000000000000000..d6af435b64675eb467db90645cf73168e31ec556 GIT binary patch literal 23477 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