Complete the Checkout
Once the widget is loaded, the customer will be able to access and complete the checkout process to split the payment. Below are the steps of the process, where all interaction with the customer happens within the Checkout widget.
Checkout process
- Payment plan: The customer reviews the payment plan (for the amount and financial product selected in the
POST
Create Order) and, if available, select the installment amount (term) that most interests her. - Personal information:
- The customer reviews her data (pre-filled in the form) and can edit or complete those fields that are empty and actually required by the lender(s).
- The customer receives an SMS with a key (OTP) that must be introduced to verify her mobile phone.
- First payment:
- The customer reviews the payment plan and enters their card details to continue with the payment of the first installment.
- The customer completes the SCA of her bank (optional) and the lender charges the first installment on her card.
- Confirm the order or put it on hold (only step that requires action on your side):
- The lender notifies Nemuru about the order being approved or placed on hold.
- Nemuru notifies you by sending a
POST
notification to let you know about the lender's decision and you should take action accordingly, as explained next.
The notification_url
is indicated by you in the POST
Create Order.
Order status
As previously seen, during the checkout process, the order is subject to change its status. For simplicity,
we have separated the status diagram into two different diagrams: one with the on_hold
status (manual review) and another without it (instant approval).
By default, BNPL lenders will approve the order instantly, and you should NOT consider the on_hold
status in the following sections.
In case the lender needs to review the order manually before approving it, Nemuru's team will inform you about it. Otherwise, you can skip the on_hold
status.
The following sections display all possible statusses and their transitions for both scenarios.
Without on_hold
(instant approval)
The order starts with the initial
status when you send the cart to Nemuru.
Before completing the checkout process, the customer could have abandoned it, which would lead to the desisted
status.
Additionally, the order could have expired, leading to the expired
status.
Once the customer completes the checkout process, the order will go through requested
status.
Then, the lender will review the order and decide whether to approve it or not.
This is the "Confirmation flow", pointed out by a yellow circle in the diagram, and explained in depth in scenarios 1 - 5 in the following Confirmation flow section.
Nemuru will notify you about the lender's decision through a POST
notification.
- If the order is denied by the lender (you will receive status
denied
), and the order will transition todenied
. - If the order is approved by the lender (you will receive status
approved
), and you will have to accept it or reject it.- If you reject it, the order will be
cancelled
. - If you accept it, the order will transition to
confirmed
if autoconfirm is enabled –otherwise you will have to manually confirm it (PUT
Confirm Order). We recommend you to confirm the order automatically, by following the autoconfirm instructions in the scenario 3.
- If you reject it, the order will be
Once confirmed, it will be necessary to capture the payment (shipping the product or providing the service) and the order will transition to captured
.
The order can be captured automatically by using the autoshipping
in each line item of the cart, informed upon order creation.
When captured, the lender will include the order's total amount in the following disbursement.
The order status will be paid
when the lender has actually disbursed the total amount of the order. In other words, the funds will be transferred to your account (time to get the funds in your account will depend on the lender).
If the order is fully refunded, the status will be cancelled
.
With on_hold
(manual review)
By default, BNPL lenders will approve the order instantly, and you should consider the previous section instead. In case the lender needs to review the order manually before approving it, Nemuru's team will inform you about it. In that case, you can follow the instructions in this section.
The order starts with the initial
status when you send the cart to Nemuru.
Before completing the checkout process, the customer could have abandoned it, which would lead to the desisted
status.
Additionally, the order could have expired, leading to the expired
status.
Once the customer completes the checkout process, the order will go through requested
status.
Then, the lender will review the order and decide whether to approve it, place it on hold for manual review, or deny it.
This is the "Confirmation flow", pointed out by a yellow circle in the diagram, and explained in depth in scenarios 1 - 9 in the following Confirmation flow section.
Nemuru will notify you about the lender's decision through a POST
notification.
- If the order is denied by the lender (you will receive status
denied
), and the order will transition todenied
. - If the order is placed on hold by the lender (you will receive status
on_hold
), and you will have to place it on hold too.- If you place it on hold, the order will transition to
on_hold
. - If you reject it, the order will be
cancelled
.
- If you place it on hold, the order will transition to
- If the order is approved by the lender (you will receive status
approved
), and you will have to accept it or reject it.- If you reject it, the order will be
cancelled
. - If you accept it, the order will transition to
confirmed
if autoconfirm is enabled –otherwise you will have to manually confirm it (PUT
Confirm Order). We recommend you to confirm the order automatically, by following the autoconfirm instructions in the scenario 3.
- If you reject it, the order will be
If the order has been successfully placed on hold, the lender will manually review it and decide whether to approve it or not (pointed out by the second yellow circle in the diagram).
Nemuru will notify you about the lender's final decision through a POST
notification.
- If the order is denied by the lender (you will receive status
denied
), and the order will transition todenied
. - If the order is approved by the lender (you will receive status
approved
), and you will have to accept it or reject it.- If you reject it, the order will be
cancelled
. - If you accept it, the order will transition to
confirmed
if autoconfirm is enabled –otherwise you will have to manually confirm it (PUT
Confirm Order). We recommend you to confirm the order automatically, by following the autoconfirm instructions in the scenario 3.
- If you reject it, the order will be
Once confirmed, it will be necessary to capture the payment (shipping the product or providing the service) and the order will transition to captured
.
When captured, the lender will include the order's total amount in the following disbursement.
The order status will be paid
when the lender has actually disbursed the total amount of the order. In other words, the funds will be transferred to your account (time to get the funds in your account will depend on the lender).
If the order is fully refunded, the status will be cancelled
.
Confirmation flow
As introduced before, the confirmation flow is the process that happens after the customer completes the checkout process. This process is the communication between Nemuru, the lender, and you (the merchant).
The POST
notification is employed by Nemuru to let you know about the lender's decision. This is the starting point of the confirmation flow.
Throughout the duration of the confirmation flow (that happens behind the scenes), the Checkout widget will display a loading screen to prevent the customer from abandoning the process.
There are multiple confirmation flow scenarios. Depending on the lender's decision and your decision too, with regard to the order, the confirmation flow will be either one or another. Let's take a look at these different scenarios:
- The lender denies the Order (scenario 1)
- The lender approves the Order (scenarios 2 - 5)
- The lender needs to review the Order and places it on hold temporarily (scenarios 6 - 9)
The on_hold
status is used when the lender needs to review the order before approving it.
This status is not mandatory and it's up to the lender to decide when to use it.
Contact us to know if the lender you are working with uses this status.
If you are not working with a lender that uses the on_hold
status, you can skip the scenarios 6 - 9.
Order denied by the lender
The lender denied the Order
(1) Nemuru receives a notification from the lender indicating the order has been denied.
(2) Nemuru notifies you (the merchant) that the order is denied by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusdenied
value.
(2R) The merchant responds to the request (2) with status code 200.
Order approved by the lender
The lender approved the Order and you (the merchant) confirm it
(1) Nemuru receives a notification from the lender indicating the order is approved.
(2) Nemuru notifies you (the merchant) that the order is approved by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusapproved
value.
(3) The merchant sends aPUT
Confirm Order request in order to confirm the order. The body of this request includes all the order payload.
(4) Nemuru sends the order passed by the merchant to the lender, so the latter can validate and confirm it.
(4R) The lender confirms the order to Nemuru.
(3R) Nemuru responds to the request (3) with status 204, letting the merchant know that it has been confirmed by the lender.
(2R) The merchant responds to the request (2) with status code 200.
(5) Nemuru notifies the merchant that the order is confirmed by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusconfirmed
value.
(5R) The merchant responds to the request (5) with status code 200.The lender approved the Order and you (the merchant) confirm it (autoconfirm)
(1) Nemuru receives a notification from the lender indicating the order is approved.
(2) Nemuru notifies you (the merchant) that the order is approved by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusapproved
value.
(2R) The merchant responds to the request (2) with status code 200 and{ "autconfirm": true }
within the body (to instruct Nemuru to auto-confirm the order with the lender).
(3) Nemuru sends the stored order to the lender, so the latter can validate and confirm it.
(3R) The lender confirms the order to Nemuru.
(4) Nemuru notifies the merchant that the order is confirmed by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusconfirmed
value.
(4R) The merchant responds to the request (4) with status code 200.The lender approved the Order and you (the merchant) confirm it, but the cart has changed
(1) Nemuru receives a notification from the lender indicating the order is approved.
(2) Nemuru notifies you (the merchant) that the order is approved by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusapproved
value.
(3) The merchant sends aPUT
Confirm Order request in order to confirm the order. The body of this request includes all the order payload.
(4) Nemuru sends the order passed by the merchant to the lender, so the latter can validate and confirm it.
(4R) The lender rejects the order because the cart has changed (or other reasons).
(3R) Nemuru responds to the request (3) with status 409 Conflict, letting the merchant know that it has been denied by the lender.
(2R) The merchant responds to the request (2) with status code 200.
(5) Nemuru notifies the merchant that the order is denied by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusdenied
value.
(5R) The merchant responds to the request (5) with status code 200.The lender approved the Order but you (the merchant) reject it
(1) Nemuru receives a notification from the lender indicating the order is approved.
(2) Nemuru notifies you (the merchant) that the order is approved by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusapproved
value.
(2R) The merchant responds to the request (2) with status code 410, indicating that the order is cancelled.
(3) Nemuru sends the cancellation request to the lender, so the latter can cancel it as well.
(3R) The lender confirms the order cancellation to Nemuru.
(4) Nemuru notifies the merchant that the order is cancelled (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statuscancelled
value.
(4R) The merchant responds to the request (4) with status code 200.
Order placed on hold by the lender
If you are not working with a lender that uses the on_hold
status, you can skip the scenarios 6 - 9.
Contact us to know if the lender you are working with uses this status.
The lender placed the Order on hold and you (the merchant) place it on hold too
(1) Nemuru receives a notification from the lender indicating the order needs review and is placed on hold temporarily.
(2) Nemuru notifies you (the merchant) that the order is on hold by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statuson_hold
value.
(3) The merchant sends aPUT
Confirm Order request in order to confirm that the order is placed on hold. The body of this request includes all the order payload.
(4) Nemuru sends the order passed by the merchant to the lender, so the latter can validate and confirm it.
(4R) The lender confirms the order being placed on hold to Nemuru.
(3R) Nemuru responds to the request (3) with status 204, letting the merchant know that placing the order on hold has been confirmed by the lender.
(2R) The merchant responds to the request (2) with status code 200.The lender placed the Order on hold and you (the merchant) place it on hold too (autoconfirm)
(1) Nemuru receives a notification from the lender indicating the order needs review and is placed on hold temporarily.
(2) Nemuru notifies you (the merchant) that the order is on hold by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statuson_hold
value.
(2R) The merchant responds to the request (2) with status code 200 and{ "autconfirm": true }
within the body (to instruct Nemuru to auto-confirm the order with the lender).
(3) Nemuru sends the stored order to the lender, so the latter can validate and confirm it.
(3R) The lender confirms the order being placed on hold to Nemuru.The lender placed the Order on hold and you (the merchant) place it on hold too, but the cart has changed
(1) Nemuru receives a notification from the lender indicating the order needs review and is placed on hold temporarily.
(2) Nemuru notifies you (the merchant) that the order is on hold by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statuson_hold
value.
(3) The merchant sends aPUT
Confirm Order request in order to confirm that the order is placed on hold. The body of this request includes all the order payload.
(4) Nemuru sends the order passed by the merchant to the lender, so the latter can validate and confirm it.
(4R) The lender rejects the order because the cart has changed (or other reasons).
(3R) Nemuru responds to the request (3) with status 409 Conflict, letting the merchant know that it has been denied by the lender.
(2R) The merchant responds to the request (2) with status code 200.
(5) Nemuru notifies the merchant that the order is denied by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statusdenied
value.
(5R) The merchant responds to the request (5) with status code 200.The lender placed the Order on hold but you (the merchant) reject it
(1) Nemuru receives a notification from the lender indicating the order needs review and is placed on hold temporarily.
(2) Nemuru notifies you (the merchant) that the order is on hold by the lender (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statuson_hold
value.
(2R) The merchant responds to the request (2) with status code 410, indicating that the order is cancelled.
(3) Nemuru sends the cancellation request to the lender, so the latter can cancel it as well.
(3R) The lender confirms the order cancellation to Nemuru.
(4) Nemuru notifies the merchant that the order is cancelled (POST
notification). The body of the request includes theorder_id
and additional parameters passed when creating the order, plus the statuscancelled
value.
(4R) The merchant responds to the request (4) with status code 200.
Requests
POST
notification
Some lenders might approve the order and wait for you to send the cart again to validate it hasn't changed (much). This is done for security reasons.
Depending on specific circumstances (you are able to block the cart on your site, commercial agreements with the lender, etc), you can instruct us to auto-confirm the order with the lender. In such scenario, we will send the same cart that you initially sent to us (through POST
Create Order) and thus ensure the lender's validation goes OK. This removes you from having to send the Order payload again (explained in detail next).
Request
POST notification_url // notification_url
Authorization: Basic bG9sOnNlY3VyZQ== // notification_auth
Content-Type: application/json // notification_auth
Check the API Reference for all the details about this request.
{
"order_id": "e60fb9d8-97d4-4653-bc7e-d49b203a6980",
"order_reference_1": "76t7y7sau8y398y",
"event": "order_status_changed",
"triggered_at": "2022-03-31T09:42:15+00.00",
"status": "approved",
"cart": "h12837hg="
}
Parameter details:
Field | Type | Description | Example |
---|---|---|---|
order_id | string | The order_id returned by Nemuru in the POST Create Order | "41c325c0-161c-43d6-bb4f-65f6b50b9ba0" |
order_reference_1 | string | Your ID of the order (merchant-side), included by you in the POST Create Order | "7QuHQ5WVQQqyWVPW" |
event | string | Event name | "order_status_changed" |
triggered_at | string | Timestamp when the event was triggered. Format DATE_ATOM. | "2022-03-31T09:42:15+00.00" |
status | string | The Order status. Possible values are: ["approved", "confirmed", "on_hold", "denied", "cancelled", "expired", "desisted"] | "approved" |
This is the list of possible Order statusses (status
):
on_hold
: needs manual review by the lenderapproved
: approved by the lender, pending confirmation by you (the merchant)confirmed
: approved by the lender and confirmed by you (the merchant)cancelled
: approved by the lender but rejected by you (the merchant)denied
: denied by the lenderexpired
: the checkout is expireddesisted
: the customer abandons the checkout process
Response
Depending on the scenario, your response to Nemuru will vary. The next section lays out the different scenarios and the sequence diagrams to better understand the communication flow between all the systems.
PUT
Confirm / place on hold the Order
Request
PUT /order/{order_id}/
Authorization: Bearer access_token
Content-Type: application/json
Check the API Reference for all the details about this request / response.
- Online product
- Accommodation
{
// highlight-next-line
"status": "confirmed",
"product": "instalments",
"merchant": {
"order_reference_1": "7QuHQ5WVQQqyWVPW",
"order_reference_2": "14-922-1039",
"notification_url": "https://nemuru.free.beeceptor.com/callback",
"notification_auth": {
"authorization_header": "Basic bG9sOnNlY3VyZQ==",
"content_type": "application/json"
},
"notification_additional_payload": {
"cart": "h12837hg="
}
},
"customer": {
"first_name": "Alba",
"last_name": "Martinez Laguna",
"title": "ms",
"email": "alba.martinez@gmail.com",
"phone_number": "+34659723349",
"document_number": "55593310X",
"document_expiration_date": "2024-02-27T12:00:00+01:00",
"birth_date": "1982-11-03T12:00:00+01:00",
"nationality": "ESP",
"logged_in": false,
"locale": "es-ES",
"ip_address": "192.0.2.146",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
},
"cart": {
"reference": "76t7y7sau8y398y",
"total_price_with_tax": 1500,
"currency": "EUR",
"items": [
{
"article": {
"name": "KIVIK 3-seat sofa",
"type": "product",
"category": "physical",
"reference": "4912345678904",
"unit_price_with_tax": 875,
"description": "3-seat sofa, with chaise longue/Hillared anthracite",
"brand": "the-ikea-brand",
"mpn": "AD6654412-334.22",
"url": "https://www.ikea.com/ie/en/p/kivik-3-seat-sofa-with-chaise-longue-hillared-anthracite-s89193665/",
"image_url": "https://www.ikea.com/ie/en/p/kivik-3-seat-sofa-with-chaise-longue-hillared-anthracite-s89193665/"
},
"units": 1,
"total_discount": 0,
"total_price_with_tax": 875,
"auto_shipping": true
},
{
"article": {
"name": "EKEDALEN / EKEDALEN Bar table and 4 bar stools",
"type": "product",
"category": "physical",
"reference": "5930423178914",
"unit_price_with_tax": 625,
"description": "Bar table and 4 bar stools, white/Ramna light grey120 cm"
},
"units": 1,
"total_discount": 0,
"total_price_with_tax": 625
}
]
},
"shipping": {
"name": "SEUR24",
"method": "home",
"first_name": "Alba",
"last_name": "Martinez",
"company": "EL DON TRESILLO CATALAN SL",
"email": "alba.martinez@gmail.com",
"phone_number": "+34659723349",
"address": {
"street_address": "Pl. de Pau Vila, 1",
"street_address_2": "Planta 1A",
"postal_code": "08003",
"city": "Barcelona",
"country": "ESP"
}
},
"billing": {
"first_name": "Alba",
"last_name": "Martinez",
"email": "alba.martinez@gmail.com",
"phone_number": "+34659723349",
"company": "EL DON TRESILLO CATALAN SL",
"corporate_id_number": "A35628221",
"address": {
"street_address": "Pl. de Pau Vila, 1",
"street_address_2": "Planta 1A",
"postal_code": "08003",
"city": "Barcelona",
"country": "ESP"
}
}
}
{
// highlight-next-line
"status": "confirmed",
"product": "split_pay",
"merchant": {
"order_reference_1": "d2e45d83-b2f1-40ae-9587-fa4222587ecf",
"order_reference_2": "14-922-1039",
"notification_url": "https://nemuru.free.beeceptor.com/callback",
"notification_auth": {
"authorization_header": "Basic bG9sOnNlY3VyZQ==",
"content_type": "application/json"
},
"notification_additional_payload": {
"cart": "h12837hg="
}
},
"customer": {
"first_name": "Alberto",
"last_name": "Pérez Ortiz",
"title": "mr",
"email": "alberto.perez@gmail.com",
"phone_number": "+34659723349",
"document_number": "43918281B",
"document_expiration_date": "2025-02-27T12:00:00+01:00",
"birth_date": "1990-11-03T12:00:00+01:00",
"nationality": "ESP",
"logged_in": false,
"locale": "es-ES",
"ip_address": "192.0.2.146",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
},
"cart": {
"reference": "75019830hh1i2h38",
"total_price_with_tax": 631.0,
"currency": "EUR",
"items": [
{
"article": {
"name": "Sol Port Cambrils",
"type": "accommodation",
"category": "physical",
"reference": "591234557679812",
"unit_price_with_tax": 210.33,
"description": "Sol Port Cambrils - 1x HABITACIÓN STANDARD (3 noches, 2 adultos)",
"checkin_date": "2022-05-01T12:00:00+00:00",
"checkout_date": "2022-05-04T12:00:00+00:00",
"establishment_name": "Sol Port Cambrils",
"address": {
"street_address": "Rambla Regueral, 11",
"street_address_2": null,
"postal_code": "43850",
"city": "Cambrils",
"country": "ESP"
},
"guests": 2,
"url": "https://www.melia.com/es/hoteles/espana/cambrils/sol-port-cambrils/habitacion-tryp.htm",
"image_url": "https://www.melia.com/dam/jcr:a96dbc18-d758-41e0-a…6d/11atrypportcambrils-tryproomdouble1600x785.jpg"
},
"units": 3,
"total_discount": 0,
"total_price_with_tax": 631.0,
"auto_shipping": true
}
]
}
}
- Same as
POST
Create Order - Additionally add the
status
field:confirmed
when the merchant receives anapproved
notification from Nemuru and proceeds to confirm the orderon_hold
when the merchant receives anon_hold
notification by Nemuru and proceeds to place the orderon_hold