This guide applies to the Atomic platform only.








APEXX Fintech Limited


BNPL Connect Developer Guide




Version:

09.01

Date of version:

180122

Created by:

James Jackson, Jon Gould, Conor Falvey, 

Reviewed by:

James Jackson

Approved by:

James Jackson

Classification:

Confidential - External Use


CHANGE HISTORY

Date

Version

Created by

Description of change


0.01

JJ

Initial version (draft)


0.02

JJ

Managing Transaction Status for PENDING transactions, Appendix (Capability Matrix), Indication of generic Downstream Payment Flow


0.03

JJ

Explanation of Capture & Cancel column in Capability Matrix. Inclusion of note around cancelled and failed redirect flow


0.04

JJ

BNPL Object Examples added to Appendix 


0.05

JJ

Update Openpay test details


0.06

JJ & CF

Update of Avarto Afterpay, PPRO Klarna and API hyperlinks. Inclusion of Sandbox credentials for testing


0.07

CF

Appendix with details on Openpay & Clearpay widgets to reflect repayment options on the front end flow to customers


0.08

CF

Update of Clearpay flow.


0.09

CF

Update of contents


0.10

CF

Updating version of guide & tables added




APEXX - BNPL Connect Contents




APEXX - BNPL Connect

Introduction

APEXX BNPL Connect API is designed for eCommerce merchants/ PSP partners to enable unified access to multiple supported BNPL providers through a single API and the same request format for all BNPL providers.. 

Merchants/ Partners will be able to present a whole host of BNPL options to the consumer and initiate the flow with the BNPL providers via the BNPL Connect API. 

BNPL Connect gives our Merchants /Partners access to over 46 markets globally equating to 80% coverage of the BNPL market.

This BNPL Connect Guide provides an overview as to how the product operates.







Redirect BNPL Flow

The initial payment authorisation element of the redirect BNPL Connect flow is outlined below:



This flow includes the following steps: 

  1. Customer navigates the checkout page on the Merchant website

  2. Merchant presents BNPL options to Customer

  3. Merchant initiates payment request to APEXX BNPL Connect API

  4. Based on the payment flow parameter being returned as redirect in an HTTP 201 response, redirect the customer to the URL provided in the response

  5. Customer completes payment on BNPL provider hosted page

  6. BNPL provider returns result of payment to APEXX

  7. APEXX conducts any necessary post processing steps with the BNPL provider to ensure payment is authorised. 

  8. APEXX returns result of payment to the Merchant 

  9. Merchant handles URL string parameters* and presents the result of the transaction to the consumer. 

* Note - PENDING status will require integration of webhooks or using the Get transaction details By Id request.


The high level flow for full  payment through to a settled BNPL payment includes 5 core actions to be implemented to complete the end to end payment workflow. 

  • Initiate the payment request to BNPL Connect API

  • Redirect the consumer to the URL provided in the response

  • Handle the result from Apexx sent to the specified result url(s)

  • Merchant Captures/Voids the payment request with the BNPL provider

  • Refund the captured payment as required


Handle the redirect URL - This is sent back

The result of the transaction will be returned to one the redirect URLs specified in your initial request. You will need to handle the redirect presenting the result of the transaction based on the status to the customer. Alongside this you will need to log the “Transaction ID” (which is returned in the _id field) value as this will be used for downstream request such as Void, Capture, Refund


https://sandatomic.apexx.global/atomic/v1/api/return?status=PENDING&merchant_reference=JJ-AC-164-0002&_id=175409088ac54c06ae657b90504a91f420210615&payment_method=BNPL




Redirection URL Statuses


The following transaction statuses are returned in the URL parameters, these data points allow you to track the payment and take future action



Status

Laybuy

Openpay

Klarna PPro

Klarna Direct

Afterpay/Clearpay

Sezzle

Affirm

Zip

CANCELLED

N

Y

Y

Y

Y

Y

Y

Y

FAILED

Y

Y

Y

Y

Y

Y

Y

Y

PENDING 

Y

N

Y

Y

Y

N

Y

Y

SUCCESS

Y

Y

N

N

N

Y

N

N

CAPTURED

N

N

N

N

N

N

N

N



A Transaction with the status of CANCELLED i.e. does not complete the sign up/sign in process with the BNPL provider will be returned to the URL specified in the “redirect_url.cancelled” field. 


