# BNPL details for Markets

One of the use cases of serviceX is BNPL Gateway.

This page is for Markets to understand the flow of the BNPL Gateway.

The flow of the BNPL transaction is

  1. Filter BNPL products and users on your frontend or backend
  2. Handle order creation on your backend
  3. Kick off BNPL flow on your frontend
  4. Manage order status on both your backend and frontend
  5. Request disbursement
  6. Cancel a transaction
  7. Support repayment on your frontend

This is the flow of Credify SDK, which will be displayed between step #3 and #4.

bnpl flow

# 1. Filter BNPL products and users on your frontend or backend

BNPL providers have their own terms, one of which is about price range. BNPL transactions should be in a proper pricing range that meets requirements of BNPL providers. Standard range of our service is 5 ~ 10 million VND. That being said, this is flexible, so if you are interested in wider range, please let us know.

You can obtain BNPL information through our API/SDK on either your frontend or backend, so you can filter users and BNPL products by yourself.

There should 2 types of filtering

  • Based on user's data (Optional)
    • If users do not meet requirements that are set by the BNPL providers, you need to hide this option to the users. These requirements are based on what you have configured on Dashboard.
    • For example, if you set "you provide loyalty point amount" on Dashboard and BNPL providers set a certain threshold to offer BNPL options (if the amount is smaller than the threshold, this user is not qualified to get BNPL options), you will need to filter out unqualified users with this threshold by checking loyalty point amount. This filtering logic is implemented by our SDK.
  • Based on purchase information
    • If users purchase does not satisfy BNPL options' requirements, these users will not see the BNPL options.

# 2. Handle order creation on your backend

create an order

Every BNPL transaction should be associated with an order. You need to generate a new order object on your backend. You will obtain order ID, so you can check the order status afterwards. You will need to pass this order ID to our frontend SDK when kicking off the flow.

The interaction with Credify API has been supported by Skeleton service already.

# 3. Kick off BNPL flow on your frontend

After the above flow, our SDK (iOS/Android/Web) will handle payment plan selection, data collection for the BNPL application, eKYC, and necessary verification. The BNPL provider will conduct credit assessment for new users right after it receives the necessary information. This assessment may take time (e.g. 10 mins) depending on the BNPL provider. You will receive the order status update via our webhook. Until this approval, the payment status on your platform should be pending.

bnpl flow

# 4. Manage order status on both your backend and frontend

The life cycle of the order status is like following diagram (Order Status).

order status

Normally, BNPL Providers need to have the following steps until a payment request gets approved:

  1. Credit assessment
  2. BNPL e-contract generation
  3. E-signing between a buyer and an FI.
  4. [Optional] Down payment

1, 2, and 3 must be handled by us and BNPL Providers. 4 may have to be dealt by Markets, depending on the requirements from BNPL providers. The following is a general flow to determine what action users need to make to complete the BNPL transaction.

down payment

If users close the screen, you can resume the process by simply opening the BNPL flow again. Or users can visit the URL they will receive via SMS when they submit an application. Our SDK will render the corresponding pending screen.

Once all the processes (1 ~ 4) are done, the Service Provider may redirect the user back to your platform. Thus, you need to provide the callback URL for the completed transaction. This logic is covered by the Skeleton service in /bnpl/orders/:orderId/redirect.

# 5. Request disbursement

After users have finished the BNPL transaction successfully, you will receive a webhook event regarding the order status. You will just need to process the order status on your system.

To receive money from BNPL providers, you will need to request disbursement. The BNPL providers may have certain requirements to unlock the disbursement. For example, an invoice about the corresponding transaction may be required for disbursement. You can upload these documents on our Dashboard and we will handle digital signature and encryption to share this data with the BNPL provider securely. When all the requirements are fulfilled in both FI and Market sides, we will request FI to proceed with the disbursement.


# 6. Cancel a transaction

If your user who finished BNPL authorization wants to cancel the purchase, you can request cancellation via our API or on our Dashboard (manually). This may fail depending on the disbursement status. In case when this fails, you will need to resolve the cancellation with the BNPL provider directly.

# 7. Support repayment instruction

We offer SDK (iOS/Android/Web) for your customers to check the BNPL usage within your platform instead of forcing them to download another app. You may add a button to open our SDK that handles repayment schedule and all the necessary information.

The detailed information about the API specs are here

Last Updated: 9/13/2022, 12:32:56 PM