🇺🇿 UZ: Bank Cards

This page describes how to integrate payment for Uzbekistan bank Cards

📘

"paymentMethodName": "BankCardUZ"


Payment Method Features

Payment MethodHUMOUZCARD
CountryUzbekistanUzbekistan
Processing CurrenciesUZSUZS
PaymentsYesYes
-- Min per transaction amount500 UZS500 UZS
-- Max per transaction amount999,999,999 UZS999,999,999 UZS
-- AuthenticationSMSSMS
DisbursementsNoNo
RefundsFull & PartialFull & Partial
ChargebacksNoNo

Overview of the Possible Payment Scenarios:

Our API will provide you with all the necessary information to execute on of the following scenarios:

Name

Steps

CHALLENGE FLOW (CF)

  1. The user initiate payment with Ban Card details
  2. The client sends a request to create an intent
  3. Our system create a new intent and return response
  4. Our system initiate payment authorization
  5. The Bank-Issuer returns the response (including 3Ds Data)
  6. Our system returns 3Ds Data to the client.
  7. The client renders an iframe and posts 3Ds Data to the acsUrl.
  8. The user completes authentication (enters a 3DS code or SMS code).
  9. The system returns the payment status.

FRICTIONLESS FLOW (FF)

  1. The user initiate payment with Ban Card details
  2. The client sends a request to create an intent
  3. Our system create a new intent and return response
  4. Our system initiate payment authorization
  5. The Bank-Issuer returns the response (without 3Ds Data)
  6. Our system return latest payment status with webhook

Two-Step Payment (with 3DS) & Refund Workflow

📘

You can read more about how to integrate 3Dsv1 workflow here

High-resolution image is available on the link: (Two_Step_Payment_with_3Ds__Refund_Workflow.jpg


[Step 1.3] You need to create a new intent

  • Use the following API method to create an intent: *POST /processing/api/v1/intents*_.
  • When creating the intent, complete the Payment object.
  • Most fields are common across all payment methods and are thoroughly described in the API Reference section.
  • The incomingDetails - object with method-specific parameters ( please make sure you provided them correctly):
    • successUrl

    • failureUrl

    • viewType

    • number

    • holderName

    • cvv

    • expiryMonth

    • expiryYear

  • Ensure these all the required fields are completed accurately so that we can process your request correctly.

Request Example

{
  "clientReferenceId": "123456789",
  "payments": [
    {
      "paymentInstrument": {
        "paymentMethodName": "BankCardUZ",
        "incomingDetails": {
          "viewType": "web_view",
          "number": "4111111111111111",
          "cvv": "123",
          "holderName": "Will Rush",
          "expiryMonth": 12,
          "expiryYear": 2035,
          "successUrl": "successUrl",
          "failureUrl": "failureUrl"
        }
      },
      "submittedAmount": {
        "value": 100,
        "currency": "UZS"
      },
      "authCurrencyCode": "UZS"
    }
  ]
}

Request fields description

FieldRequiredTypeDescriptionExample
clientReferenceIdRequiredStringThe client/merchant intent reference. Aka, Transaction Reference1234
paymentsRequiredArray of objects--

Object "payment" fields description:

FieldRequiredTypeDescriptionExample
paymentInstrumentRequiredObjectThe receiver payment instrumentn/a
submittedAmountRequiredObjectn/a
authCurrencyCodeRequiredStringThe currency the transaction will be processed. Always UZS for this methodUZS

Object "payments[].paymentInstrument" fields description:

FieldRequiredTypeDescriptionExample
paymentMethodNameRequiredStringPayment method nameBankCardUZ
incomingDetailsRequiredObjectAdditional data related to payment methodn/a

Object "payments[].paymentInstrument.incomingDetails" fields description:

Field

Required

Type

Description

Example

viewType

Required

String

The method of displaying the payment page during the online payment process. Possible values: WEB_VIEW, IFRAME, REDIRECT

WEB_VIEW

number

Required

String

Primary Account Number (PAN), typically 16 digits (allow 12-19)

4111111111111111

cvv

Optional

String

Card verification code – 3 digits

123

holderName

Required

String

Cardholder name in Latin

Will Rush

expiryMonth

Required

String

Two-digit month 01–12

12

expiryYear

Required

String

Format: YYYY

2035

successUrl

Conditional

String

The URL for redirecting after a successful payment. Required if viewType = REDIRECT

failureUrl

Conditional

String

The URL for redirecting in case of a payment error. Required if viewType = REDIRECT


Object "payments[].submittedAmount" fields description:

FieldRequiredTypeDescriptionExample
valueRequiredNumberTransaction amount100.40
currencyRequiredStringThe original currency of the transaction. Can vary, will be converted into auth currency during the processingUSD

[Step FF 2.3] Challenge is not required: You will receive the latest Payment Authorisation Status

  • The issuing bank analysing the card details decides whether to verify the payer’s identity. Based on this decision or not:
    • Frictionless flow - The issuer considers the risk low and processes the transaction without further user interaction.
    • If the Frictionless flow is used, the transaction will be authorised or declined immediately.
  • You will receive this information through a webhook. Example are provided below:
{  
          "status": "AUTHORIZED",
          "errorCode": "CODE_PT0000",
          "errorMessage": "string"
        }


[Step CF 2.3] Challenge is required: You will receive 3DSv1 details

  • You will receive this information through a webhook.
  • In the webhook, you will receive an additional object additionalData. It contains the following fields:
    • acsUrl- AcsUrl for 3DS authentication; if present, the 3DS form should be displayed.
    • termUrl- Terminal URL
    • mdOrder- Order identifier used to open the 3DS form

Callback Example

    {
    	"cReq": "eyJ0cmFuc1R5cGUiOiJD...",
    	"acsUrl": "https://acs.visa.com/",
			"termUrl": "https://termurl.com/",
			"mdOrder": "mdOrder",
    	"errorDescription": null,
   		"threeDSSessionData": "session-xyz-987654321",
    	"paymentStatus": "AUTHORIZATION_REQUESTED"
    }

[Step 2.5] Render an iframe and auto-POST "termUrl", "mdOrder" to "acsUrl".

  • You need to render an iframe and auto-POST  "termUrl", "mdOrder" to "acsUrl". 
Load the issuer’s challenge UI for the cardholder

[Step 2.9] Challenge complete: You will receive the the latest Payment Authorisation Status

  • In the response, you will receive an additional object payments.additionalData.

Response Example

    {  
      "status": "AUTHORIZED",
      "errorCode": "CODE_PT0000",
      "errorMessage": "string"
    }

One-Step Payment (with 3DS) & Refund Workflow

📘

Our platform supports auto-capturing, which means you do not need to send a separate capture or cancellation request.

Please note that while auto-capturing reduces the number of actions required on your side, it does not allow you to cancel a transaction once it has been captured. In such cases, you would need to initiate a refund, which may incur additional charges.

Kindly let us know if you would like auto-capturing to be enabled for your account.


High-resolution image is available on the link


PAYMENTS TESTING

Bank Card UZ has many cases to test. The detailed description is available on the dedicated page