A Transaction with the status of FAILED i.e. a technical issue occurred will be returned to the URL specified in the “redirect_url.failed” field. 





Downstream Payment Flow

All downstream / transaction update elements of the BNPL Connect flow are server to server interactions using the Transaction ID obtained during the payment flow. This flow is outlined below:

Downstream functions are generic and can be used across all BNPL products so long as the function they represent is supported by the BNPL provider. Supported functions can be found in the BNPL capability matrix. 


Capture Flow

The capture element of the BNPL Connect flow is a server to server interaction using the Transaction ID obtained  during the payment flow. Used where the provider operates a two stage (authorise and capture) transaction model.

See Appendix for an example request

Void/ Cancel Authorisation Flow

The Void or Cancel element of the BNPL Connect flow is a server to server interaction using the ” _id” obtained  during the payment flow. Used where the provider operates a two stage (authorise and capture) transaction model and the merchant wishes to cancel the authorisation on a uncaptured transaction.

See Appendix for an example request


Refund Flow

The refund element of the BNPL Connect flow is a server to server interaction using the Transaction ID obtained  during the payment flow. 

See Appendix for an example request




Managing Transaction Statuses

For BNPL Payment products that return a PENDING status as part of the redirect to the return URL there is a requirement to obtain the transaction status after this step. There are 2 methods to doing this that can be used for all payment methods as a belt and braces approach to managing transaction statuses. Alternatively it can be done only when the redirect includes the status “PENDING” as shown below.

Please note that when a PENDING status is returned this means that you will need to complete a Webhook or Get API call for the final transaction status. The reasoning for this is because some BNPL providers do not provide the final transaction status in real-time. 



https://sandatomic.apexx.global/atomic/v1/api/return?status=PENDING&merchant_reference=JJ-AC-164-0102&_id=175409088ac54c06ae657b90504a91f420210616&payment_method=BNPL


The 2 methods to Managing Transactions Statuses are outlined below. 

Get transaction details By Id

Use the Get transaction details By Id to obtain the true transaction status. Send a GET request to {{host}}/atomic/v1/api/transaction/{transactionId} substituting the {transactionId} with the _id returned in the redirect URL. Example shown below:


{{host}}/atomic/v1/api/transaction/175409088ac54c06ae657b90504a91f420210616

Full details about the Get transaction details By Id can be found here.

Transaction Webhooks

Use the Transaction webhooks to obtain the true transaction status. In the Create Order request that you send us, include the field "webhook_transaction_update" with a value of the URL where you would like us to POST the Transaction Webhook to. Once APEXX is notified of the true status of the transaction we will send the webhook to the URL specified in the request. The POST request will include the transaction_id and merchant_reference to allow you to link the webhook back to the transaction and update your records with the true payment status. 


Full details about the Transaction Webhooks can be found here.







Appendix

BNPL Object Examples


Payment Method

Payment Type

Example Object

LayBuy

Installments (6 weekly) 0%

"bnpl": {

"payment_method": "laybuy"

},

Clearpay/Afterpay

Installments (bi-weekly over 6 weeks) 0%

"bnpl": {

"payment_method": "clearpay"

},

Open Pay

Installments (weekly, fortnightly, 0%)

"bnpl": {

"payment_method": "openpay"

},

Klarna (PPRO)

Installments (monthly, 0% interest)

"bnpl": {

"payment_method": "klarna"

},

Afterpay (Arvato)

Invoice (14 days to pay, 0%)

"bnpl": {

        "payment_method": "afterpay",

        "payment_type": "invoice"

},

Afterpay (Arvato)

Installments (monthly, 0% interest)

"bnpl": {

        "payment_method": "afterpay",

        "payment_type": "installments",

        "payment_type_data": [

            {

                "key_name": "profile_no",

                "value": "xxx"

            },

                        {

                "key_name": "customer_interest_rate",

                "value": "xxx"

            },

                        {

                "key_name": "number_of_installments",

                "value": "xxx"

            }

        ]

    },

Afterpay (Arvato)

Direct Debit (single payment, 0% interest)

"bnpl": {

        "payment_method": "afterpay",

        "payment_type": "direct_debit",

        "payment_type_data": [

            {

                "key_name": "bank_account",

                "value": "xxxxxxxx"

            },

                        {

                "key_name": "bank_code",

                "value": "xxxxxx"

}

  

        ]

    },





