Skip to content

Commit 81558f7

Browse files
[ADD] Subscription: Created new page 'Subscriptions and payments'
X-original-commit: d334486 Co-authored-by: Felicia Kuan <[email protected]>
1 parent a194fae commit 81558f7

File tree

3 files changed

+147
-0
lines changed

3 files changed

+147
-0
lines changed

content/applications/sales/subscriptions.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,3 +284,4 @@ Odoo. Sales orders with defined recurring plans automatically become subscriptio
284284
subscriptions/automatic_alerts
285285
subscriptions/scheduled_actions
286286
subscriptions/reports
287+
subscriptions/automatic_payments
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
====================================
2+
Subscriptions and automatic payments
3+
====================================
4+
5+
By default, the **Subscriptions** app will automatically generate quotations and invoices for
6+
customers, but it can also support automatic payments. Setting up automatic payments requires
7+
additional configuration, including choosing an automatic payment provider and either setting up a
8+
customer portal or an **eCommerce** website. Here's an overview of how to get started.
9+
10+
Setting up a payment processor that supports automatic payments
11+
===============================================================
12+
13+
Setting up automatic recurring payments requires using a payment provider that supports
14+
tokenization. Tokenization lets customers save their payment details, such as credit card or banking
15+
account information, for automatic billing. The following payment providers support tokenization:
16+
17+
- :doc:`Adyen <../../finance/payment_providers/adyen>`
18+
- :doc:`Authorize.net <../../finance/payment_providers/authorize>`
19+
- :doc:`Flutterwave <../../finance/payment_providers/flutterwave>`
20+
- :doc:`Razorpay <../../finance/payment_providers/razorpay>`
21+
- :doc:`Stripe <../../finance/payment_providers/stripe>`
22+
- :doc:`Xendit <../../finance/payment_providers/xendit>`
23+
24+
Here are the steps to setting up automatic payments.
25+
26+
#. Choose a payment provider that supports tokenization.
27+
#. Follow the provider's own setup guide to create an account and begin configuring their API
28+
credentials in Odoo.
29+
#. :ref:`Enable <payment_providers/add_new>` the payment provider.
30+
#. :ref:`Configure the payment methods <payment_providers/payment_methods>` for the chosen payment
31+
provider.
32+
#. :ref:`Configure the tokenization <payment_providers/tokenization>` for the chosen payment
33+
provider.
34+
35+
How customers can set up automatic payments
36+
===========================================
37+
38+
Once these steps are complete, payment providers will be able to create tokens with customers' saved
39+
payment details during the checkout process. Saved payment details can then be used for future
40+
online or recurring subscription charges. Customers will also be able to log into their
41+
:doc:`customer portal <../../general/users/portal>` and enter their payment information there.
42+
43+
Some payment providers will automatically save customers' payment information as part of the
44+
checkout process. Others will give them the option to save their information for future payments. If
45+
customers choose not to save their payment information, they will not be able to make automatic
46+
payments.
47+
48+
.. important::
49+
Building an **eCommerce** website requires the :doc:`Website <../../websites/website>` app.
50+
51+
What happens if an automatic payment fails?
52+
===========================================
53+
54+
When an automatic payment fails, the sales order is updated with:
55+
56+
- a :guilabel:`Payment Failure` tag
57+
- the :guilabel:`Contract in exception` checkbox ticked (in the :guilabel:`Subscription` section of
58+
the :guilabel:`Other Info` tab).
59+
60+
Being marked :guilabel:`Contract in exception` prevents scheduled actions from running, which keeps
61+
the system from accidentally double-charging the customer if the automatic payment actually went
62+
through. Because the status of the payment failed to register with the system, users must manually
63+
check if the payment has been made before automatic payments and other scheduled actions can resume.
64+
65+
To do this, navigate to :menuselection:`Subscriptions app --> Subscriptions --> Quotations`. Click
66+
into the desired subscription, then check the Chatter to see if the payment was made.
67+
68+
If the payment *was not* made, first enter :doc:`developer mode <../../general/developer_mode>`.
69+
Then, click the :guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract in
70+
exception`. Reload the sales order and confirm that the :guilabel:`Payment Failure` tag is gone.
71+
72+
If the payment *was* made, a new invoice must be made and posted manually. This automatically
73+
updates the next invoice date of the subscription. Once the invoice is created, enter
74+
:doc:`developer mode <../../general/developer_mode>` and navigate to the new sales order. Click the
75+
:guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract in exception`.
76+
Reload the sales order and confirm that the :guilabel:`Payment Failure` tag is gone.
77+
78+
.. figure:: renewals/contract-in-exception.png
79+
:alt: The contract in exception option selected with the payment failure tag shown.
80+
81+
The :guilabel:`Contract in exception` option selected with the :guilabel:`Payment Failure` tag
82+
shown.
83+
84+
In both cases, once the :guilabel:`Contract in exception` checkbox is no longer ticked, Odoo handles
85+
renewals automatically again. If the subscription remains in :guilabel:`Payment Failure`, it is
86+
ignored by Odoo until the sales order is closed.
87+
88+
.. seealso::
89+
- :doc:`../../finance/payment_providers`
90+
- :doc:`../../general/users/portal`

