
Documentation for Xendit payment provider
taskid-2946329
closes odoo/documentation#7475
X-original-commit: 05637af163
Signed-off-by: Nigel Nicholas (nni) <nni@odoo.com>
437 lines
16 KiB
ReStructuredText
437 lines
16 KiB
ReStructuredText
:show-content:
|
|
|
|
=================================================
|
|
Payment providers (credit cards, online payments)
|
|
=================================================
|
|
|
|
.. toctree::
|
|
:titlesonly:
|
|
|
|
payment_providers/wire_transfer
|
|
payment_providers/adyen
|
|
payment_providers/alipay
|
|
payment_providers/amazon_payment_services
|
|
payment_providers/asiapay
|
|
payment_providers/authorize
|
|
payment_providers/buckaroo
|
|
payment_providers/demo
|
|
payment_providers/flutterwave
|
|
payment_providers/mercado_pago
|
|
payment_providers/mollie
|
|
payment_providers/ogone
|
|
payment_providers/paypal
|
|
payment_providers/razorpay
|
|
payment_providers/sips
|
|
payment_providers/stripe
|
|
payment_providers/xendit
|
|
|
|
Odoo embeds several **payment providers** that allow your customers to pay on their *Customer
|
|
Portals* or your *eCommerce website*. They can pay sales orders, invoices, or subscriptions with
|
|
recurring payments with their favorite payment methods such as **Credit Cards**.
|
|
|
|
Offering several payment methods increases the chances of getting paid in time, or even immediately,
|
|
as you make it more convenient for your customers to pay with the payment method they prefer and
|
|
trust.
|
|
|
|
.. image:: payment_providers/online-payment.png
|
|
:align: center
|
|
:alt: Pay online in the customer portal and select which payment provider to use.
|
|
|
|
.. note::
|
|
Odoo apps delegate the handling of sensitive information to the certified payment provider so
|
|
that you don't ever have to worry about PCI compliance.
|
|
|
|
This means that no sensitive information (such as credit card numbers) is stored on Odoo servers
|
|
or Odoo databases hosted elsewhere. Instead, Odoo apps use a unique reference number to the data
|
|
stored safely in the payment providers' systems.
|
|
|
|
.. _payment_providers/supported_providers:
|
|
|
|
Supported payment providers
|
|
===========================
|
|
|
|
From an accounting perspective, we can distinguish two types of payment providers: the payment
|
|
providers that are third-party services and require you to follow another accounting workflow, and
|
|
the payments that go directly on the bank account and follow the usual reconciliation workflow.
|
|
|
|
.. _payment_providers/online_providers:
|
|
|
|
Online payment providers
|
|
------------------------
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:stub-columns: 1
|
|
:widths: auto
|
|
|
|
* -
|
|
- Payment flow from
|
|
- :ref:`Tokenization <payment_providers/features/tokenization>`
|
|
- :ref:`Manual capture <payment_providers/features/manual_capture>`
|
|
- :ref:`Refunds <payment_providers/features/refund>`
|
|
- :ref:`Express checkout <payment_providers/features/express_checkout>`
|
|
* - :doc:`Adyen <payment_providers/adyen>`
|
|
- Odoo
|
|
- |V|
|
|
- Full and partial
|
|
- Full and partial
|
|
-
|
|
* - :doc:`Amazon Payment Services <payment_providers/amazon_payment_services>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`AsiaPay <payment_providers/asiapay>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`Authorize.Net <payment_providers/authorize>`
|
|
- Odoo
|
|
- |V|
|
|
- Full only
|
|
- Full only
|
|
-
|
|
* - :doc:`Buckaroo <payment_providers/buckaroo>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`Flutterwave <payment_providers/flutterwave>`
|
|
- The provider website
|
|
- |V|
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`Mercado Pago <payment_providers/mercado_pago>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`Mollie <payment_providers/mollie>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`PayPal <payment_providers/paypal>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`Razorpay <payment_providers/razorpay>`
|
|
- Odoo
|
|
- |V|
|
|
- Full only
|
|
- Full and partial
|
|
-
|
|
* - :doc:`SIPS <payment_providers/sips>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
* - :doc:`Stripe <payment_providers/stripe>`
|
|
- Odoo
|
|
- |V|
|
|
- Full only
|
|
- Full and partial
|
|
- |V|
|
|
* - :doc:`Xendit <payment_providers/xendit>`
|
|
- The provider website
|
|
-
|
|
-
|
|
-
|
|
-
|
|
|
|
.. |V| replace:: ✔
|
|
|
|
.. note::
|
|
Some of these online payment providers can also be added as :doc:`bank accounts
|
|
<../finance/accounting/bank>`, but this is **not** the same process as adding
|
|
them as payment providers. Payment providers allow customers to pay online, and bank accounts are
|
|
added and configured on your Accounting app to do a bank reconciliation, which is an accounting
|
|
control process.
|
|
|
|
.. tip::
|
|
In addition to the regular payment providers that integrate with an API such as Stripe, PayPal,
|
|
or Adyen, Odoo bundles the :doc:`Demo payment provider <payment_providers/demo>`. This payment
|
|
provider allows you to make demo payments to test business flows involving online payments. No
|
|
credentials are required as the demo payments are fake.
|
|
|
|
.. _payment_providers/bank_payments:
|
|
|
|
Bank payments
|
|
-------------
|
|
|
|
- | :doc:`Wire Transfer <payment_providers/wire_transfer>`
|
|
| When selected, Odoo displays your payment information with a payment reference. You have to
|
|
approve the payment manually once you have received it on your bank account.
|
|
- | :doc:`SEPA Direct Debit <../finance/accounting/payments/batch_sdd>`
|
|
| Your customers can make a bank transfer to register a SEPA Direct Debit mandate and get their
|
|
bank account charged directly.
|
|
|
|
.. _payment_providers/features:
|
|
|
|
Additional features
|
|
===================
|
|
|
|
Some payment providers support additional features for the payment flow. Refer to the :ref:`table
|
|
above <payment_providers/online_providers>` to check if your payment provider supports these
|
|
features.
|
|
|
|
.. _payment_providers/features/tokenization:
|
|
|
|
Tokenization
|
|
------------
|
|
|
|
If your payment provider supports this feature, customers can choose to save their card for later. A
|
|
**payment token** is created in Odoo and can be used as a payment method for subsequent payments
|
|
without having to enter the card details again. This is particularly useful for the eCommerce
|
|
conversion rate and for subscriptions that use recurring payments.
|
|
|
|
Enable this feature by navigating to the :guilabel:`Configuration` tab from your payment provider
|
|
and by ticking the :guilabel:`Allow Saving Payment Methods` checkbox.
|
|
|
|
.. note::
|
|
You remain fully PCI-compliant when you enable this feature because Odoo does not store the card
|
|
details directly. Instead, it creates a payment token that only holds a reference to the card
|
|
details stored on the payment provider's server.
|
|
|
|
.. _payment_providers/features/manual_capture:
|
|
|
|
Manual capture
|
|
--------------
|
|
|
|
If your payment provider supports this feature, you can authorize and capture payments in two steps
|
|
instead of one. When you authorize a payment, the funds are reserved on the customer's payment
|
|
method but they are not immediately charged. The charge is only made when you manually capture the
|
|
payment later on. You can also void the authorization to release the reserved funds; this is
|
|
equivalent to a regular cancellation. Capturing payments manually can prove itself useful in many
|
|
situations:
|
|
|
|
- Receive the payment confirmation and wait until the order is shipped to capture the payment.
|
|
- Review and verify that orders are legitimate before the payment is completed and the fulfillment
|
|
process starts.
|
|
- Avoid potentially high processing fees for cancelled payments: payment providers will not charge
|
|
you for voiding an authorization.
|
|
- Hold a security deposit to return later, minus any deductions (e.g., after a damage).
|
|
|
|
Enable this feature by navigating to the :guilabel:`Configuration` tab from your payment provider
|
|
and by ticking the :guilabel:`Capture Amount Manually` checkbox.
|
|
|
|
To capture the payment after it was authorized, go to the related sales order or invoice and click
|
|
on the :guilabel:`CAPTURE TRANSACTION` button. To release the funds, click on the :guilabel:`VOID
|
|
TRANSACTION` button.
|
|
|
|
If your provider supports partial capture, you can select to capture only a **partial amount** of
|
|
the full amount. The **remaining (uncaptured) amount** can either be voided or partially captured
|
|
again later.
|
|
|
|
.. note::
|
|
- Some payment providers support capturing only part of the authorized amount. The remaining
|
|
amount can then be either captured or voided. These providers have the value **Full and
|
|
partial** in the :ref:`table above <payment_providers/online_providers>`. The providers that
|
|
only support capturing or voiding the full amount have the value **Full only**.
|
|
- The funds are likely not reserved forever. After a certain time, they may be automatically
|
|
released back to the customer's payment method. Refer to your payment provider's documentation
|
|
for the exact reservation duration.
|
|
- Odoo does not support this feature for all payment providers but some allow the manual capture
|
|
from their website interface.
|
|
|
|
.. _payment_providers/features/refund:
|
|
|
|
Refunds
|
|
-------
|
|
|
|
If your payment provider supports this feature, you can refund payments directly from Odoo. It does
|
|
not need to be enabled first. To refund a customer payment, navigate to it and click on the
|
|
:guilabel:`REFUND` button.
|
|
|
|
.. note::
|
|
- Some payment providers support refunding only part of the amount. The remaining amount can then
|
|
optionally be refunded too. These providers have the value **Full and partial** in the
|
|
:ref:`table above <payment_providers/online_providers>`. The providers that only support
|
|
refunding the full amount have the value **Full only**.
|
|
- Odoo does not support this feature for all payment providers but some allow to refund payments
|
|
from their website interface.
|
|
|
|
.. _payment_providers/features/express_checkout:
|
|
|
|
Express checkout
|
|
----------------
|
|
|
|
If your payment provider supports this feature, customers can use the **Google Pay** and **Apple
|
|
Pay** buttons to pay their eCommerce orders in one click without filling the contact form. Using one
|
|
of those buttons, customers go straight from the cart to the confirmation page, stopping by the
|
|
payment form of Google or Apple to validate the payment.
|
|
|
|
Enable this feature by navigating to the :guilabel:`Configuration` tab from your payment provider
|
|
and by ticking the :guilabel:`Allow Express Checkout` checkbox.
|
|
|
|
.. note::
|
|
All prices shown in the express checkout payment form are always taxes included.
|
|
|
|
.. _payment_providers/configuration:
|
|
|
|
Configuration
|
|
=============
|
|
|
|
.. note::
|
|
Each provider has its specific configuration flow, depending on :ref:`which feature is available
|
|
<payment_providers/online_providers>`.
|
|
|
|
.. _payment_providers/add_new:
|
|
|
|
Add a new payment provider
|
|
--------------------------
|
|
|
|
To add a new payment provider and make it available to your customers, go to
|
|
:menuselection:`Accounting --> Configuration --> Payment Providers`, look for your payment provider,
|
|
install the related module, and activate it. To do so, open the payment provider and change its
|
|
state from *Disabled* to *Enabled*.
|
|
|
|
.. image:: payment_providers/activation.png
|
|
:align: center
|
|
:alt: Click on install, then on activate to make the payment provider available on Odoo.
|
|
|
|
.. warning::
|
|
We recommend using the *Test Mode* on a duplicated database or a test database. The Test Mode is
|
|
meant to be used with your test/sandbox credentials, but Odoo generates Sales Orders and Invoices
|
|
as usual. It isn't always possible to cancel an invoice, and this could create some issues with
|
|
your invoices numbering if you were to test your payment providers on your main database.
|
|
|
|
.. _payment_providers/credentials_tab:
|
|
|
|
Credentials tab
|
|
~~~~~~~~~~~~~~~
|
|
|
|
If not done yet, go to the online payment provider website, create an account, and make sure to have
|
|
the credentials required for third-party use. Odoo requires these credentials to communicate with
|
|
the payment provider.
|
|
|
|
The form in this section is specific to the payment provider you are configuring. Please refer to
|
|
the related documentation for more information.
|
|
|
|
.. _payment_providers/configuration_tab:
|
|
|
|
Configuration tab
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
You can change the payment provider's front-end appearance by modifying its name under the
|
|
**Displayed as** field, and the supported credit card icons displayed under the **Supported Payment Methods**
|
|
field.
|
|
|
|
.. _payment_providers/currencies:
|
|
|
|
Currencies
|
|
**********
|
|
|
|
All payment providers have a different list of available currencies. They are preconfigured and
|
|
available in the :guilabel:`Configuration` tab. They serve as a first filter during payment
|
|
operations, i.e. the payment provider is not displayed as available for payment if the currency is
|
|
not in the supported list.
|
|
|
|
.. tip::
|
|
As there might be errors, updates, and unknowns in the lists of available currencies, it is
|
|
possible to add or remove currencies.
|
|
|
|
If the list of supported currencies is empty, it either means the list is too long to be displayed,
|
|
or Odoo does not have information on that payment provider. The payment provider remains available,
|
|
even though it is possible the payment will be refused at a later stage should the currency not be
|
|
supported. This field is required if the user needs to select a currency when setting up their
|
|
payment provider account.
|
|
|
|
.. _payment_providers/countries:
|
|
|
|
Countries
|
|
*********
|
|
|
|
Restrict the use of the payment provider to a selection of countries. Leave this field blank to make
|
|
the payment provider available in all countries.
|
|
|
|
Maximum Amount
|
|
**************
|
|
|
|
Restrict the maximum amount that can be paid with the selected provider. Leave this field to `0.00`
|
|
to make the payment provider available regardless of the payment amount.
|
|
|
|
.. important::
|
|
This feature is not intended to work on pages which allow the customer to update the payment
|
|
amount. For example, the **Donation** snippet of the Website app, and the **Checkout** page of
|
|
the **eCommerce** app when paid delivery methods are enabled.
|
|
|
|
.. _payment_providers/journal:
|
|
|
|
Payment journal
|
|
***************
|
|
|
|
The **Payment journal** selected for your payment provider must be a *Bank* journal.
|
|
|
|
.. _payment_providers/publish:
|
|
|
|
Publish on the website
|
|
----------------------
|
|
|
|
By default, payment providers are *unpublished*, which means that only internal users can see them
|
|
on the website. Your customers cannot make payments through an unpublished provider but they can
|
|
still manage :dfn:`(delete and assign to a subscription)` their already existing tokens linked to
|
|
such an provider. This conveniently allows you to test an provider while preventing making payments
|
|
and registering new tokens.
|
|
|
|
Click on the :guilabel:`Publish` button located in the top right corner of the provider's form to
|
|
publish it on the website and make it available to your customers. Click on the
|
|
:guilabel:`Unpublish` button to unpublish it.
|
|
|
|
.. tip::
|
|
Payment providers are automatically published and unpublished when you respectively change their
|
|
state to `enabled` and `test`.
|
|
|
|
.. _payment_providers/accounting:
|
|
|
|
Accounting perspective
|
|
======================
|
|
|
|
The **Bank Payments** that go directly to one of your bank accounts follow their usual
|
|
reconciliation workflows. However, payments recorded with **Online Payment Providers** require you
|
|
to consider how you want to record your payments' journal entries. We recommend you to ask your
|
|
accountant for advice.
|
|
|
|
You need to select a *Payment Journal* on your provider configuration to record the payments,
|
|
on a **Outstanding Account**. The Journal's **type** must be *Bank Journal*.
|
|
|
|
You can use a single journal for many payment methods. And for each payment method, you can either:
|
|
|
|
- Define an **Accounting Account** to separate these payments from another payment method.
|
|
- Leave blank to fallback on the default account, which you can see or change in the settings.
|
|
|
|
.. image:: payment_providers/bank_journal.png
|
|
:align: center
|
|
:alt: A bank journal in the "Incoming Payments Tab".
|
|
|
|
You can have the same bank account for the whole company, or for some journals only, or a single
|
|
payment method... What best suit your needs.
|
|
|
|
.. seealso::
|
|
- :doc:`payment_providers/wire_transfer`
|
|
- :doc:`payment_providers/adyen`
|
|
- :doc:`payment_providers/alipay`
|
|
- :doc:`payment_providers/authorize`
|
|
- :doc:`payment_providers/asiapay`
|
|
- :doc:`payment_providers/buckaroo`
|
|
- :doc:`payment_providers/demo`
|
|
- :doc:`payment_providers/mercado_pago`
|
|
- :doc:`payment_providers/mollie`
|
|
- :doc:`payment_providers/ogone`
|
|
- :doc:`payment_providers/paypal`
|
|
- :doc:`payment_providers/razorpay`
|
|
- :doc:`payment_providers/sips`
|
|
- :doc:`payment_providers/stripe`
|
|
- :doc:`payment_providers/xendit`
|
|
- :doc:`../websites/ecommerce/checkout_payment_shipping/payments`
|