Provider Capability Matrix






Supported APIs



Provider

Region

Payment plan

Payment Flow

Create Order

Capture*

Cancel**

Refund

Create Order - Immediate Decision?

Discount***



OpenPay

AU, UK & US

3 or 4 payments over 2 months

Redirect

Yes

Yes

Yes

Yes

Yes

Order level

Clearpay/Afterpay

AU, UK & US

4 payments bi-weekly over 6 weeks

Redirect

Yes

Yes

Yes

Yes

No - returned by webhook or getTransactionDetails

Order level

Laybuy

AU, NZ & UK

6 payments over 5 weeks

Redirect

Yes

No

No

Yes

No - returned by webhook or getTransactionDetails

Order level

AfterPay (Arvato)

UK & Europe

Invoice to be cleared by e.g. 14 days payment terms

Direct

Yes

Yes

Yes

Yes

Yes

Item or Order Level

Klarna PPro

Global

Installment 3 payments over 2 months

Redirect

Yes

No

No

Yes

No - returned by webhook or getTransactionDetails

Order Level

Klarna Direct

Global

Installments
Pay Now
Invoicing
Financing

Redirect

Yes

Yes

Yes

Yes

No - returned by webhook or getTransactionDetails

Item or Order Level

Affirm

NAM

Merchant dictates terms 3/6/12

Redirect

Yes

Yes

Yes

Yes

No - returned by webhook or getTransactionDetails

N/A

Sezzle


Installments

Redirect

Yes

Yes

Yes

Yes

Yes

Order Level

Zip 


Installments

Redirect

Yes

Yes

Yes

Yes

No - returned by webhook or getTransactionDetails

Order Level


*Where the Capture Column states No, this means that the BNPL provider only supports automatic capture i.e.  a one step flow. No follow-up capture request is supported/ required

** Where the Cancel Column states No, this means that the BNPL provider only supports automatic capture i.e.  a one step flow. In this situation there is no Cancel (Void) request. It would need to be actioned as a refund

***Discount column relates to a BNPL provider supporting a discount on the order being applied at item or order level for the purchase





Postman Collections

Example Requests

The below link can be imported to your postman credentials and you can understand the APEXX BNPL product suite.


Please be aware that this collection has org-id and x-api set as variables so there is a need to plug the values into the variables tab at the collection level, speak to your implementation manager in order to obtain these values.


https://www.getpostman.com/collections/a46e500d00671d34a0c0



Openpay Widgets

Please see the link here for the Openpay eCommerce widgets 

The widgets allow you to reflect to your customers the availability of Openpay as a payment option, will provide an insight into their repayment amounts and the number of months they get to pay the entire amount.


Clearpay Widgets

Please see the link here for the Clearpay eCommerce for instalment widgets and here the checkout (harvey balls) widget. The widgets allow you to reflect to your customers the availability of Clearpay as a payment option, will provide an insight into their repayment amounts and the number of months they get to pay the entire amount.


Klarna Widgets




BNPL Provider FAQs


Q - Is there a need for me to Capture payments

A - This is conditional & only for certain providers that you will need to submit a Capture request via an API call. Alternatively it will be an auto Capture process. Please refer to the Provider Capability Matrix above for detailed information per BNPL provider.


Q - Do I need to have a relationship with the BNPL provider and what products do you offer?

A - Yes, you will need to sign an agreement and have a relationship with the provider. You own the Merchant relationship, as well as the commercial relationship with each BNPL including the Merchant KYB/KYC & AML. Our Connect API is an access point to the world’s best BNPL solutions


Q - Do I need to handle the responses from the BNPL providers?

A - No, you only need to handle the APEXX responses. 


Q - How do I receive my funds from the BNPL?

A - BNPL providers will settle the funds directly however in the future this is a service that APEXX BNPL Connect will be able to provide in the future


Q - Is there differences in limits between each BNPL provider?

A - Yes some providers will only provide customers with limited funds, depending on their eligibility, and some providers only provide credit for small loan sizes i.e. under £1000 


Q - Do I need to update each BNPL provider as and when they release a new version?

A - No, APEXX takes care of this and will deliver you with the most up to date service so you don’t have to.


Q - Is there a Sandbox environment for me to test within & understand before going live

A - Yes, APEXX can provide you with credentials in order to test within our sandbox environment


Q - How will BNPL error messages be received?