content/applications/sales/subscriptions/renewals.rst

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ Status`.
5252
:align: center
5353
:alt: Renewal quotation in the Odoo Subscriptions application.
5454

55+
<<<<<<< a194fae96cff697df277a56ff92a7c90720770db
5556
.. important::
5657
On rare occasions, automatic payments can fail to register properly, which results in a
5758
:guilabel:`Payment Failure` tag on the sales order and the :guilabel:`Contract in exception`
@@ -89,6 +90,61 @@ Status`.
8990
handles renewals automatically again. If the subscription remains in :guilabel:`Payment Failure`,
9091
it is ignored by Odoo until the sales order is closed.
9192

93+
||||||| 4a6611b0c43007655928c3f8ce0597a49940f289
94+
Additionally, once the :guilabel:`Renewal Quotation` is confirmed, an :guilabel:`MRR` smart button
95+
also appears at the top of the sales order.
96+
97+
.. image:: renewals/mrr-smart-button.png
98+
:align: center
99+
:alt: MRR smart button in the Odoo Subscriptions application.
100+
101+
When clicked, Odoo reveals an :guilabel:`MRR Analysis` page, detailing the monthly recurring revenue
102+
related to this specific subscription.
103+
104+
.. important::
105+
On rare occasions, automatic payment can fail, which results in a *Payment Failure* tag on the
106+
top-right of the sales order, if there is an error in the payment method.
107+
108+
This is done to prevent the system from charging the customer again the next time a scheduled
109+
action is run. Because the status of the payment is unknown, Odoo requests a manual operation to
110+
check if the payment has been made, before the payment can be used again.
111+
112+
To do this, navigate to :menuselection:`Subscriptions app --> Subscriptions --> Quotations`.
113+
Click into the desired subscription, then check the *Chatter* to see if the payment was made.
114+
115+
If the payment was **not** made, first enter :doc:`debug mode <../../general/developer_mode>`.
116+
Then, click the :guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract
117+
in exception`. Reload the sales order, and the :guilabel:`Payment Failure` tag is gone.
118+
119+
If the payment **was** made, a new invoice must be made and posted manually. This automatically
120+
updates the next invoice date of the subscription. Once created, enter :doc:`debug mode
121+
<../../general/developer_mode>`, and navigate to the new sales order. Click the :guilabel:`Other
122+
Info` tab, and untick the checkbox next to :guilabel:`Contract in exception`.
123+
Reload the sales order, and the :guilabel:`Payment Failure` tag is gone.
124+
125+
.. figure:: renewals/contract-in-exception.png
126+
:align: center
127+
:alt: The "contract in exception" option selected with the "payment failure" tag shown.
128+
129+
The :guilabel:`contract in exception`` option selected with the :guilabel:`payment failure`
130+
tag shown.
131+
132+
In both cases, once the :guilabel:`Contract in exception` option is no longer selected, Odoo
133+
handles renewals automatically again. If the subscription remains in *payment failure*, it is
134+
skipped by Odoo until the sales order is closed.
135+
136+
=======
137+
Additionally, once the :guilabel:`Renewal Quotation` is confirmed, an :guilabel:`MRR` smart button
138+
also appears at the top of the sales order.
139+
140+
.. image:: renewals/mrr-smart-button.png
141+
:align: center
142+
:alt: MRR smart button in the Odoo Subscriptions application.
143+
144+
When clicked, Odoo reveals an :guilabel:`MRR Analysis` page, detailing the monthly recurring revenue
145+
related to this specific subscription.
146+
147+
>>>>>>> c648f87b34820913608e1971199fc8aec4972bfe
92148
.. seealso::
93149
- :doc:`../subscriptions`
94150
- :doc:`../sales/sales_quotations/create_quotations`

0 commit comments

Comments
 (0)