Create Seamless Transaction

This API is used to create transaction (directly with payment instrument details) which will provide seamless experience to user. It is like create transaction except for this API merchant must collect the applicable instrument details (e.g. card details) and same must be provided in the request. If successful, redirect URL will be provided in the response to complete the instrument authentication flow.

StepActorAction
1Merchant ServerCreate SeamlessTransaction Request and post it to Emirates NBD pay.
2Emirates NBD GatewayEmirates NBD Pay responds with an ACS URL to the merchant.
3Merchant ServerRedirect the customer to the provided ACS URL.
4Merchant ServerCustomer completes 3DS authentication and is redirected to the Emirates NBD Pay gateway.
5ACSDepending on whether the issuer ACS treats the transaction as challenge or frictionless, customer completes 3DS authentication and is redirected to Emirates NBD Pay.
6Emirates NBD Pay GatewayEmirates NBD Pay gateway completes authorization (Auth/Purchase) and redirects the customer to the merchant’s URL specified in app.redirecturl.
7Merchant ServerIf the webhook URL (app.webhook) was included in Step 1, Emirates NBD Pay sends a server-to-server notification for subscribed events.

HTTP Status and Response Status Matrix

HTTP
Status
Response StatusResponse Message
200CREATEDSuccess
400TRANSACTION_EXPIREDTransaction has expired,
create a new transaction.
400VALIDATION_ERRORWhen validation fails for request body,
field specific validation
errors will be returned.
400ERROR_FROM_PGThis will be populated by PG.
400INTERNAL_PROCESSING_ERRORGateway account not found.
500ERROR_FROM_PGThis will be populated by PG.
500INTERNAL_PROCESSING_ERRORSomething went wrong at our end,
try again after sometime
502ERROR_CONNECTING_PGGateway connectivity unavailable
503ERROR_CONNECTING_PGGateway connectivity unavailable
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required
length ≤ 20
^[0-9]+$

Amount to be charged. The amount is always considered in the smallest currency sub-unit i.e. to do transaction of 100 USD, provide 10000 as value. In the case of three decimal currencies, such as KWD, BHD and OMR, pass the value as 100000.

string
required
length ≤ 3
^[A-Z]{3}$

Currency in which transaction is to be done. It should follow ISO 4217 describing three-letter codes for currency. e.g. USD, EUR, AED, INR etc.

string
required
length ≤ 250
^[A-Za-z0-9#_,/().&:\\-]+$

Description of the transaction.

string
enum
required
length ≤ 20

For PURCHASE transaction type,
auto capture is enabled. If AUTH is passed,
then Capture Transaction API should be called separately to capture the transaction.

Allowed:
notes
object

Notes of the transaction. O – It will be provided back in response to the Check Transaction Status API and webhook.

app
object
required
string
required
length ≤ 18
^[0-9A-Za-z]+$

Order Id of the transaction. This will be forwarded to the PG if the underlying PG supports it. It may be present in the bank records/statements. NOTE: This is not considered for transaction idempotency

string
required
length ≤ 25

The payment modes allowed for the transaction.

customerDetails
object
required

Customer details including address. C – When provided it will be sent to PG if supported by PG. NOTE: Checkout is not storing any of the customer details.

refundConfig
object
required

This configuration will be used when the refund is initiated on the original transaction.

instruments
object
string
enum
length ≤ 2

O -The language parameter is optional; supported values are EN and AR. If provided, the response will be in the specified language; otherwise, it defaults to English (EN).

Allowed:
string
length ≤ 20
^[A-Za-z0-9]+$

O - The externalCustomerReference parameter, if provided in the request, will be returned in the fetch response and included in the webhook notification.

Headers
string
Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json