A - APEXX Error Codes are mapped to allow for consistent and comparable reporting, with raw BNPL error codes also returned in the response message


Q - What if I want to add a new BNPL for my consumers? 

A - Once enabled via our implementation team, it’s as easy as passing the new BNPL provider  in the existing API, our BNPL presentment tools improve Customer Experience to support optimal conversion



BNPL Connect FAQs


Q - What presentment will be on my front end

A - You are in control of product presentment & can customise the presentment at a transaction level


Q - Will I receive multiple settlement reports in different formats?

A - APEXX provides 2 types of reporting that can be defined as (i) Transactional Reporting (SFTP in .CSV format or via Get API or Webhook) & (ii) Settlement/Reconciliation Reporting, this can be consolidated or multiple files sent per Merchant but this is at your discretion. Apexx also provides a Best in class Analytics suite for BNPL & Costs overview. 


Q - What are the transaction statuses that will be received?

A - Our transaction statuses are standardised across all providers and you will receive the same response no matter what provider you use. 

Responses that can be expected are as follows Pending, Success, Failed, Cancelled, please refer to the Redirection URL Statuses above for detailed information.


Q - Can I see my transactions in a portal

A - Yes, Apexx has developed an Analytics portal that you can use to view transactions.
























Apexx BNPL Validation Errors



Code

HTTP Status

Message

107

400

At least one parameter is invalid. Examine the details property for more information. Invalid parameters are listed and prefixed accordingly: body for parameters submitted in the request's body, query for parameters appended to the request's URL, and params for templated parameters of the request's URL.

116

401

Access is restricted to authenticated users only. The query can't be made without a valid API key (check the X-APIKEY header of your request), or a valid session (in which case session cookies are automatically set by the browser).

119

400

The transaction relates to an unknown processor. This could happen if the processor configuration that was initially used has changed. Please verify the processor configuration used by this account.

121

400

The transaction has been declined by the processor. The request reached the processor, but it was not accepted. A decline reason code is available in the details property.

122

400

Something went wrong with the processor. The processor replied with something unexpected, which makes it difficult to handle. This error shouldn't occur. Should you experience it, please contact an administrator with the corresponding error code and timestamp.

125

400

The submission contains an invalid character. Some characters are forbidden for some inputs. The details property identifies the character causing the error, and, possibly, its source.

126

400

At least one parameter is missing from the request body. Ensure you have provided all required parameters, as specified in the documentation.

127

400

At least one parameter is unexpected, or unwanted. If you're trying to update a resource, be sure to include only parameters that you want to, and may, update. Some parameters are read-only or create-only.

128

400

The submitted or computed amount is too large. This happens when trying to capture or refund a transaction for more than the available amount. In some cases, for some payment methods, it is possible to re-authorize or capture slightly more than the initial amount; please refer to the documentation to learn when and where this is possible.

130

400

At least one field of the submitted entity that is supposed to be unique already exists in another resource. The details property identifies which field is conflicting with which resource.

131

400

The processor is currently unavailable. Try again later.

132

400

The requested operation is not supported by the payment method or processor. Refer to the documentation for a list of supported operations.

134

400

Failed to parse the request. Ensure the request contains a valid JSON object, avoiding single quotes and trailing commas, and that the Content-Type header is set to application/json.

135

400

Invalid combination (key, operator) for matching ruleset.

143

400

You have attempted to use an account that uses a currency that is not supported when using this processor.

147

400

Unable to make a transaction, because the account has been disabled.

148

400

The processor configuration you're trying to use contains invalid fields.

150

400

The transaction was declined by a third party fraud engine.

151

400

The amount does not match the expected value.

155

400

Unable to complete request, because a parent organisation has been disabled.

156

400

A parent organisation for this user has been disabled. Please contact a system administrator if you believe this to have been done in error.

160

400

There's no mapping found for the given merchant id. Please make sure to define the mapping first.

166

400

Account doesn't have enough balance

167

400

An error returned by the Processor. Please process the transaction again

200

400

The locale you passed is invalid according to ISO 639 standard. Please provide the valid locale like 'en_US', 'en_GB', 'en_IN', 'fr_CH', 'ja_JP' etc.

210

400

Amount is invalid or missing.

211

400

Transaction_id is invalid or missing.

212

400

Transaction cannot be refunded.

213

400

Transaction cannot be cancelled.

214

400

Transaction cannot be captured.

215

400

Quantity is invalid or missing.

216

400

Vat percent is invalid or missing.

217

400

Gateway response looks blank or invalid. Please process the transaction again.

218

400

Account invalid or missing.

1000

400

The organisation is not found associated with this account.

1001

400

The payment service provider is not found associated with this account.

1002

400

The original transaction was not found.

1003

400

The refund amount entered does not match with the original transaction amount.

1006

400

The Currency is not associated with this PSP. Please enter a valid Currency.

1007

400

The Transaction Type is not associated with this PSP. Please enter a valid Transaction Type.

1009

400

The Country is not associated with this Organisation. Please enter a valid Country.

1011

400

The Captured amount does not match with the original transaction amount or Already been captured.

1014

400

The amount is already refunded.

1015

400

The amount is greater than captured amount.

1016

400

The transaction has not been captured yet.

1018

400

Organisation_psp with given Id does not exist. Please enter a valid organisation_psp_id.

1019

400

Currency with given Id does not exist. Please enter a valid currency_id.

1020

400

Organisation with given Id does not exist. Please enter a valid organisation_id.

1026

400

Unable to process request.

1029

400

A transaction has been attempted on this URL. Please create a new transaction.

1032

400

Gateway timeout.

1036

400

You are not authorised to use this service. Please speak to your Implementation Manager for further information.

1037

400

Capture_id is invalid or missing.

1038

400

Capture id is required for partially captured transactions

1040

400

No account found for the associated organisation.

1041

400

Webhook url should contain same domain as account webhook url.

1042

400

Account is not configured to support webhook notifications.

1047

400

You submitted a request that is not parsable.

1048

400

Product_id is invalid.

1049

400

Either organisationId or merchantReference is incorrect.

1050

400

The merchantReference is not unique.

1052

400

Account is not configured to support this request.

1053

400

Account is not configured to support the payment type.

1054

400

This was a duplicate request. Awaiting response from PSP for initial request.






BNPL Processing Errors



Apexx Decline Code

Apexx Processing Error

HTTP Status

reason_message

5


200

Do not honor

14


200

Invalid account number (no such number)

16


200

Insufficient funds

23


200

Unacceptable transaction

59


200

Suspected fraud

60


200

Declined by Risk

65


200

Activity count limit exceeded

1A


200

SCA Required by Issuer


APC_002

412

Error processing transaction


APC_003

412

Account configuration invalid


APC_006

412

Order details do not match request


APC_007

412

Malformed request


APC_008

412

Merchant account suspended


APC_009

412

Currency not supported


APC_016

412

Duplicate request


APC_019

412

Payment method not supported


APC_021

412

Request expired


APC_024

412

Action invalid or missing


APC_025

412

Amount invalid or missing


APC_030

412

Billing name invalid or missing


APC_033

412

Email invalid or missing


APC_034

412

Phone number invalid or missing


APC_031

412

Billing address invalid or missing


APC_033

412

Email invalid or missing


APC_034

412

Phone number invalid or missing


APC_035

412

Country code invalid or missing


APC_036

412

Merchant reference invalid or missing


APC_037

412

Remote address invalid or missing


APC_038

412

Redirect URL invalid or missing


APC_040

412

Merchant data invalid or missing


APC_044

412

Tax details invalid or missing


APC_053

412

Token invalid or missing


APC_054

412

Data invalid or missing


APC_056

412

Error processing request


APC_061

412

Try again later


APC_063

412

Authorisation code missing or invalid


APC_064

412

Order not found


APC_068

412

Refund not allowed or possible


APC_069

412

Network error


APC_073

412

Net amount doesn't match with items prices


APC_074

412

Gross amount doesn't match with items prices


APC_075

412

Customer number is invalid or missing


APC_076

412

Capture not allowed or possible


APC_077

412

Payment not yet ready for capture


APC_078

412

Void not allowed or possible


APC_080

412

Authorisation amount exceeded


APC_081

412

Transaction already refunded or settled or voided


APC_082

412

Third Party Processor error


APC_083

412

Payment product not supported or invalid












Sandbox APIs

Create Order

https://sandbox.apexx.global/atomic/v1/api/payment/bnpl


Capture

https://sandbox.apexx.global/atomic/v1/api/capture/%7Bid%7D


Refund

https://sandatomic.apexx.global/atomic/v1/api/refund/%7Bid%7D


Cancel Auth

https://sandatomic.apexx.global/atomic/v1/api/cancel/payment/%7Bid%7D


Production APIs 


Create Order

https://liveapi.apexx.global/atomic/v1/api/payment/bnpl


Capture

https://liveapi.apexx.global/atomic/v1/api/capture/{id}


Refund

https://liveapi.apexx.global/atomic/v1/api/refund/{id}


Cancel Auth

https://liveapi.apexx.global/atomic/v1/api/cancel/payment/{id}












BNPL Create Order Flow

The following steps outline the end to end payment flow for Laybuy.

Example Request

Send “Create Order” POST request to {{host}}/atomic/v1/api/payment/bnpl

Below is an Example request but please review the API Reference for full request requirements.  


 

   {

   "organisation": "{7ee2f6ecAa099A4a70Ab96fA9672787b9e69",

   "currency": "GBP",

   "amount": "1200",

   "net_amount": "1000",

   "capture_now": "false",

   "dynamic_descriptor": "abc",

   "merchant_reference": "JG-ACLB-189-0030",

   "locale": "EN",

   "customer_ip": "127.5.5.1",

   "user_agent": "string",

   "webhook_transaction_update": "http://www.string.com",

   "shopper_interaction": "ecommerce",

   "bnpl": {

       "payment_method": "bnpl_provider",

       "payment_type": "installment",

       "payment_type_data": [

           {

               "key_name": "string",

               "value": "string"

           }

       ]

   },

   "redirect_urls": {

       "success": "https://sandatomic.apexx.global/atomic/v1/api/return",

       "failed": "https://sandatomic.apexx.global/atomic/v1/api/return",

       "cancelled": "https://sandatomic.apexx.global/atomic/v1/api/return"

   },

   "items": [

       {

           "product_id": "12345",

           "group_id": "stuff",

           "item_description": "a thing",

           "net_unit_price": 500,

           "gross_unit_price": 600,

           "quantity": 1,

           "vat_percent": 20,

           "vat_amount": 100,

           "discount": 0,

           "product_image_url": "https://www.string.com",

           "product_url": "https://www.string.com",

           "additional_information": "string"

       },

               {

           "product_id": "54321",

           "group_id": "other stuff",

           "item_description": "another thing",

           "net_unit_price": 250,

           "gross_unit_price": 300,

           "quantity": 2,

           "vat_percent": 20,

           "vat_amount": 50,

           "discount": 0,

           "product_image_url": "https://www.string.com",

           "product_url": "https://www.string.com",

           "additional_information": "string"

       }

   ],

   "customer": {

       "customer_identification_number": "string",

       "identification_type": "SSN",

       "email": "test@mailinator.com",

       "phone": "63456345",

       "salutation": "Mr",

       "type": "company",

       "date_of_birth": "2020-02-02",

       "customer_number": "string",

       "gender": "male",

       "employment_type": "fulltime",

       "residential_status": "homeowner"

   },

   "billing_address": {

       "first_name": "Hello",

       "last_name": "Anderson",

       "email": "abc",

       "address": "string",

       "city": "Birmingham",

       "state": "West Mids",

       "postal_code": "B9 4AA",

       "country": "GB",

       "phone": "754736895"

   },

   "delivery_address": {

       "first_name": "Tester",

       "last_name": "McTestface",

       "phone": "1234567890",

       "salutation": "Mr",

       "type": "company",

       "care_of": "string",

       "address": "38 Piccadilly",

       "address2": "string",

       "city": "Bradford",

       "state": "West Yorkshire",

       "postal_code": "BD1 3LY",

       "country": "GB",

       "method": "delivery"


Example Response

You will receive an HTTP 201 response with a payment_flow of “redirect”, you should then redirect the customer to the url returned in the response:


{

   "payment_flow": "redirect",

   "organisation": "7ee2f6ecAa099A4a70Ab96fA9672787b9e69",

   "url": "https://sandatomic.apexx.global/atomic/v1/api/payment/checkout/79d72e42b72d43e3aca0f77359a23da320210715/page",

   "created_at": "2021-07-15T16:03:52.981",

   "trace_id": "2bf435d00b8f7975",

   "merchant_reference": "JG-ACLB-189-0030",

   "status": "AUTHENTICATION_REQUIRED",

   "reason_code": "0",

   "reason_message": "REQUEST_SUCCESS",

   "_id": "79d72e42b72d43e3aca0f77359a23da320210715"

}


CAPTURE - Example Request

Send “Capture an authorised transaction” POST request to {{host}}/atomic/v1/api/capture/{transactionId}


  • {transactionId} is the “_id” obtained in the URL string to the success URL i.e. _id=6e0315f1e3d94fb6845141cf6cbf1e1e20210616 as highlighted below


https://sandatomic.apexx.global/atomic/v1/api/return?status=SUCCESS&merchant_reference=JJ-AC-164-0006&_id=6e0315f1e3d94fb6845141cf6cbf1e1e20210616&payment_method=BNPL


The full URL path would be as below:


 {{host}}/atomic/v1/api/capture/6e0315f1e3d94fb6845141cf6cbf1e1e20210616


VOID/CANCEL - Example Request

Send “Voids an authorised transaction” POST request to {{host}}/atomic/v1/api/cancel/{cancelType}/{id}


  • {cancelType} is the type of cancel you want to initiate. For cancelling and authorisation the type is “payment” 

  • {id} is the “_id” obtained in the URL string to the success URL i.e. _id=1dfe19ac4c2f4b679613eeb9c827db7320210617 as highlighted below: 


https://sandatomic.apexx.global/atomic/v1/api/return?status=SUCCESS&merchant_reference=JJ-AC-164-0007&_id=1dfe19ac4c2f4b679613eeb9c827db7320210617&payment_method=BNPL


The full URL path would be as below:


{{host}}/atomic/v1/api/cancel/payment/1dfe19ac4c2f4b679613eeb9c827db7320210617


The request body is optional for the Void/ Cancel flow. For details of what can be sent please review the API Reference for full request requirements.  


REFUND - Example Request

Send “Refund an authorised transaction” POST request to {{host}}/atomic/v1/api/refund/{transactionId}


  • {transactionId} is the “_id” obtained in the URL string to the success URL i.e. _id=89bee4e8353c4622a821e4da34c3e55820210617 as highlighted below


https://sandatomic.apexx.global/atomic/v1/api/return?status=SUCCESS&merchant_reference=JJ-AC-164-0006&_id=74e390f246fc48d0852923092465277620210617&payment_method=BNPL


The full URL path would be as below:


{{host}}/atomic/v1/api/refund/89bee4e8353c4622a821e4da34c3e55820210617





Redirect

The redirect will take you to the BNPL Provider landing page for the user to create account/ sign in page


BNPL Provider Test Details

Laybuy Test Credentials

*Pre-registered customer accounts which can be used to login:

Pre-approved accounts:

perf_test10@test.com, 

perf_test11@test.com, 

perf_test12@test.com, 

perf_test13@test.com, 

perf_test14@test.com, 

perf_test15@test.com 


Password: Perftest1! 

Declined account: 

declined_failure@test.com 

Password: Declinetest1!


Openpay Test Credentials

Login using the test credentials provided. Sample below:


Username: training@openpay.co.uk

Password: Test123

Customer Email: apexxglobaluk@dispostable.com

Customer Password: Openpay2021

Customer ID: 900 015 347




Clearpay Test credentials


Use the below email address & valid UK phone number when prompted: Apexxtest123!


Emailuserid-apexxglobaluk@dispostable.com

Password: Apexxtest123!

Random phone number: +4407222 784531 Please note that no SMS messages will be sent when testing in the Sandbox environment and you should enter the following code to continue 111111


Complete the payment journey and enter your credentials


Once the payment details have been validated click on the “Submit Plan” button. This completes the payment process with Clearpay. Payment details listed below:


Card details: 4111 1111 1111 1111

Exp: 01/25

CVV: 000





























BNPL Connect Statuses


Response

Statuses

Redirection URL

PENDING


SUCCESS


DECLINED


CANCELLED


FAILED



Webhook

AUTHORISED


DECLINED


FAILED


CAPTURED



Database

AUTHENTICATION_REQUIRED


AUTHENTICATION_REQUIRED


AUTHORISED


DECLINED


CAPTURED


REFUNDED


FAILED


CANCELLED


PENDING


RECEIVED



GET TRANSACTION

AUTHENTICATION_REQUIRED


AUTHORISED


DECLINED


CAPTURED


REFUNDED


FAILED


CANCELLED


PENDING


RECEIVED