Skip to content

[ADD] POS: customer credit as payment method #13700

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 18.0
Choose a base branch
from

Conversation

LoredanaLrpz
Copy link
Contributor

task-3090872

@robodoo
Copy link
Collaborator

robodoo commented Jun 13, 2025

Pull request status dashboard

@LoredanaLrpz LoredanaLrpz force-pushed the 18.0-customer-credit-lrpz branch 2 times, most recently from fa3edff to cade9f6 Compare June 20, 2025 08:20
@LoredanaLrpz LoredanaLrpz marked this pull request as ready for review June 20, 2025 08:20
@LoredanaLrpz LoredanaLrpz requested a review from emmi-odoo June 20, 2025 08:20
@C3POdoo C3POdoo requested a review from a team June 20, 2025 08:22
Copy link
Contributor

@emmi-odoo emmi-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice doc, @LoredanaLrpz , I added some suggestions to reduce the amount of pronouns and turn passive sentences into active ones. You could also harmonize your headers a bit, some contain nouns only (Configuration, Default credit limit) while others have active verbs (Settle due accounts).

@LoredanaLrpz LoredanaLrpz force-pushed the 18.0-customer-credit-lrpz branch from cade9f6 to 66d0259 Compare July 1, 2025 09:15
@LoredanaLrpz LoredanaLrpz requested a review from emmi-odoo July 1, 2025 09:15
@LoredanaLrpz LoredanaLrpz force-pushed the 18.0-customer-credit-lrpz branch from 66d0259 to f397bcf Compare July 1, 2025 09:17
@LoredanaLrpz LoredanaLrpz force-pushed the 18.0-customer-credit-lrpz branch from f397bcf to 4fbece5 Compare July 1, 2025 12:35
@LoredanaLrpz LoredanaLrpz requested a review from auva-odoo July 1, 2025 12:35
Copy link
Contributor

@auva-odoo auva-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @LoredanaLrpz , thank you for your work on this! I had a few notes and suggestions after reviewing and testing the instructions:

  • The Payment methods doc page is outdated, and since it is a central part of this doc, I think it'd be a good idea to update it as well (we could create another task for this if you prefer, of course!).
  • When I tested this in 18.0 with just the Invoicing app, I didn't have the Customer statements smart button on the customer form, nor the Settle due accounts option in the hamburger menu that you mention later on in this doc. Note that this changed somewhere along the way (it works in 18.4 with just Invoicing). Note that "Settle due accounts" becomes "Settle invoices" in 18.4 at least, I didn't check the other versions.
  • I think we should clarify somewhere that allowing customers to "purchase on credit" really just means creating an invoice that they’ll pay later. When using the Customer Credit payment method, no payment is actually registered at the time, since the invoice hasn’t been paid yet. I would make that clear.
  • I’d suggest grouping all the info about order processing, like selecting a customer, choosing a payment method, and enabling Invoice, in one section to make the workflow easier to follow.

Configuration
=============

To allow customers to pay on credit, follow these steps:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To allow customers to pay on credit, follow these steps:
To allow customers to pay on credit, :doc:`create a payment method <../payment_methods>` and configure it as follows:

I know you explain everything in the steps below, but this intro sentence makes me think we're just going to enable a feature somewhere so I think I'd clarify in this sentence that we need to configure a new payment method and configure it as explained below (and I think I'd have the two fields as bullet list items instead of numbered list items then).

Comment on lines +38 to +50
Default credit limit
--------------------

To set a maximum sales credit, follow these steps:

#. Go to :menuselection:`Accounting --> Configuration --> Settings`.
#. Scroll down to the :guilabel:`Customer Invoices` section.
#. Check the :guilabel:`Sales Credit Limit` checkbox.
#. Enter the desired maximum amount in the :guilabel:`Default Credit Limit` field.

A warning appears next to the customer’s name if the cart value surpasses the established maximum
limit or if the customer has already exceeded it. However, the warning does **not** prevent the sale
from proceeding.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should actually be documented in the Accounting section, maybe on the Payments doc page. Dallas has asked that we create a task for this and he will take care of it; I know it's not super convenient because you'll probably want to refer to that doc here but let's go with that solution and create another PoS task to add the doc link when that's done.

You could of course keep the last two sentences here, maybe with the other 'order processing" info (customer - payment method - enable Invoice)


When a customer pays on credit, the purchase amount is considered a debt until the customer pays it
off. To keep track of a customer’s debt, consult their customer statement in the backend or their
profile in an open session. To access the **customer statements** report, follow these steps:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
profile in an open session. To access the **customer statements** report, follow these steps:
profile in an open session. To access the :guilabel:`Customer Statement` report, follow these steps:

since it's the name of the report (and an UI element)

Comment on lines +64 to +66
.. warning::
Without an invoice generated for the order, the :guilabel:`Customer Statements` report remains
empty.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be moved to the top of the section since it's such an essential step in the order processing for this particular feature.

EDIT: Actually, it might be better to group all of the flow steps (select the payment method, select the customer, make sure to enable the Invoice check box) in one place to avoid confusion.

Comment on lines +31 to +33
.. note::
To effectively monitor and manage the customer’s unpaid debt, either create an invoice for the
order or activate the :doc:`Accounting application <../../../finance/accounting>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In 18.0, I think you actually need both to be able to access a customer's customer statements (see my general comment)? so I would rephrase this sentence and maybe reorganize a bit.

I would also add a doc link to the Receipts and invoices doc page


Settlement can be made by paying the generated invoice, but also from an open POS session. To do so,

#. Click :guilabel:`Customers`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#. Click :guilabel:`Customers`.
#. Click :guilabel:`Customer` and search for the desired customer in the list.

Settlement can be made by paying the generated invoice, but also from an open POS session. To do so,

#. Click :guilabel:`Customers`.
#. Click the :icon:`fa-bars` (:guilabel:`hamburger menu`) icon next to the desired customer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#. Click the :icon:`fa-bars` (:guilabel:`hamburger menu`) icon next to the desired customer.
#. Click the :icon:`fa-bars` (:guilabel:`hamburger menu`) icon next to the customer's name.

(since we already said "desired customer" above)

#. Choose the payment method.
#. Click :guilabel:`Validate`.

Finally, click :guilabel:`Yes` to confirm the deposit of the payment received from the customer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be another step in the list (in which case, I'd remove "Finally")

Comment on lines +16 to +17
#. Keep the :guilabel:`Journal` field blank, as there is no journal entry tied to a specific bank or
cash journal created when using the payment method.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is confusing, especially given what you say about accounting entries below (see my comment about that also): If we don't set the journal, how can we decide if we're using outstanding accounts to create journal entries or not?

Comment on lines +19 to +29
Once configured, a credit sale is completed by selecting this payment method after a customer's
purchase. This action automatically generates the following accounting entries:

- A debit in Accounts Receivable.
- A credit in the Income account.

Upon later settling the accounts (i.e., receiving payment from the customer), the following
accounting entries are made:

- A debit in an Outstanding Account.
- A credit in Accounts Receivable.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Once configured, a credit sale is completed by selecting this payment method after a customer's
purchase. This action automatically generates the following accounting entries:
- A debit in Accounts Receivable.
- A credit in the Income account.
Upon later settling the accounts (i.e., receiving payment from the customer), the following
accounting entries are made:
- A debit in an Outstanding Account.
- A credit in Accounts Receivable.
Once configured and added to the list of guilabel:`Payment methods` field in the :ref:`POS settings <add ref>`, you can select the payment method to validate a customer's credit purchase.
  • I know the POS settings part is mentioned on the main Payment methods doc page but I think it's worth repeating here since it's so short.
  • See also my general comment about grouping "order processing" steps in one place (select customer - select payment method, enable Invoice).
  • Cf my comment above about leaving the Journal field blank
  • Even after we've clarified this journal field thing, I think we should remove this info about journal entries: I really don't think we need to get into this topic in the PoS doc; this is a standard invoice/payment flow, which is documented in the Accounting section.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants