For any question, we are one click away

Contact us

AFT transactions

AFT overview

AFT (Account Funding Transaction) - a special type of P2P transaction for debiting of funds for the purpose of replenishing the client's internal account in the merchant's system or banking account in bank's system (often used as an alternative to the purchase operation).

AFT transactions use P2P service. This is a service available for customization and integration into third-party websites, mobile applications, as well as Internet and mobile banks.

Users have access to a complete list of operations, sending/receiving transfers, registering/authorizing in the service, managing saved cards.

AFT transaction flow scenario has the following specific:

AFT Operation scenario - inputting payment data on the side of payment gateway

sequenceDiagram participant C as Client participant OS as Online store participant PG as Payment Gateway participant ACS as ACS autonumber C ->> OS: Forming an Order OS ->> PG: Registering the Order PG -->> OS: orderId, formUrl OS -->> C: Redirecting to the card data collection form C ->> PG: Receiving the card data collection form PG -->> C: The card data collection form C ->> PG: Sending the data in the filled in form PG ->> PG: Checking if the card belongs to 3-D secure PG -->> C: Redirecting the client to ACS C ->> ACS: Receiving the authorization form ACS -->> C: The authorization form C ->> ACS: Filling in the form ACS -->> C: Redirecting the client to the Payment Gateway C ->> PG: Completing the secure payment PG ->> PG: Making the payment PG -->> C: Redirecting the client to the online store C ->> OS: Getting the page with the result OS ->> PG: Checking the status PG -->> OS: Status of the Order OS -->> C: Showing the result
  1. On the merchant's site (e.g. an online store) a cardholder requests to perform a P2P money transfer.
  1. The online store system registers the order in the Payment Gateway via registerP2P.do with the parameter features=WITHOUT_TO_CARD. The registration parameters used include the amount of the transfer, the currency, the order number in the merchant's system, and the return URL for the client.
  2. In response to the registration request, the Payment Gateway returns a unique identifier of the order in the payment system and the URL to redirect the client to the form for card data collection.
  3. The online store system passes the redirect URL received on step 3 to the client’s Web browser.
  4. The client’s Web browser opens the URL.
  5. At the specified URL, the client’s Web browser receives the form for card data collection.
  6. Client fills in the form and the data is sent to the Payment Gateway server.
  7. The system checks if the card belongs to 3-D Secure (SecureCode).
  8. The Gateway sends the redirect link to the Access Control Server (ACS) page of the issuing bank to the client’s Web browser (this step is necessary for the implementation of 3DS).
  9. The client’s Web browser requests the user authorization form from ACS.
  10. ACS sends the authorization form to the client’s Web browser.
  11. Client fills in the form and the information is sent to ACS.
  12. ACS processes the form and, regardless of the result, sends the redirect URL of the pages of the Payment Gateway to the client’s Web browser. The encrypted parameters of the authorization result are sent together with this URL.
  13. The client’s Web browser requests the Payment Gateway page when passing the encrypted parameters of the authorization result.
  14. Payment Gateway transfers the money.
  15. When the money is transferred, the Payment Gateway sends the return URL to the client’s Web browser (the URL was specified during the registration of the order by the online store on step 2).
  16. The client’s Web browser requests the results of the money transfer from the online store.
  17. The online store system requests the information about the order status from the payment gateway - getP2PStatus.do.
  18. Payment Gateway returns the status of the order.
  19. The online store system shows payment result to client.

AFT Operation scenario - inputting card data on the side of online store

This scenairo can be performed in two ways:

Registration and payment in a single request

sequenceDiagram participant C as Client participant OS as Online store participant PG as Payment Gateway participant 3DSS as 3DS Server participant ACS as ACS autonumber C ->> OS: Forming an Order OS ->> OS: Collecting card data OS ->> PG: Request instantPerformP2P.do PG -> 3DSS: Checking 3DSv2 availability PG -->> OS: Response to the request OS ->> 3DSS: Calling a hidden iframe (threeDSMethodURLServer) opt [if threeDSMethodURL is in response] OS ->> ACS: Calling a hidden iframe (threeDSMethodURL) end OS ->> PG: Second request instantPerformP2P.do PG ->> 3DSS: Authentication request 3DSS ->> ACS: Authentication request ACS -->> 3DSS: Response to the authentication request 3DSS -->> PG: Response to the authentication request PG -->> OS: Response to the second instantPerformP2P.do opt [Redirection to ACS is required] OS ->> ACS: CReq (ChallengeRequest) ACS -->> C: HTML form to pass authentication C ->> ACS: Confirmation of authenticity ACS ->> ACS: Data processing ACS -> 3DSS: Data exchange ACS -->> C: Result of data processing and redirecting the client to the store page OS ->> PG: finish3dsVer2Payment.do PG -->> OS: Response to the request end OS ->> PG: Order status request PG -->> OS: Response to the order status request OS -->> C: Showing the result
  1. A cardholder (client) interacts with the online store to create an order.
  2. The online store system collects card data on its side.
  3. The online store system registers the order and initiates payment via the instantPerformP2P.do request.
  4. Payment Gateway checks on the 3DS server whether the client can authenticate using the 3DS2 Protocol.
  5. Payment Gateway sends a response to the request. The response also returns the following parameters:
    • threeDSServerTransId - transaction identifier assigned by the 3DS server
    • threeDSMethodURLServer - address of the 3DS server for collecting browser data
    • threeDSMethodURL - (optional) address of the ACS server for collecting browser data
    • threeDSMethodDataPacked - (optional) data for collecting browser data on ACS

    (See also request description).
  6. The online store calls threeDSMethodURLServer, in a separate "iframe" with the help of the POST method, using the value received from the response to the request for transfer of funds. This allows the 3DS server to collect data about the customer's browser.
  7. Optional. If threeDSMethodURL and threeDSMethodDataPacked parameters were received in the response to the request for transfer of funds, the online store calls threeDSMethodURL in a separate iframe using the POST method.
  8. The online store resends the instantPerformP2P.do request to make money transfer.
    You must pass threeDSServerTransId parameter - transaction identifier which was created by the 3DS server and returned in the step 5.
  9. Payment Gateway sends an authentication request to the 3DS server.
  10. 3DS server sends an authentication request to ACS.
  11. ACS server verifies the authenticity of the authentication data.
  12. 3DS server sends the received data to the Payment Gateway.

    • If the client does not need to authenticate to the ACS, the Payment Gateway returns a response to the request. In this case, go to the step 22 of this flow.
    • If the client needs to authenticate to the ACS, the Payment Gateway will send a response to the payment page with the data of redirection to the ACS.
  13. The payment page redirects to the acsUrl with the parameter creq=packedCReq.
  14. ACS displays the authentication page to the client ("challenge" page).
  15. Client is authenticated.
  16. ACS server verifies the authenticity of the authentication data.
  17. Data is exchanged between the ACS and 3DS servers and processing result is confirmed.
  18. The ACS server redirects the client to the store's page.
  19. The online store sends /p2p/finishThreeDsVer2.do request to the Payment Gateway.
  20. Payment Gateway sends the online store a response to the request made.
  21. The online store sends getP2PStatus.do to the Payment Gateway to find out the order status.
  22. Payment Gateway sends a response to the request made.
  23. The online store displays the result page to the client.

Registration and payment in separate requests

sequenceDiagram participant C as Client participant OS as Online store participant PG as Payment Gateway participant 3DSS as 3DS Server participant ACS as ACS autonumber C ->> OS: Forming an Order OS ->> PG: Registering the Order PG -->> OS: Response to order registration OS -->> C: Redirecting to the card data collection form C ->> OS: Submitting the data opt [Fee is used] OS ->> PG: Requesting the fee amount PG -->> OS: Receiving the fee amount end OS ->> PG: Request for a card-to-card transfer PG -> 3DSS: Checking 3DSv2 availability PG -->> OS: Response to the request for card-to-card transfer OS ->> 3DSS: Calling a hidden iframe (threeDSMethodURLServer) opt [threeDSMethodURL is in response] OS ->> ACS: Calling a hidden iframe (threeDSMethodURL) end OS ->> PG: Second request for transfer of funds PG ->> 3DSS: Authentication request 3DSS -> ACS: Data exchange 3DSS -->> PG: Response to the authentication request PG -->> OS: Response to the second order payment request opt [Redirection to ACS is required] OS ->> ACS: CReq (ChallengeRequest) ACS -->> C: HTML form to pass authentication C ->> ACS: Confirmation of authenticity ACS ->> ACS: Data processing ACS -> 3DSS: Data exchange ACS -->> C: Result of data processing and redirecting the client to the store page OS ->> PG: finish3dsVer2Payment.do PG -->> OS: Response to the request end OS ->> PG: Order status request PG -->> OS: Response to the order status request OS -->> C: Showing the result
  1. A cardholder (client) interacts with the online store to create an order.
  2. The online store system registers the order in the Payment Gateway via registerP2P.do with the parameter features=WITHOUT_TO_CARD. The registration parameters used include the amount of the transfer, the currency, the order number in the merchant's system, and the return URL for the client.
  3. In response to the registration request, the Payment Gateway returns a unique identifier of the order in the payment system and the URL to redirect the client to the form for card data collection.
  4. The online store system passes the redirect URL received on step 3 to the client’s Web browser.
  5. Client fills in the form and submits the data.
  6. Optional. If the online store works with the fees, the online store sends to the Payment Gateway a request for the fee sum via verifyP2P.do / verifyP2PByBinding.do.
  7. Optional. Payment Gateway sends in response the fee amount.
  8. The online store sends a request for transfer of funds to the Payment Gateway via performP2P.do / performP2PByBinding.do specifying data of the card to be debited in fromCard block.
    At this stage, the 3DS2 operation is initiated.
  9. Payment Gateway checks on the 3DS server whether the client can authenticate using the 3DS2 Protocol.
  10. Payment Gateway sends a response to the request made in the step 6. The response also returns the following parameters:
    • is3DSVer2 - 3DSv2 authentication capability flag (true/false)
    • threeDSServerTransId - transaction identifier assigned by the 3DS server
    • threeDSMethodURLServer - address of the 3DS server for collecting browser data
    • threeDSMethodURL - (optional) address of the ACS server for collecting browser data
    • threeDSMethodDataPacked - (optional) data for collecting browser data on ACS

    (See also request description).
  11. The online store calls threeDSMethodURLServer, in a separate "iframe" with the help of the POST method, using the value received from the response to the request for transfer of funds. This allows the 3DS server to collect data about the customer's browser.
  12. Optional. If threeDSMethodURL and threeDSMethodDataPacked parameters were received in the response to the request for transfer of funds, the online store calls threeDSMethodURL in a separate iframe using the POST method.
  13. Transfer of funds - stage 2. The online store resends the request to make money transfer via performP2P.do / performP2PByBinding.do.
    You must pass threeDSServerTransId parameter - transaction identifier which was created by the 3DS server and returned in the step 10.
  14. Payment Gateway sends an authentication request to the 3DS server.
  15. Data is exchanged between the ACS and 3DS servers.
  16. 3DS server sends the received data to the Payment Gateway.

    • If the client does not need to authenticate to the ACS, the Payment Gateway returns a response to the request for transfer of funds. In this case, go to the step 27 of this flow.
    • If the client needs to authenticate to the ACS, the Payment Gateway will send a response to the payment page with the data of redirection to the ACS.
  17. The payment page redirects to the acsUrl with the parameter creq=packedCReq.
  18. ACS displays the authentication page to the client ("challenge" page).
  19. Client is authenticated.
  20. ACS server verifies the authenticity of the authentication data.
  21. Data is exchanged between the ACS and 3DS servers and processing result is confirmed.
  22. The ACS server redirects the client to the store's page.
  23. The online store sends /p2p/finishThreeDsVer2.do request to the Payment Gateway.
  24. Payment Gateway sends the online store a response to the request made.
  25. The online store sends getP2PStatus.do to the Payment Gateway to find out the order status.
  26. Payment Gateway sends a response to the request made.
  27. The online store displays the result page to the client.

API calls

AFT integrations require API calls to be signed. Information about request signatures is available in our API Guide.

P2P order registration

To register an order for the card-to-card money transfer, use https://dev.processing.ae/payment/rest/api/p2p/registerP2P.do request.


When sending the request, you should use the header: Content-Type: application/json

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
MandatoryorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
MandatoryamountInteger [0..12]Payment amount in minor currency units (e.g. in cents).
MandatorycurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
MandatoryreturnUrlString [1..512]The address to which the user will be redirected if the payment is successful. The address must be specified in full including the protocol used (for example, https://mybestmerchantreturnurl.com instead of mybestmerchantreturnurl.com). Otherwise, the user will be redirected to the address of the following type https://dev.processing.ae/payment/<merchant_address>.
OptionalfailUrlString [1..512]The address to which the user is to be redirected in case of a failed payment. The address must be specified in full including the protocol used (for example, https://mybestmerchantreturnurl.com instead of mybestmerchantreturnurl.com). Otherwise, the user will be redirected to the address of the following type https://dev.processing.ae/payment/<merchant_address>.
OptionalorderDescriptionString [1..600]Order description passed to the payment gateway during the registration.
It is not allowed to fill this parameter with personal data or payment data (card numbers, etc.). This requirement is due to the fact that the order description is not masked in Merchant Portal and log files.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
OptionalclientIdString [0..255]Customer number (ID) in the merchant's system — up to 255 characters. Used to implement the functionality of stored-credential transactions. Can be returned in the response if the merchant is allowed to store credentials.
Specifying this parameter in stored-credential transactions is mandatory. Otherwise, a payment will be unsuccessful.
OptionalmerchantLoginString [1..255]To register an order on behalf of another merchant, specify the merchant's API account login in this parameter.
Can be used only if you have the permission to see the transactions of other merchants or if the specified merchant is your child merchant.
OptionaldynamicCallbackUrlString [1..512]This parameter allows you to use the functionality of sending callback notifications dynamically. Here you can pass the address to which all "payment" callback notifications activated for the merchant will be sent. "Payment" notifications are callback notifications related to the following events: successful hold, payment declined by timeout, cardpresent payment is declined, successful debit, refund, cancellation. At the same time, callback notifications activated for the merchant that are not related to payments (enabling/disabling a stored credential, storing a credential) will be sent to a static address for callbacks. Whether the parameter is mandatory or not depends on the merchant configuration on Payment Gateway side.
OptionalsessionTimeoutSecsInteger [1..9]Order lifetime in seconds. If the parameter is not specified, the value specified in the merchant settings or the default value (1200 seconds = 20 minutes) will be used. If the request contains expirationDate, the value of sessionTimeoutSecs is not taken into account.
OptionalsessionExpiredDateStringData and time of the order expiry. Format used: yyyy-MM-ddTHH:mm:ss.
If this parameter is not passed in the request, sessionTimeoutSecs is used to define the expiry of the order.
OptionalmccInteger [4]Merchant Category Code.
Using this parameter requires a special permission. You can use only the values from the predefined list of allowed MCC values. Contact the support team for details.
OptionalbindingIdString [1..255]Identifier of an already existing stored credential. This is the card ID tokenized by the Gateway. Can be used only if the merchant has the permission to work with stored credentials. If this parameter is passed in this request, it means that:
  • This order can only be paid with a stored credential;
  • The payer will be redirected to a payment page where only CVC entry is required.
OptionalcreditBindingIdString [0..255]Identifier of the stored credential of the card to be credited. It is used in card-to-card transfers when the recipient's card is known in advance. This parameter should first be passed in the request for transfer register (registerP2P.do - clientId parameter should also be passed here), then in the request for transfer funds by binding (performP2PByBinding.do - the value of creditBindingId parameter passed in registerP2P.do should be passed in bindingId parameter in toCard block).
ConditionaltransactionTypeIndicatorStringIndicator of transaction type. It is used in one-direction types of transaction.
There are such possible values:
  • A – Account to Account (one person)
  • B – Business to business transfer
  • C – Transfer for the purpose of purchasing cryptocurrency
  • D – Funds Disbursement
  • F – Transfer for gambling betting
  • G – Online gambling payout
  • H – Cash Out (Withdrawal)
  • I – Government disbursment
  • J – Money transfer – bank-initiated
  • L – Non-Card Bill Payment
  • O – Credit card Bill Payment
  • P – Person to Person (different persons)
  • W – Transfer to own account of a staged digital wallet for payment.
ConditionalfeaturesObjectField for feature parameter, is mandatory for one-direction operations.
If AFT operation is performed (transfer from card to account) - WITHOUT_TO_CARD should be passed in feature parameter. Additionally, if a follow-up OCT operation is expected after this AFT operation, the OCT_EXPECTED value should be passed.
Example: "features" : { "feature" : ["WITHOUT_TO_CARD"] }
If OCT operation is performed (transfer from account to card) - WITHOUT_FROM_CARD should be passed in feature parameter.
Example: "features" : { "feature" : ["WITHOUT_FROM_CARD"] }
To specify multiple features, use this parameter several times in one request.
OptionalparamsObjectFields for storing additional order information, must be passed as follows:
"params": [ {"name": "param1", "value": "value1"}, {"name": "param2", "value": "value2"} ].
These fields can be passed to the processing bank for further display in the bank registries.
By default orderNumber (order number) and orderDescription (order description) are passed. OrderDescription must not exceed 99 characters, do not use the following characters: %, +, end of line \r and line break \n).

To enable this functionality contact the bank.
OptionalfeeInputStringFee amount in minimum currency units. Must be enabled by respective Merchant-level permission in the Gateway. If merchant has special permission and performs AFT (Account Funding Transaction) operations, the Merchant's commission comes in the registration request and is sent to the message for processing.
  • If feeInput is greater than 0, the externalFee attribute will be added to the TransactionModel, when the verifyP2P.do request is called, a verify request will not be sent to processing. The following tags will be added to the processing request, if they were passed in the additional parameters of the registration request: acc_number, contract, fio_sender, reference, fio_reciever.
  • If the feeInput is null or 0, the usual registerP2P.do request will be executed (the externalFee attribute will not be added, when the verifyP2P.do request is called, a verify request will be sent to processing).
OptionalshippingPayerDataObjectObject containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalpreOrderPayerDataObjectObject containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalorderPayerDataObjectObject containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.
OptionalbillingAndShippingAddressMatchIndicatorString [1]Indicator for matching the cardholder's billing address and shipping address. This parameter is used for further 3DS authentication of the customer.
Possible values:
  • Y - the cardholder's billing address and shipping address match;
  • N - cardholder billing address and shipping address do not match.
ConditionalbillingPayerDataObjectA block with the client's registration data (address, postal code) necessary for passing the address verification within the AVS/AVV services and other information like the payer's name, document number, etc. Mandatory if the feature is enabled for the merchant on Payment Gateway side. Should be included either in registerP2P.do request or performP2P.do request. See nested parameters.
ConditionalbillingRecipientDataObjectA block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. Should be included either in registerP2P.do request or performP2P.do request. See nested parameters.
OptionaldebitMdOrderString [1..36]Unique number of the order for which AFT transfer in IPay was performed. This parameter is used for OCT operations for P2P transfers (AFT+OCT).
ConditionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent.
OptionaltransactionPurposeStringTransaction purpose (used for OCT transactions using Mastercard). Possible values:
  • FAMILY_SUPPORT or 0
  • REGULAR_LABOR_TRA or 1
  • TRAVEL_AND_TOURISM or 2
  • EDUCATION or 3
  • HOSPITALIZATION or 4
  • EMERGENCY_NEED or 5
  • SAVING or 6
  • GIFTS or 7
  • OTHER or 8
  • SALARY or 9
  • CROWD_LENDING or 10
  • CRYPTO_CURRENCY or 11
  • REFUND_ORIGINAL or 12
  • REFUND_NEW_CARD or 13
  • TRANSFER_SAME_WAL or 14
  • BOLETO_PAYMENT or 15
  • HIGH_RISK_SECURITY or 16
  • RECYCLING_DEPOSIT_RETURN or 17
  • VALUE_ADDED_TAX or 18
OptionalserviceProcessingTypeStringThe type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:
  • NORMAL or 00
  • ORIG_HOLD or 01
  • VISA_DEFERRED_DEFAULT or 02
  • VISA_DEFERRED_CUSTOM or 03
  • CANCEL_DEFERRED or 09
  • VISA_DIRECT_CUSTOM or 0I
  • DEFERRED_OCT_QUERY or 0Q
  • REC_PAYOUT or 0R
  • ALIAS_DIRECTORY or A0

Description of parameters in shippingPayerData object:

RequiredNameTypeDescription
OptionalshippingCityString [1..50]The customer's city (from the delivery address)
OptionalshippingCountryString [1..50]The customer's country
OptionalshippingAddressLine1String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine2String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine3String [1..50]The customer's primary address (from the shipping address)
OptionalshippingPostalCodeString [1..16]The customer's zip code for delivery
OptionalshippingStateString [1..50]Customer's state/region (from delivery address)
OptionalshippingMethodIndicatorInteger [2]Shipping Method Indicator.
Possible values:
  • 01 - delivery to the cardholder's billing address
  • 02 - delivery to another address verified by Merchant
  • 03 - delivery to an address other than the cardholder's primary (settlement) address
  • 04 - shipment to the store/self-collection (the store address should be specified in the relevant delivery parameters)
  • 05 - Digital distribution (includes online services and e-gift cards)
  • 06 - travel and event tickets that are not deliverable
  • 07 - Other (e.g. games, non-deliverable digital goods, digital subscriptions, etc.)
OptionaldeliveryTimeframeInteger [2]Product delivery timeframe.
Possible values:
  • 01 - digital distribution
  • 02 - same-day delivery
  • 03 - overnight delivery
  • 04 - delivery within 2 days after payment and later
OptionaldeliveryEmail String [1..254]Target email address for delivery of digital distribution. Note that it is preferrable to pass the email in a separate email parameter of the request. The deliveryEmail parameter specified in this block is only used to fill MerchantRiskIndicator during 3DS authorization.

Description of parameters in preOrderPayerData object:

RequiredNameTypeDescription
OptionalpreOrderDateString [10]Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
OptionalpreOrderPurchaseIndInteger [2]Indicator of a customer placing an order for available or future delivery.
Possible values:
  • 01 - delivery available;
  • 02 - future delivery
OptionalreorderItemsIndInteger [2]An indicator that the customer is rebooking a previously paid delivery as part of a new order.
Possible values:
  • 01 - order placed for the first time;
  • 02 - repeated order

Description of parameters in orderPayerData object:

RequiredNameTypeDescription
OptionalhomePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
OptionalworkPhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

ConditionalmobilePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

For payment by VISA with 3DS authorization, it is necessary to specify either phone or email of the cardholder. If you have a setting to display phone number on the payment page and have specified an invalid number, the customer will have a possibility to correct it on the payment page.

Below are the parameters of the billingPayerData block (data about the client registration address).

RequiredNameTypeDescription
ConditionalbillingCityString [0..50]The city registered on a specific card of the Issuing Bank. Mandatory for AFT transactions using Visa.
ConditionalbillingCountryString [0..50]The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Visa.
ConditionalbillingAddressLine1String [0..50]The address registered on a specific card of the Issuing Bank (A payer's address). Line 1. Mandatory to be passed in order AVS verification works. Mandatory for AFT transactions using Visa.
OptionalbillingAddressLine2String [0..50]The address registered on a specific card of the Issuing Bank. Line 2.
OptionalbillingAddressLine3String [0..50]The address registered on a specific card of the Issuing Bank. Line 3.
OptionalbillingPostalCodeString [0..9]Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
OptionalbillingStateString [0..50]The state registered on a specific card of the Issuing Bank. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
MandatorypayerAccountString [1..32]Payer's account number.
ConditionalpayerLastNameString [1..64]Payer's last name. Mandatory for AFT transactions using Visa.
ConditionalpayerFirstNameString [1..35]Payer's first name. Mandatory for AFT transactions using Visa.
OptionalpayerMiddleNameString [1..35]Payer's middle name.
OptionalpayerCombinedNameString [1..99]Payer's full name.
OptionalpayerIdTypeString [1..8]Type of the payer's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalpayerIdNumberString [1..100]Number of the payer's identifying document (e.g. passport) provided.
ConditionalpayerBirthdayString [1..20]Payer's birth date in the YYYYMMDD format. Mandatory for AFT transactions using Visa.
OptionalpayerAccountNumberTypeString [1..20]Payer's account number type. Mandatory for OCT transactions using Mastercard. Possible values:
  • RTN or 1 – RTN + Bank Account
  • IBAN or 2 – IBAN
  • CARD_ACCOUNT or 3 – Card Account
  • EMAIL or 4– Email
  • PHONE_NUMBER or 5 – Phone Number
  • BAN_AND_BIC or 6 – Bank account number (BAN) + Bank Identification Code (BIC)
  • WALLET_ID or 7 – Wallet Id
  • SOCIAL_NETWORK_ID or 8 – Social Network Id
  • OTHER or 100 – Other

Below are the parameters of the billingRecipientData block (data about the recipient).

RequiredNameTypeDescription
OptionalrecipientCityString [0..40]The recipient city code in the ISO 3166-1 alpha-3 format.
ConditionalrecipientCountryString [0..50]The recipient country code. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Mastercard.
OptionalrecipientAddressLine1String [0..50]The recipient address. Can contain Latin characters only.
OptionalrecipientPostalCodeString [0..9]Postal code of the recipient.
OptionalrecipientStateString [0..50]The recipient state code. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
ConditionalrecipientAccountString [0..32]Recipient's account number. Mandatory for AFT transactions using Mastercard.
ConditionalrecipientAccountNumberTypeInteger [1..2]Type of recipient account. Available values:
  • 1 - RTN + Bank Account;
  • 2 - IBAN;
  • 3 - Card Account;
  • 4 - E-mail;
  • 5 - Phone Number;
  • 6 - Bank account number (BAN) + Bank Identification Code (BIC);
  • 7 - Wallet Id;
  • 8 - Social Network Id;
  • 100 - Other.

Mandatory for AFT transactions using Mastercard.
MandatoryrecipientLastNameString [0..35]Recipient's last name.
MandatoryrecipientFirstNameString [0..35]Recipient's first name.
OptionalrecipientMiddleNameString [0..35]Recipient's middle name.
OptionalrecipientCombinedNameString [0..99]Recipient's full name.
OptionalrecipientIdTypeString [1..8]Type of the recipient's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalrecipientIdNumberString [1..99]Number of the recipient's identifying document provided.
OptionalrecipientBirthdayString [1..20]Recipient's birth date in the format YYYYMMDD.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalformUrlString [1..512]URL of the payment form, to which a customer will be redirected The URL is not returned if the registration of the order fails due to an error specified in errorCode.
OptionalorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
OptionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.

Examples

Request example

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/registerP2P.do' 
   -H 'Content-Type: application/json' 
   --data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "amount" : 50000,
  "currency" : "978",
  "returnUrl" : "https://mybestmerchantreturnurl.com",
  "orderNumber": "1"
}'

Request example of OCT operation

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/registerP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "amount" : 50000,
  "currency" : "978",
  "returnUrl" : "https://mybestmerchantreturnurl.com",
  "orderNumber": "12",
  "clientId": "122313",
  "creditBindingId": "99ef0cee-34fe-7312-ad7c-78bc00b3236a",
  "transactionTypeIndicator": "A",
  "features":{
      "feature":["FEATURE_1", "FEATURE_2", .. "FEATURE_N"]
   }
}'

Request example with specifying payer and recipient data

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/registerP2P.do' \
--header 'Content-Type: application/json' \
--data-raw '{ 
  "username": "test_user",
  "password": "test_user_password",
  "amount" : 1500,
  "currency" : "978",
  "returnUrl" : "https://mybestmerchantreturnurl.com",
  "failUrl" : "https://failUrl.com",
  "orderNumber": "01rthtbkuysgr",
  "email" : "test@test.com",
  
    "billingPayerData": {
        "payerAccount": "DE89370400440532013000",
        "payerLastName": "CHINA",
        "payerFirstName": "Mieville",
        "payerMiddleName": "Tom",
        "payerCombinedName": "CHINA Mieville",
        "payerIdType": "IDTP1",
        "payerIdNumber": "792209292",
        "billingCity": "BUD",
        "billingCountry": "348",
        "billingAddressLine1": "Terez krt",
        "billingAddressLine2": "Terez krt",
        "billingAddressLine3": "Terez krt",
        "billingPostalCode": "1067",
        "billingState": "VI",
        "payerBirthday": "19900101"
    },
    "billingRecipientData": {
        "recipientAccount": "DE89370400440532013000",
        "recipientLastName": "CHINA",
        "recipientFirstName": "Mieville",
        "recipientMiddleName": "Tom",
        "recipientCombinedName": "CHINA Mieville",
        "recipientIdType": "IDTP1",
        "recipientIdNumber": "792209292",
        "recipientCity": "BUD",
        "recipientCountry": "348",
        "recipientAddressLine1": "Terez krt",
        "recipientPostalCode": "1067",
        "recipientState": "VI",
        "recipientBirthday": "19900101"
    }
}'

Response example

{
  "errorCode": 0,
  "errorMessage": "Successful",
  "orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
  "formUrl": "https://dev.processing.ae/payment/merchants/ecom/payment.html?mdOrder=0a4eaae8-653a-71a9-8259-46fc00a8ea58&language=en",
  "orderNumber": "2009"
}

Fee amount

To obtain the fee amount for the money transfer, use https://dev.processing.ae/payment/rest/api/p2p/verifyP2P.do request.


When sending the request, you should use the header: Content-Type: application/json

The structure of the verifyP2P.do request assumes the existence of the fromCard block to pass the attributes of the card to be debited and the toCard block to pass the attributes of the card to be credited.

Depending on the business processes of the bank and the online store, the following options are possible when carrying out a card-to-card money transfer:

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
MandatoryorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
OptionalamountString [0..12]Transfer amount in minor currency units (e.g. in cents).
This parameter is passed if the payer decides to change the transfer amount when carrying out the money transfer.
OptionalmccInteger [4]Merchant Category Code.
Using this parameter requires a special permission. You can use only the values from the predefined list of allowed MCC values. Contact the support team for details.
OptionalbillingPayerDataObjectA block with the client's registration data (address, postal code) necessary for passing the address verification within the AVS/AVV services and other information like the payer's name, document number, etc. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
OptionalbillingRecipientDataObjectA block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
MandatoryfromCardObjectA block with the attributes of the card to be debited. See nested parameters.
MandatorytoCardObjectA block with the attributes of the card to be credited. See nested parameters.

The fromCard block includes the following possible parameters:

RequiredNameTypeDescription
ConditionalpanString [1..19]The number of the card to be debited.
ConditionalcvcString [3]CVC/CVV2 code on the back of a card to be debited.
Is mandatory if the payment is performed without stored credential or the merchant does not have a permission to pay without CVC.
Only digits are allowed.
ConditionalexpirationYearInteger [4]The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
ConditionalexpirationMonthInteger [2]The month of expiration of the card that is to be debited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
MandatorycardholderNameString [1..26]The name of the holder of the card that is to be debited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, PAN, EXPDATE, MDORDER.
Click here for more information about seToken generation.

The toCard block consists of the following possible parameters:

RequiredNameTypeDescription
ConditionalpanString [1..19]The number of the card to be credited.
OptionalexpirationYearInteger [4]The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
OptionalexpirationMonthInteger [2]The month of expiration of the card that is to be credited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be credited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, bindingId, MDORDER. Click here for more information about seToken generation.

Below are the parameters of the billingPayerData block (data about the client registration address).

RequiredNameTypeDescription
ConditionalbillingCityString [0..50]The city registered on a specific card of the Issuing Bank. Mandatory for AFT transactions using Visa.
ConditionalbillingCountryString [0..50]The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Visa.
ConditionalbillingAddressLine1String [0..50]The address registered on a specific card of the Issuing Bank (A payer's address). Line 1. Mandatory to be passed in order AVS verification works. Mandatory for AFT transactions using Visa.
OptionalbillingAddressLine2String [0..50]The address registered on a specific card of the Issuing Bank. Line 2.
OptionalbillingAddressLine3String [0..50]The address registered on a specific card of the Issuing Bank. Line 3.
OptionalbillingPostalCodeString [0..9]Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
OptionalbillingStateString [0..50]The state registered on a specific card of the Issuing Bank. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
MandatorypayerAccountString [1..32]Payer's account number.
ConditionalpayerLastNameString [1..64]Payer's last name. Mandatory for AFT transactions using Visa.
ConditionalpayerFirstNameString [1..35]Payer's first name. Mandatory for AFT transactions using Visa.
OptionalpayerMiddleNameString [1..35]Payer's middle name.
OptionalpayerCombinedNameString [1..99]Payer's full name.
OptionalpayerIdTypeString [1..8]Type of the payer's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalpayerIdNumberString [1..100]Number of the payer's identifying document (e.g. passport) provided.
ConditionalpayerBirthdayString [1..20]Payer's birth date in the YYYYMMDD format. Mandatory for AFT transactions using Visa.
OptionalpayerAccountNumberTypeString [1..20]Payer's account number type. Mandatory for OCT transactions using Mastercard. Possible values:
  • RTN or 1 – RTN + Bank Account
  • IBAN or 2 – IBAN
  • CARD_ACCOUNT or 3 – Card Account
  • EMAIL or 4– Email
  • PHONE_NUMBER or 5 – Phone Number
  • BAN_AND_BIC or 6 – Bank account number (BAN) + Bank Identification Code (BIC)
  • WALLET_ID or 7 – Wallet Id
  • SOCIAL_NETWORK_ID or 8 – Social Network Id
  • OTHER or 100 – Other

Below are the parameters of the billingRecipientData block (data about the recipient).

RequiredNameTypeDescription
OptionalrecipientCityString [0..40]The recipient city code in the ISO 3166-1 alpha-3 format.
ConditionalrecipientCountryString [0..50]The recipient country code. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Mastercard.
OptionalrecipientAddressLine1String [0..50]The recipient address. Can contain Latin characters only.
OptionalrecipientPostalCodeString [0..9]Postal code of the recipient.
OptionalrecipientStateString [0..50]The recipient state code. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
ConditionalrecipientAccountString [0..32]Recipient's account number. Mandatory for AFT transactions using Mastercard.
ConditionalrecipientAccountNumberTypeInteger [1..2]Type of recipient account. Available values:
  • 1 - RTN + Bank Account;
  • 2 - IBAN;
  • 3 - Card Account;
  • 4 - E-mail;
  • 5 - Phone Number;
  • 6 - Bank account number (BAN) + Bank Identification Code (BIC);
  • 7 - Wallet Id;
  • 8 - Social Network Id;
  • 100 - Other.

Mandatory for AFT transactions using Mastercard.
MandatoryrecipientLastNameString [0..35]Recipient's last name.
MandatoryrecipientFirstNameString [0..35]Recipient's first name.
OptionalrecipientMiddleNameString [0..35]Recipient's middle name.
OptionalrecipientCombinedNameString [0..99]Recipient's full name.
OptionalrecipientIdTypeString [1..8]Type of the recipient's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalrecipientIdNumberString [1..99]Number of the recipient's identifying document provided.
OptionalrecipientBirthdayString [1..20]Recipient's birth date in the format YYYYMMDD.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.

The feeDescriptionList block includes the following parameters:

RequiredNameTypeDescription
OptionalfeeAmountInteger [1..12]Fee amount.
OptionalfeeCurrencyString [3]The ISO 4217 code of the fee currency.
OptionalfeeDescriptionString [1..512]The description of the fee.

Examples

Request example

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/verifyP2P.do' -H 'Content-Type: application/json' --data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
  "fromCard": {
    "cardholderName": "TEST CARDHOLDER",
	"cvc": "123",
	"expirationMonth": 12,
	"expirationYear": 2030,
	"pan": "5000001111111115"
  },
  "toCard": {
    "pan": "4000001111111118"
  },	
  "amount" : 50000
}'

Response example

{
  "errorCode": 0,
  "errorMessage": "Successful",
  "feeDescriptionList: [ {
    "feeAmount": 500,
	"feeCurrency": "978",
	"feeDescription": "Acquirer fee"
  } ]
}

Stored-credential P2P fee amount

To get the amount of commission when transferring funds by a stored-credential transaction, use the https://dev.processing.ae/payment/rest/api/p2p/verifyP2PByBinding.do request.


When sending the request, you should use the header: Content-Type: application/json

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
OptionalmccInteger [4]Merchant Category Code.
Using this parameter requires a special permission. You can use only the values from the predefined list of allowed MCC values. Contact the support team for details.
MandatoryorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
MandatoryfromCardObjectA block with the attributes of the card to be debited. See nested parameters.
MandatorytoCardObjectA block with the attributes of the card to be credited. See nested parameters.

The fromCard block includes the following possible parameters:

RequiredNameTypeDescription
ConditionalbindingIdString [1..255]Identifier of the credentials stored when paying for the order or used for payment. Available only if the merchant is allowed to store credentials.
ConditionalpanString [1..19]The number of the card to be debited.
ConditionalcvcString [3]CVC/CVV2 code on the back of a card to be debited.
Is mandatory if the payment is performed without stored credential or the merchant does not have a permission to pay without CVC.
Only digits are allowed.
ConditionalexpirationYearInteger [4]The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
ConditionalexpirationMonthInteger [2]The month of expiration of the card that is to be debited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be debited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, PAN, EXPDATE, MDORDER.
Click here for more information about seToken generation.

The toCard block consists of the following possible parameters:

RequiredNameTypeDescription
ConditionalbindingIdString [1..255]Identifier of the credentials stored when paying for the order or used for payment. Available only if the merchant is allowed to store credentials.
ConditionalpanString [1..19]The number of the card to be credited.
OptionalexpirationYearInteger [4]The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
OptionalexpirationMonthInteger [2]The month of expiration of the card that is to be credited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be credited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, bindingId, MDORDER. Click here for more information about seToken generation.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalfeeAmountInteger [1..12]Fee amount.
OptionalfeeCurrencyString [3]The ISO 4217 code of the fee currency.
OptionalfeeDescriptionString [1..512]The description of the fee.

Examples

Request example

curl --location --request POST 'https://dev.processing.ae/payment/rest/api/p2p/verifyP2PByBinding.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "test_user",
    "password": "test_user_password",
    "orderId": "fa71bf70-7c81-484e-a6fc-7db7e4283b2a",
	"bindingId": "4d792471-cee0-742c-922d-a265072e6148",
	"fromCard": {
        "seToken": "ofVx1r3aIJ3Mlx3nkfeOIJgFOnwfsgFK+V6Yzm+KxJgsq19l74GChhX0We/LEFq78Rhn9uFAEZGdeyDhnIc/KfuvObf0EzoDA65Uj1Z8FjwWyjnEwTBHZL4KmdFBCSk8jLxHt70mXwyjiHYyCVH1fT/UVOnsrkZVGrqmEG4MTi5dX9Znzf24DwRg4iezvdT8vf0dUW5lJdvY1tgOsOnBulwy6kH/YbHVsnR6yxO6d6IsdnT5f8PxaB+7ZyUqgrd6VA88FGJKJgdoxk4721pqKSG5dYroLJG96s23EDJ2Hpi4e9wU2rP7E6dlFw+qzATqX/eaJbaQ9eakkdMWnkj7aQ=="
    },
    "toCard": {
        "cardholderName": "NAME SURNAME",
        "cvc": "123",
        "expirationMonth": 12,
        "expirationYear": 2024,
        "pan": "5555555555555599"
    },
    "amount": 1000,
    "currency": "978",
    "clientId": "123",
}'

Response example

{
  "errorCode" : 0,
  "errorMessage" : "Successful",
  "feeDescriptionList" : [ {
    "feeAmount" : 10,
    "feeCurrency" : "978",
    "feeDescription" : "Acquirer fee"
  } ]
}

P2P transfer

To perform a card-to-card money transfer, use https://dev.processing.ae/payment/rest/api/p2p/performP2P.do request.


When sending the request, you should use the header: Content-Type: application/json

The structure of the performP2P.do request assumes the presence of the fromCard block to pass the attributes of the card to be debited and the toCard block to pass the attributes of the card to be credited. Depending on the business processes of the bank and the online store, the following options are possible when carrying out a card-to-card money transfer:

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
MandatoryorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
OptionalemailString [1..40]The payer's email address.
OptionalamountString [0..12]Transfer amount in minor currency units (e.g. in cents).
This parameter is passed if the payer decides to change the transfer amount when carrying out the money transfer.
OptionaltypeStringIn the case of a money transfer with data on only one card, it is necessary to pass the corresponding value in this parameter:
WITHOUT_FROM_CARD - without indication of the card to be debited.
WITHOUT_TO_CARD - without indication of the card to be credited.
If an ordinary card-to-card money transfer is concerned the following value is to be passed here: STANDARD.
OptionalamountInputInteger [0..12]Amount of transfer in minor currency units (e.g. in cents). If the amount is specified in this parameter, the transfer will be made for this amount (regardless of the amount passed in the order registration request).
OptionalcaptchaStringCAPTCHA (a text intended to distinguish human from machine input)
OptionalexternalScaExemptionIndicatorStringThe type of SCA (Strong Customer Authentication) excemption. Used for AFT transactions. If this parameter is specified, the transaction will be processed depending on your settings in the payment gateway: either forced SSL operation will be done, or the issuer bank will get the information about SCA excemption and decide to perform operation with or without 3DS authentication (for details, contact our support team). Allowed values:
  • LVP – Low Value Payments transaction. You can consider a transaction as low risk based on the transaction amount, the client's transactions per day or the client's total daily amount.
  • TRA – Transaction Risk Analysis transaction, i.e., the transaction that has passed successful anti-fraud check.

To pass this parameter, you must have sufficient permissions in the payment gateway.
OptionalthreeDSSDKBooleanPossible values: true or false. Flag showing that payment comes from 3DS SDK.
OptionalthreeDSSDKEncDataStringEncrypted data about device. Parameter is mandatory for SDK flow.
OptionalthreeDSSDKReferenceNumberString3DS2 SDK official identifier
OptionalthreeDSSDKEphemPubKeyStringPublic part of ephemeral key. Required to etablish session with ACS. Parameter is mandatory for SDK flow.
OptionalthreeDSSDKAppIdStringUnique identifier of SDK.Parameter is mandatory for SDK flow.
OptionalthreeDSSDKTransIdStringUnique identifier of transaction within SDK. Parameter is mandatory for SDK flow.
OptionalthreeDSMethodNotificationUrlString [1..512]URL where notification about performed 3DS-method should be sent to.
ConditionalthreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSVer2FinishUrlString [1..512]URL where Customer should be redirected after authentication on ACS Server.
ConditionalthreeDSVer2MdOrderString [1..36]Order number which was registered in the first part of the request within 3DS2 transaction. Mandatory for 3DS2 authentication.
If this parameter is present in the request, the mdOrder value passed in it overrides, and in this case the order gets paid right away instead of being registered.
This parameter is used only for instant payments, i.e., when the order is registered and payed via the same request.
OptionalbindingNotNeededBooleanAllowed values:
  • true – storing the credential after the payment is disabled (a stored credential is a customer identifier passed in order registration request — after payment it will be deleted from order details);
  • false – if payment is successful the credential can be stored (if the necessary conditions are met). This is the default value.
ConditionaloriginalPaymentNetRefNumString [1..36]The identifier of the original or previous successful transaction in the payment system in relation to the performed stored-credential transaction - TRN ID. Is passed when tii = R,U, or F.
Is mandatory when using merchant's stored credentials in stored credential transfers.
OptionalmccInteger [4]Merchant Category Code.
Using this parameter requires a special permission. You can use only the values from the predefined list of allowed MCC values. Contact the support team for details.
ConditionaloriginalSchemeTransactionIdString [1..22]The identifier of the original successful Mastercard transaction.
Is mandatory when using merchant's stored credentials in stored credential transfers.
ConditionaltiiStringIs mandatory for AFT and transfer operation when using a stored credential in fromCard block or a merchant's stored credential.
For OCT operations, this parameter cannot be passed.
Possible values
MandatoryparamsObjectFields for storing additional order information, must be passed as follows {"param":"value","param2":"value2"}.
These fields can be passed to the processing bank for further display in the bank registries.
By default orderNumber (order number) and orderDescription (order description) are passed. OrderDescription must not exceed 99 characters, do not use the following characters: %, +, end of line \r and line break \n).
To enable this functionality contact the bank.

The following customer data can be passed in the params object within a request for a card-to-card money transfer (the format of values depends on the data processing method used):
  • In the parameter called payerName — the name of the sender of money.
  • In the parameter called payerAddress — the address of the sender.
  • In the parameter called payerCity — the home city of the sender.
  • In the parameter called payerCountry — the country of the sender in ISO 3166-1 alpha-3 format (3 characters).
  • In the parameter called payerPostalCode — the postal code of the sender.
  • In a parameter called payerState — the region of the sender.
For the Visa payment system, in the request for a card-to-card money transfer, it is also necessary to pass the following information in the params parameter (format of values is determined by the data processing method used):
  • In the recipientName parameter — the name of the money recipient.

You can contact the support team to set constant values for payer* and recipientName parameters in order not to send them each time in all requests.
OptionalshippingPayerDataObjectObject containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalpreOrderPayerDataObjectObject containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalorderPayerDataObjectObject containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.
OptionalbillingAndShippingAddressMatchIndicatorString [1]Indicator for matching the cardholder's billing address and shipping address. This parameter is used for further 3DS authentication of the customer.
Possible values:
  • Y - the cardholder's billing address and shipping address match;
  • N - cardholder billing address and shipping address do not match.
ConditionalbillingPayerDataObjectA block with the client's registration data (address, postal code) necessary for passing the address verification within the AVS/AVV services. Mandatory if the feature is enabled for the merchant on Payment Gateway side. Should be included either in registerP2P.do request or performP2P.do request. See nested parameters.
ConditionalbillingRecipientDataObjectA block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. Should be included either in registerP2P.do request or performP2P.do request. See nested parameters.
MandatoryfromCardObjectA block with the attributes of the card to be debited. See nested parameters.
MandatorytoCardObjectA block with the attributes of the card to be credited. See nested parameters.
ConditionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent.
OptionaltransactionPurposeStringTransaction purpose (used for OCT transactions using Mastercard). Possible values:
  • FAMILY_SUPPORT or 0
  • REGULAR_LABOR_TRA or 1
  • TRAVEL_AND_TOURISM or 2
  • EDUCATION or 3
  • HOSPITALIZATION or 4
  • EMERGENCY_NEED or 5
  • SAVING or 6
  • GIFTS or 7
  • OTHER or 8
  • SALARY or 9
  • CROWD_LENDING or 10
  • CRYPTO_CURRENCY or 11
  • REFUND_ORIGINAL or 12
  • REFUND_NEW_CARD or 13
  • TRANSFER_SAME_WAL or 14
  • BOLETO_PAYMENT or 15
  • HIGH_RISK_SECURITY or 16
  • RECYCLING_DEPOSIT_RETURN or 17
  • VALUE_ADDED_TAX or 18
OptionalserviceProcessingTypeStringThe type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:
  • NORMAL or 00
  • ORIG_HOLD or 01
  • VISA_DEFERRED_DEFAULT or 02
  • VISA_DEFERRED_CUSTOM or 03
  • CANCEL_DEFERRED or 09
  • VISA_DIRECT_CUSTOM or 0I
  • DEFERRED_OCT_QUERY or 0Q
  • REC_PAYOUT or 0R
  • ALIAS_DIRECTORY or A0

Possible values of tii parameter:

tii valueDescriptionTransaction typeTransaction initiatorCard data for transactionCard data saved after transactionNote
CIInitial Common CITInitiatingCustomerEntered by CustomerYesAn e-commerce transaction, credential is stored.
FUnscheduled CITSubsequentCustomerCustomer selects card instead of manual entryNoAn e-commerce transaction that uses a stored credential.

Description of parameters in shippingPayerData object:

RequiredNameTypeDescription
OptionalshippingCityString [1..50]The customer's city (from the delivery address)
OptionalshippingCountryString [1..50]The customer's country
OptionalshippingAddressLine1String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine2String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine3String [1..50]The customer's primary address (from the shipping address)
OptionalshippingPostalCodeString [1..16]The customer's zip code for delivery
OptionalshippingStateString [1..50]Customer's state/region (from delivery address)
OptionalshippingMethodIndicatorInteger [2]Shipping Method Indicator.
Possible values:
  • 01 - delivery to the cardholder's billing address
  • 02 - delivery to another address verified by Merchant
  • 03 - delivery to an address other than the cardholder's primary (settlement) address
  • 04 - shipment to the store/self-collection (the store address should be specified in the relevant delivery parameters)
  • 05 - Digital distribution (includes online services and e-gift cards)
  • 06 - travel and event tickets that are not deliverable
  • 07 - Other (e.g. games, non-deliverable digital goods, digital subscriptions, etc.)
OptionaldeliveryTimeframeInteger [2]Product delivery timeframe.
Possible values:
  • 01 - digital distribution
  • 02 - same-day delivery
  • 03 - overnight delivery
  • 04 - delivery within 2 days after payment and later
OptionaldeliveryEmail String [1..254]Target email address for delivery of digital distribution. Note that it is preferrable to pass the email in a separate email parameter of the request. The deliveryEmail parameter specified in this block is only used to fill MerchantRiskIndicator during 3DS authorization.

Description of parameters in preOrderPayerData object:

RequiredNameTypeDescription
OptionalpreOrderDateString [10]Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
OptionalpreOrderPurchaseIndInteger [2]Indicator of a customer placing an order for available or future delivery.
Possible values:
  • 01 - delivery available;
  • 02 - future delivery
OptionalreorderItemsIndInteger [2]An indicator that the customer is rebooking a previously paid delivery as part of a new order.
Possible values:
  • 01 - order placed for the first time;
  • 02 - repeated order

Description of parameters in orderPayerData object:

RequiredNameTypeDescription
OptionalhomePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
OptionalworkPhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

ConditionalmobilePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

For payment by VISA with 3DS authorization, it is necessary to specify either phone or email of the cardholder. If you have a setting to display phone number on the payment page and have specified an invalid number, the customer will have a possibility to correct it on the payment page.

Below are the parameters of the billingPayerData block (data about the client registration address).

RequiredNameTypeDescription
ConditionalbillingCityString [0..50]The city registered on a specific card of the Issuing Bank. Mandatory for AFT transactions using Visa.
ConditionalbillingCountryString [0..50]The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Visa.
ConditionalbillingAddressLine1String [0..50]The address registered on a specific card of the Issuing Bank (A payer's address). Line 1. Mandatory to be passed in order AVS verification works. Mandatory for AFT transactions using Visa.
OptionalbillingAddressLine2String [0..50]The address registered on a specific card of the Issuing Bank. Line 2.
OptionalbillingAddressLine3String [0..50]The address registered on a specific card of the Issuing Bank. Line 3.
OptionalbillingPostalCodeString [0..9]Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
OptionalbillingStateString [0..50]The state registered on a specific card of the Issuing Bank. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
MandatorypayerAccountString [1..32]Payer's account number.
ConditionalpayerLastNameString [1..64]Payer's last name. Mandatory for AFT transactions using Visa.
ConditionalpayerFirstNameString [1..35]Payer's first name. Mandatory for AFT transactions using Visa.
OptionalpayerMiddleNameString [1..35]Payer's middle name.
OptionalpayerCombinedNameString [1..99]Payer's full name.
OptionalpayerIdTypeString [1..8]Type of the payer's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalpayerIdNumberString [1..100]Number of the payer's identifying document (e.g. passport) provided.
ConditionalpayerBirthdayString [1..20]Payer's birth date in the YYYYMMDD format. Mandatory for AFT transactions using Visa.
OptionalpayerAccountNumberTypeString [1..20]Payer's account number type. Mandatory for OCT transactions using Mastercard. Possible values:
  • RTN or 1 – RTN + Bank Account
  • IBAN or 2 – IBAN
  • CARD_ACCOUNT or 3 – Card Account
  • EMAIL or 4– Email
  • PHONE_NUMBER or 5 – Phone Number
  • BAN_AND_BIC or 6 – Bank account number (BAN) + Bank Identification Code (BIC)
  • WALLET_ID or 7 – Wallet Id
  • SOCIAL_NETWORK_ID or 8 – Social Network Id
  • OTHER or 100 – Other

Below are the parameters of the billingRecipientData block (data about the recipient).

RequiredNameTypeDescription
OptionalrecipientCityString [0..40]The recipient city code in the ISO 3166-1 alpha-3 format.
ConditionalrecipientCountryString [0..50]The recipient country code. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Mastercard.
OptionalrecipientAddressLine1String [0..50]The recipient address. Can contain Latin characters only.
OptionalrecipientPostalCodeString [0..9]Postal code of the recipient.
OptionalrecipientStateString [0..50]The recipient state code. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
ConditionalrecipientAccountString [0..32]Recipient's account number. Mandatory for AFT transactions using Mastercard.
ConditionalrecipientAccountNumberTypeInteger [1..2]Type of recipient account. Available values:
  • 1 - RTN + Bank Account;
  • 2 - IBAN;
  • 3 - Card Account;
  • 4 - E-mail;
  • 5 - Phone Number;
  • 6 - Bank account number (BAN) + Bank Identification Code (BIC);
  • 7 - Wallet Id;
  • 8 - Social Network Id;
  • 100 - Other.

Mandatory for AFT transactions using Mastercard.
MandatoryrecipientLastNameString [0..35]Recipient's last name.
MandatoryrecipientFirstNameString [0..35]Recipient's first name.
OptionalrecipientMiddleNameString [0..35]Recipient's middle name.
OptionalrecipientCombinedNameString [0..99]Recipient's full name.
OptionalrecipientIdTypeString [1..8]Type of the recipient's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalrecipientIdNumberString [1..99]Number of the recipient's identifying document provided.
OptionalrecipientBirthdayString [1..20]Recipient's birth date in the format YYYYMMDD.

The fromCard block includes the following possible parameters:

RequiredNameTypeDescription
ConditionalpanString [1..19]The number of the card to be debited.
ConditionalcvcString [3]CVC/CVV2 code on the back of a card to be debited.
Is mandatory if the payment is performed without stored credential or the merchant does not have a permission to pay without CVC.
Only digits are allowed.
ConditionalexpirationYearInteger [4]The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
ConditionalexpirationMonthInteger [2]The month of expiration of the card that is to be debited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be debited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, PAN, EXPDATE, MDORDER.
Click here for more information about seToken generation.
ConditionalthreeDsAuthResultObjectA block with the data related to the result of 3 DS authentication when the merchant's 3DS Server is used.
Is mandatory for transfer and AFT transactions with merchant's 3DS Server.
See nested parameters.

When making payments using tokens (APPLE, SAMSUNG, GOOGLE), the fromCard block includes the following parameters instead of card details:

RequiredNameTypeDescription
ConditionalvendorStringThis parameter is used for payments made with tokens. It is the name of the payment service provider and can be one of the following: APPLE, GOOGLE, SAMSUNG.
This parameter must be passed together with the paymentToken parameter, which contains the actual payment token value.
This parameter cannot be used together with the following parameters : pan, cvc, expiry, bindingId, seToken.
ConditionalpaymentTokenString [1..8192]Token value of the vendor specified in vendor parameter (APPLE, GOOGLE, SAMSUNG). If vendor is specified, it must be passed.
This parameter cannot be used together with the following parameters : pan, cvc, expiry, bindingId, seToken.
OptionaldecryptedTokenBooleanDecrypted token for payments through vendors (ApplePay, GooglePay, etc.). Allowed values:
  • true – for the decrypted token;
  • false – for an encrypted token.

If this parameter is not passed, decryptedToken = false will be assumed by default.
OptionalprotocolVersionStringProtocol version as defined by Google for a paymentToken: ECv1 (by default) or ECv2

Below are the parameters of the threeDsAuthResult block (data related to 3 DS authentication).

RequiredNameTypeDescription
OptionalcavvString [0..200]Cardholder authentication value. The indicator is specified only after an order is paid and if the corresponding permission is enabled.
OptionalxidString [1..80]Electronic commerce indicator of the transaction. The indicator is specified only after an order has been paid and in case the corresponding permission is present.
OptionaleciInteger [1..4]Electronic commerce indicator. The indicator is specified only after an order has been paid and in case the corresponding permission is present. Below is the explanation of ECI codes.
  • ECI=01 or ECI=06 - merchant supports 3-D Secure, payment card does not support 3-D Secure, payment is processed based on CVV2/CVC code.
  • ECI=02 or ECI=05 - both merchant and payment card support 3-D Secure;
  • ECI=07 - merchant does not support 3-D Secure, payment is processed based on CVV2/CVC code.
ConditionalthreeDsType String3DS authentication type. This parameter is required for payment via your own 3DS Server with 3DS 2. For payments with SSL, this parameter is optional and is defined automatically depending on ECI value.
Allowed values:
  • 0 - SSL authentication
  • 3 - SCA Cardholder authentication with 3DS 2
  • 4 - RBA Cardholder authentication with 3DS 2
  • 5 - Cardholder authentication attempt with 3DS 2
  • 6 - 3DS 2 exemption granted
  • 7 - 3RI authentication with 3DS 2
  • 8 - 3RI authentication attempt with 3DS 2
OptionalthreeDSProtocolVersionString3DS protocol version. Possible values are "2.1.0", "2.2.0" for 3DS2.
If threeDSProtocolVersion is not passed in the request, then the default value will be used for 3D Secure authorization (2.1.0 - for 3DS 2).

The toCard block consists of the following possible parameters:

RequiredNameTypeDescription
ConditionalpanString [1..19]The number of the card to be credited.
OptionalexpirationYearInteger [4]The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
OptionalexpirationMonthInteger [2]The month of expiration of the card that is to be credited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be credited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, bindingId, MDORDER. Click here for more information about seToken generation.

The following parameters are also passed during the authentication via the 3DS2 protocol:

RequiredNameTypeDescription
OptionalthreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSVer2FinishUrlString [1..512]URL where Customer should be redirected after authentication on ACS Server.
OptionalthreeDSMethodNotificationUrlString [1..512]URL where notification about performed 3DS-method should be sent to.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
OptionalerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalinfoStringThe result of an attempt to transfer funds.

The value in case of a successful transfer: "Your payment has been processed, redirecting...".

The value in case of an error: "Redirecting..."
ConditionalacsUrlString [1..512]The URL address for redirecting to ACS. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. For details see Redirect to ACS.
ConditionalpaReqString [1..255]PAReq (Payment Authentication Request) - a message that should be sent to ACS together with redirect. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. This message contains the Base64-encoded data necessary for the cardholder authentication. For details see Redirect to ACS.
OptionaltermUrlString [1..512]In a successful response in case of a 3D-Secure payment. URL address for redirecting the client after interaction with the ACS for the payment completion.
OptionaloriginalPaymentNetRefNumString [1..36]The identifier of the original or previous successful transaction in the payment system in relation to the performed stored-credential transaction - TRN ID. Is passed when tii = R,U, or F.
Is mandatory when using merchant's stored credentials in stored credential transfers.
ConditionalmcTransactionReferenceString [1..19]The identifier of the Mastercard AFT transaction. Only applicable (and mandatory) to Mastercard.
ConditionalstatusResponseObjectParameters of the order status. This block is returned only if you have a corresponding setting enabled. To enable this feature please contact support. See nested parameters.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is automatically filled by statusResponse.debitTransactionReference parameter from the corresponding AFT transaction (automatically generated by Payment Gateway) or by the corresponding parameter received in the OCT request.

When authenticating via the 3DS2 protocol, the following parameters are returned during the initial request:

RequiredNameTypeDescription
Mandatoryis3DSVer2BooleanPossible values: true or false. Flag showing that payment uses 3DS2.
MandatorythreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSMethodUrlString [1..512]URL of ACS Server for gathering browser data.
MandatorythreeDSMethodUrlServerString [1..512]URL of 3DS Server for gathering browser data to be included in the AReq (Authentication Request) from 3DS Server to ACS Server.
OptionalthreeDSMethodDataPackedString [1..1024]Base-64-encoded data of CReq (Challenge Response) to be sent to ACS Server.
OptionalthreeDSMethodURLServerDirectString [1..512]URL of 3dsmethod.do for executing the 3DS method on 3DS Server via Payment Gateway (subject to respective Merchant-level permission).

Below are the parameters to be present in the response, after a repeated request for the payment and the need to redirect the client to the ACS during the authentication via the 3DS2 protocol:

RequiredNameTypeDescription
ConditionalacsUrlString [1..512]The URL address for redirecting to ACS. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. For details see Redirect to ACS.
ConditionalpackedCReqStringPacked challenge request data. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. This value should be used as the ACS link creq parameter (acsUrl) to redirect the client to the ACS. For details see Redirect to ACS.

The parameters of statusResponse block:

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalorderStatusIntegerThe value of this parameter specifies the status of the order in the payment gateway. It is missing if the order has not been found. Below is the list of available values:
  • 0 - order was registered but not paid;
  • 2 - order amount is fully authorized;
  • 3 - authorization reversed;
  • 5 - access control server of the issuing bank initiated authorization procedure;
  • 6 - authorization declined;
OptionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
OptionalpanMaskedFromString [1..19]The masked number of the card to be debited.
OptionalpanMaskedToString [1..19]The masked number of the card to be credited.
OptionalamountInteger [0..12]Payment amount in minor currency units (e.g. in cents).
OptionalcurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
OptionalcreationDateIntegerDate of order registration.
OptionalorderDescriptionString [1..600]Order description passed to the payment gateway during the registration.
It is not allowed to fill this parameter with personal data or payment data (card numbers, etc.). This requirement is due to the fact that the order description is not masked in Merchant Portal and log files.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
MandatoryresultCodeIntegerError code on the request execution. Available values:
  • 0 - in case of success;
  • 1 - in case of an error.
OptionalorderParamsObjectAn object with the merchant's attributes of the order. More than one orderParams object can be presented in the response.
The object must be passed as follows: {"param":"value","param2":"value2"}.
OptionaloperationListObjectObject containing information on the transactions completed in the order. More than one operationList object can be present in the response.
The parameters that can be passed here are described below.
OptionalbindingStringIdentifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher.
OptionaldetokenizedPanRepresentationString [1..19]The detokenized card number (the last 4 digits or in a masked form).
OptionaldetokenizedPanExpiryDateStringThe card's detokenized expiration date in the following format: "YYYYMM".
OptionalpaymentNetRefNumString [1..512]Original Network Reference Number - a unique identifier assigned by the card network (e.g., Mastercard, Visa) to the original transaction (such as a purchase or authorization). When a follow-up transaction is initiated (e.g., refund, recurring payment), this number must be included to:
  • Link the new transaction to the original one
  • Ensure proper tracking and reconciliation
  • Meet network compliance requirements
This parameter is returned only if the getP2PStatus version is 7 or higher.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is automatically generated by Payment Gateway for AFT operations using Mastercard. It can be further used in a subsequent OCT operation as a reference to the previous AFT operation.

To complete the transaction use /p2p/finishThreeDsVer2.do.

Examples

Example of the first request in case of 3DS2 authentication

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/performP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "orderId" : "38b7a9e0-7cfa-46f7-8655-f206a8898e7a",
  "amount" : 50000,
  "fromCard": {
    "vendor": "APPLE",
    "paymentToken": "eyJkZXZpY2VNYW51ZmFjdHVyZXJJZGVudGlmaWVyIjoiMDUwMTEwMDMwMjczIiwiY3VycmVuY3lDb2RlIjoiOTc4IiwiYXBwbGljYXRpb25FeHBpcmF0aW9uRGF0ZSI6IjI3MDEzMSIsInBheW1lbnREYXRhIjp7Im9ubGluZVBheW1lbnRDcnlwdG9ncmFtIjoiQUc5WW5Pak1YOUJXQUFSaElJOFBBb0FCRkE9PSJ9LCJwYXltZW50RGF0YVR5cGUiOiIzRFNlY3VyZSIsInRyYW5zYWN0aW9uQW1vdW50IjoxMDAsImFwcGxpY2F0aW9uUHJpbWFyeUFjY291bnROdW1iZXIiOiI1NTU1NTU1NTU1NTU1NTk5In0=",
    "decryptedToken":true,
    "protocolVersion":"ECv1"
  },
  "toCard" : {
    "pan" : "4111111111111111"
  },
  "params" : [
        {"name" : "recipientName", "Name" : "Surname"},
        {"name" : "payerName", "value" : "Name1 Surname1"},
        {"name" : "payerCity", "value" : "City"},
        {"name" : "payerCountry", "value" : "Country"},
        {"name" : "payerPostalCode", "value" : "777777"},
        {"name" : "payerState", "value" : "State"},
        {"name" : "payerAddress", "value" : "street, 18"
  },	
 ] 
}

Example of the second request in case of 3DS2 authentication

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/performP2P.do' -H 'Content-Type: application/json' --data-raw '{
  "username":"test_user",
  "password":"test_user_password",
  "orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
  "fromCard": {
    "cardholderName": "TEST CARDHOLDER",
	"cvc": "123",
	"expirationMonth": 12,
	"expirationYear": 2030,
	"pan": "5000001111111115"
  },
  "toCard": {
    "pan": "4111111111111111"
  },	
  "amount" : 50000,
  "params" : [
        {"name" : "recipientName", "Name" : "Surname"},
        {"name" : "payerName", "value" : "Name1 Surname1"},
        {"name" : "payerCity", "value" : "City"},
        {"name" : "payerCountry", "value" : "Country"},
        {"name" : "payerPostalCode", "value" : "777777"},
        {"name" : "payerState", "value" : "State"},
        {"name" : "payerAddress", "value" : "street, 18"
  "threeDSServerTransId" : "3afc168a-94b4-4eb3-8e2e-80f6c186669d",
  "threeDSVer2FinishUrl" : "https://example.com/acs2/acs/3dsMethod"
}'

Example of the request for AFT transaction

curl --location 'https://dev.processing.ae/payment/rest/api/p2p/performP2P.do' \
--header 'Content-Type: application/json' \
--data '{ 
  "username": "test_user",
  "password": "test_user_password",
  "orderId" : "507c3da4-53a6-7160-b2fa-f9f006c39227",
  "externalScaExemptionIndicator": "TRA",
  "fromCard" : {
    "cardholderName": "TEST CARDHOLDER",
    "pan" : "5000001111111115",
    "cvc" : "123",
    "expirationYear" : "2024",
    "expirationMonth" : "12"
        },
   amountInput": "6000",
  "type": "STANDARD"
  }'

Example of the response to the first request in case of 3DS2 authentication

{
  "errorCode": 0,
  "is3DSVer2": true,
  "threeDSServerTransId": "3afc168a-94b4-4eb3-8e2e-80f6c186669d",
  "threeDSMethodURL": "https://example.com/acs2/acs/3dsMethod",
  "threeDSMethodURLServer": "https://example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=3afc168a-94b4-4eb3-8e2e-80f6c186669d",
  "threeDSMethodDataPacked": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9hY3F1aXJlci5jb20vM2Rzc2VydmVyL2FwaS92MS9hY3Mvbm90aWZpY2F0aW9uP3RocmVlRFNTZXJ2ZXJUcmFuc0lEPTNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiM2FmYzE2OGEtOTRiNC00ZWIzLThlMmUtODBmNmMxODY2NjlkIn0="
}

Example of the response to the second request in case of 3DS2 authentication

{
  "errorCode": 0,
  "info": "Your order is proceeded, redirecting...",
  "acsUrl": "https://example.com/acs2/acs/creq",
  "is3DSVer2": true,
  "packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiOWM3NTkxMmEtZTg0NC00ODgyLWI5YzctYzZmYmMzNjIyNGQ3IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}

Stored-credential P2P transfer

To perform a card-to-card transfer by binding, use https://dev.processing.ae/payment/rest/api/p2p/performP2PByBinding.do request.


When sending the request, you should use the header: Content-Type: application/json

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
OptionalemailString [1..40]Email to be displayed on the payment page. Customer's email must be passed if client notification is configured for the merchant. Example: client_mail@email.com.
For payment by VISA with 3DS authorization, it is necessary to specify either phone or email of the cardholder.
ConditionaltypeStringIn the case of a money transfer with data on only one card, it is necessary to pass the corresponding value in this parameter:
WITHOUT_FROM_CARD - without indication of the card to be debited.
WITHOUT_TO_CARD - without indication of the card to be credited.
If an ordinary card-to-card money transfer is concerned the following value is to be passed here: STANDARD.
MandatoryorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
OptionalamountInputInteger [0..12]Amount of transfer in minor currency units (e.g. in cents). If the amount is specified in this parameter, the transfer will be made for this amount (regardless of the amount passed in the order registration request).
OptionalcaptchaStringCAPTCHA (a text intended to distinguish human from machine input)
OptionalexternalScaExemptionIndicatorStringThe type of SCA (Strong Customer Authentication) excemption. Used for AFT transactions. If this parameter is specified, the transaction will be processed depending on your settings in the payment gateway: either forced SSL operation will be done, or the issuer bank will get the information about SCA excemption and decide to perform operation with or without 3DS authentication (for details, contact our support team). Allowed values:
  • LVP – Low Value Payments transaction. You can consider a transaction as low risk based on the transaction amount, the client's transactions per day or the client's total daily amount.
  • TRA – Transaction Risk Analysis transaction, i.e., the transaction that has passed successful anti-fraud check.

To pass this parameter, you must have sufficient permissions in the payment gateway.
OptionalthreeDSSDKBooleanPossible values: true or false. Flag showing that payment comes from 3DS SDK.
OptionalthreeDSSDKEncDataStringEncrypted data about device. Parameter is mandatory for SDK flow.
OptionalthreeDSSDKReferenceNumberString3DS2 SDK official identifier
OptionalthreeDSSDKEphemPubKeyStringPublic part of ephemeral key. Required to etablish session with ACS. Parameter is mandatory for SDK flow.
OptionalthreeDSSDKAppIdStringUnique identifier of SDK.Parameter is mandatory for SDK flow.
OptionalthreeDSSDKTransIdStringUnique identifier of transaction within SDK. Parameter is mandatory for SDK flow.
OptionalthreeDSMethodNotificationUrlString [1..512]URL where notification about performed 3DS-method should be sent to.
ConditionalthreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSVer2FinishUrlString [1..512]URL where Customer should be redirected after authentication on ACS Server.
ConditionalthreeDSVer2MdOrderString [1..36]Order number which was registered in the first part of the request within 3DS2 transaction. Mandatory for 3DS2 authentication.
If this parameter is present in the request, the mdOrder value passed in it overrides, and in this case the order gets paid right away instead of being registered.
This parameter is used only for instant payments, i.e., when the order is registered and payed via the same request.
OptionalbindingNotNeededBooleanAllowed values:
  • true – storing the credential after the payment is disabled (a stored credential is a customer identifier passed in order registration request — after payment it will be deleted from order details);
  • false – if payment is successful the credential can be stored (if the necessary conditions are met). This is the default value.
ConditionaloriginalPaymentNetRefNumString [1..36]The identifier of the original or previous successful transaction in the payment system in relation to the performed stored-credential transaction - TRN ID. Is passed when tii = R,U, or F.
Is mandatory when using merchant's stored credentials in stored credential transfers.
OptionalmccInteger [4]Merchant Category Code.
Using this parameter requires a special permission. You can use only the values from the predefined list of allowed MCC values. Contact the support team for details.
ConditionaloriginalSchemeTransactionIdString [1..22]The identifier of the original successful Mastercard transaction.
Is mandatory when using merchant's stored credentials in stored credential transfers.
ConditionaltiiStringTransaction initiator indicator. A parameter indicating what type of operation will be carried out by the initiator (Customer or Merchant).
Is mandatory for AFT and transfer operation when using a stored credential in fromCard block or a merchant's stored credential.
For OCT operations, this parameter cannot be passed.
Possible values
OptionalparamsObjectFields for storing additional order information, must be passed as follows {"param":"value","param2":"value2"}.
These fields can be passed to the processing bank for further display in the bank registries.
By default orderNumber (order number) and orderDescription (order description) are passed. OrderDescription must not exceed 99 characters, do not use the following characters: %, +, end of line \r and line break \n).
To enable this functionality contact the bank.

The following customer data can be passed in the params object within a request for a card-to-card money transfer (the format of values depends on the data processing method used):
  • In the parameter called payerName — the name of the sender of money.
  • In the parameter called payerAddress — the address of the sender.
  • In the parameter called payerCity — the home city of the sender.
  • In the parameter called payerCountry — the country of the sender in ISO 3166-1 alpha-3 format (3 characters).
  • In the parameter called payerPostalCode — the postal code of the sender.
  • In a parameter called payerState — the region of the sender.
For the Visa payment system, in the request for a card-to-card money transfer, it is also necessary to pass the following information in the params parameter (format of values is determined by the data processing method used):
  • In the recipientName parameter — the name of the money recipient.

You can contact the support team to set constant values for payer* and recipientName parameters in order not to send them each time in all requests.
OptionalshippingPayerDataObjectObject containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalpreOrderPayerDataObjectObject containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalorderPayerDataObjectObject containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.
OptionalbillingAndShippingAddressMatchIndicatorString [1]Indicator for matching the cardholder's billing address and shipping address. This parameter is used for further 3DS authentication of the customer.
Possible values:
  • Y - the cardholder's billing address and shipping address match;
  • N - cardholder billing address and shipping address do not match.
OptionalbillingPayerDataObjectA block with the client's registration data (address, postal code) necessary for passing the address verification within the AVS/AVV services. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
OptionalbillingRecipientDataObjectA block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
MandatoryfromCardObjectA block with the attributes of the card to be debited. See nested parameters.
MandatorytoCardObjectA block with the attributes of the card to be credited. See nested parameters.
ConditionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent.
OptionaltransactionPurposeStringTransaction purpose (used for OCT transactions using Mastercard). Possible values:
  • FAMILY_SUPPORT or 0
  • REGULAR_LABOR_TRA or 1
  • TRAVEL_AND_TOURISM or 2
  • EDUCATION or 3
  • HOSPITALIZATION or 4
  • EMERGENCY_NEED or 5
  • SAVING or 6
  • GIFTS or 7
  • OTHER or 8
  • SALARY or 9
  • CROWD_LENDING or 10
  • CRYPTO_CURRENCY or 11
  • REFUND_ORIGINAL or 12
  • REFUND_NEW_CARD or 13
  • TRANSFER_SAME_WAL or 14
  • BOLETO_PAYMENT or 15
  • HIGH_RISK_SECURITY or 16
  • RECYCLING_DEPOSIT_RETURN or 17
  • VALUE_ADDED_TAX or 18
OptionalserviceProcessingTypeStringThe type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:
  • NORMAL or 00
  • ORIG_HOLD or 01
  • VISA_DEFERRED_DEFAULT or 02
  • VISA_DEFERRED_CUSTOM or 03
  • CANCEL_DEFERRED or 09
  • VISA_DIRECT_CUSTOM or 0I
  • DEFERRED_OCT_QUERY or 0Q
  • REC_PAYOUT or 0R
  • ALIAS_DIRECTORY or A0

Possible values of tii parameter:

tii valueDescriptionTransaction typeTransaction initiatorCard data for transactionCard data saved after transactionNote
CIInitial Common CITInitiatingCustomerEntered by CustomerYesAn e-commerce transaction, credential is stored.
FUnscheduled CITSubsequentCustomerCustomer selects card instead of manual entryNoAn e-commerce transaction that uses a stored credential.

The fromCard block includes the following possible parameters:

RequiredNameTypeDescription
ConditionalbindingIdString [1..255]Identifier of the credentials stored when paying for the order or used for payment. Available only if the merchant is allowed to store credentials.
ConditionalpanString [1..19]The number of the card to be debited.
ConditionalcvcString [3]CVC/CVV2 code on the back of a card to be debited.
Is mandatory if the payment is performed without stored credential or the merchant does not have a permission to pay without CVC.
Only digits are allowed.
ConditionalexpirationYearInteger [4]The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
ConditionalexpirationMonthInteger [2]The month of expiration of the card that is to be debited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be debited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, PAN, EXPDATE, MDORDER.
Click here for more information about seToken generation.
ConditionalthreeDsAuthResultObjectA block with the data related to the result of 3 DS authentication when the merchant's 3DS Server is used.
Is mandatory for transfer and AFT transactions with merchant's 3DS Server.
See nested parameters.

Below are the parameters of the threeDsAuthResult block (data related to 3 DS authentication).

RequiredNameTypeDescription
OptionalcavvString [0..200]Cardholder authentication value. The indicator is specified only after an order is paid and if the corresponding permission is enabled.
OptionalxidString [1..80]Electronic commerce indicator of the transaction. The indicator is specified only after an order has been paid and in case the corresponding permission is present.
OptionaleciInteger [1..4]Electronic commerce indicator. The indicator is specified only after an order has been paid and in case the corresponding permission is present. Below is the explanation of ECI codes.
  • ECI=01 or ECI=06 - merchant supports 3-D Secure, payment card does not support 3-D Secure, payment is processed based on CVV2/CVC code.
  • ECI=02 or ECI=05 - both merchant and payment card support 3-D Secure;
  • ECI=07 - merchant does not support 3-D Secure, payment is processed based on CVV2/CVC code.
ConditionalthreeDsType String3DS authentication type. This parameter is required for payment via your own 3DS Server with 3DS 2. For payments with SSL, this parameter is optional and is defined automatically depending on ECI value.
Allowed values:
  • 0 - SSL authentication
  • 3 - SCA Cardholder authentication with 3DS 2
  • 4 - RBA Cardholder authentication with 3DS 2
  • 5 - Cardholder authentication attempt with 3DS 2
  • 6 - 3DS 2 exemption granted
  • 7 - 3RI authentication with 3DS 2
  • 8 - 3RI authentication attempt with 3DS 2
OptionalthreeDSProtocolVersionString3DS protocol version. Possible values are "2.1.0", "2.2.0" for 3DS2.
If threeDSProtocolVersion is not passed in the request, then the default value will be used for 3D Secure authorization (2.1.0 - for 3DS 2).

The toCard block (if crediting is done by a third-party system, this block must be absent) consists of the following possible parameters:

RequiredNameTypeDescription
ConditionalbindingIdString [1..255]Identifier of the credentials stored when paying for the order or used for payment. Available only if the merchant is allowed to store credentials.
ConditionalpanString [1..19]The number of the card to be credited.
OptionalexpirationYearInteger [4]The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
OptionalexpirationMonthInteger [2]The month of expiration of the card that is to be credited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be credited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, bindingId, MDORDER. Click here for more information about seToken generation.

Description of parameters in shippingPayerData object:

RequiredNameTypeDescription
OptionalshippingCityString [1..50]The customer's city (from the delivery address)
OptionalshippingCountryString [1..50]The customer's country
OptionalshippingAddressLine1String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine2String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine3String [1..50]The customer's primary address (from the shipping address)
OptionalshippingPostalCodeString [1..16]The customer's zip code for delivery
OptionalshippingStateString [1..50]Customer's state/region (from delivery address)
OptionalshippingMethodIndicatorInteger [2]Shipping Method Indicator.
Possible values:
  • 01 - delivery to the cardholder's billing address
  • 02 - delivery to another address verified by Merchant
  • 03 - delivery to an address other than the cardholder's primary (settlement) address
  • 04 - shipment to the store/self-collection (the store address should be specified in the relevant delivery parameters)
  • 05 - Digital distribution (includes online services and e-gift cards)
  • 06 - travel and event tickets that are not deliverable
  • 07 - Other (e.g. games, non-deliverable digital goods, digital subscriptions, etc.)
OptionaldeliveryTimeframeInteger [2]Product delivery timeframe.
Possible values:
  • 01 - digital distribution
  • 02 - same-day delivery
  • 03 - overnight delivery
  • 04 - delivery within 2 days after payment and later
OptionaldeliveryEmail String [1..254]Target email address for delivery of digital distribution. Note that it is preferrable to pass the email in a separate email parameter of the request. The deliveryEmail parameter specified in this block is only used to fill MerchantRiskIndicator during 3DS authorization.

Description of parameters in preOrderPayerData object:

RequiredNameTypeDescription
OptionalpreOrderDateString [10]Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
OptionalpreOrderPurchaseIndInteger [2]Indicator of a customer placing an order for available or future delivery.
Possible values:
  • 01 - delivery available;
  • 02 - future delivery
OptionalreorderItemsIndInteger [2]An indicator that the customer is rebooking a previously paid delivery as part of a new order.
Possible values:
  • 01 - order placed for the first time;
  • 02 - repeated order

Description of parameters in orderPayerData object:

RequiredNameTypeDescription
OptionalhomePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
OptionalworkPhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

ConditionalmobilePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

For payment by VISA with 3DS authorization, it is necessary to specify either phone or email of the cardholder. If you have a setting to display phone number on the payment page and have specified an invalid number, the customer will have a possibility to correct it on the payment page.

Below are the parameters of the billingPayerData block (data about the client registration address).

RequiredNameTypeDescription
ConditionalbillingCityString [0..50]The city registered on a specific card of the Issuing Bank. Mandatory for AFT transactions using Visa.
ConditionalbillingCountryString [0..50]The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Visa.
ConditionalbillingAddressLine1String [0..50]The address registered on a specific card of the Issuing Bank (A payer's address). Line 1. Mandatory to be passed in order AVS verification works. Mandatory for AFT transactions using Visa.
OptionalbillingAddressLine2String [0..50]The address registered on a specific card of the Issuing Bank. Line 2.
OptionalbillingAddressLine3String [0..50]The address registered on a specific card of the Issuing Bank. Line 3.
OptionalbillingPostalCodeString [0..9]Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
OptionalbillingStateString [0..50]The state registered on a specific card of the Issuing Bank. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
MandatorypayerAccountString [1..32]Payer's account number.
ConditionalpayerLastNameString [1..64]Payer's last name. Mandatory for AFT transactions using Visa.
ConditionalpayerFirstNameString [1..35]Payer's first name. Mandatory for AFT transactions using Visa.
OptionalpayerMiddleNameString [1..35]Payer's middle name.
OptionalpayerCombinedNameString [1..99]Payer's full name.
OptionalpayerIdTypeString [1..8]Type of the payer's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalpayerIdNumberString [1..100]Number of the payer's identifying document (e.g. passport) provided.
ConditionalpayerBirthdayString [1..20]Payer's birth date in the YYYYMMDD format. Mandatory for AFT transactions using Visa.
OptionalpayerAccountNumberTypeString [1..20]Payer's account number type. Mandatory for OCT transactions using Mastercard. Possible values:
  • RTN or 1 – RTN + Bank Account
  • IBAN or 2 – IBAN
  • CARD_ACCOUNT or 3 – Card Account
  • EMAIL or 4– Email
  • PHONE_NUMBER or 5 – Phone Number
  • BAN_AND_BIC or 6 – Bank account number (BAN) + Bank Identification Code (BIC)
  • WALLET_ID or 7 – Wallet Id
  • SOCIAL_NETWORK_ID or 8 – Social Network Id
  • OTHER or 100 – Other

Below are the parameters of the billingRecipientData block (data about the recipient).

RequiredNameTypeDescription
OptionalrecipientCityString [0..40]The recipient city code in the ISO 3166-1 alpha-3 format.
ConditionalrecipientCountryString [0..50]The recipient country code. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Mastercard.
OptionalrecipientAddressLine1String [0..50]The recipient address. Can contain Latin characters only.
OptionalrecipientPostalCodeString [0..9]Postal code of the recipient.
OptionalrecipientStateString [0..50]The recipient state code. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
ConditionalrecipientAccountString [0..32]Recipient's account number. Mandatory for AFT transactions using Mastercard.
ConditionalrecipientAccountNumberTypeInteger [1..2]Type of recipient account. Available values:
  • 1 - RTN + Bank Account;
  • 2 - IBAN;
  • 3 - Card Account;
  • 4 - E-mail;
  • 5 - Phone Number;
  • 6 - Bank account number (BAN) + Bank Identification Code (BIC);
  • 7 - Wallet Id;
  • 8 - Social Network Id;
  • 100 - Other.

Mandatory for AFT transactions using Mastercard.
MandatoryrecipientLastNameString [0..35]Recipient's last name.
MandatoryrecipientFirstNameString [0..35]Recipient's first name.
OptionalrecipientMiddleNameString [0..35]Recipient's middle name.
OptionalrecipientCombinedNameString [0..99]Recipient's full name.
OptionalrecipientIdTypeString [1..8]Type of the recipient's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalrecipientIdNumberString [1..99]Number of the recipient's identifying document provided.
OptionalrecipientBirthdayString [1..20]Recipient's birth date in the format YYYYMMDD.

The following parameters are also passed during the authentication via the 3DS2 protocol:

MandatoryNameTypeDescription
OptionalthreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSVer2FinishUrlString [1..512]URL where Customer should be redirected after authentication on ACS Server.
OptionalthreeDSMethodNotificationUrlString [1..512]URL where notification about performed 3DS-method should be sent to.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalinfoStringThe result of an attempt to transfer funds.

The value in case of a successful transfer: "Your payment has been processed, redirecting...".

The value in case of an error: "Redirecting..."
ConditionalacsUrlString [1..512]The URL address for redirecting to ACS. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. For details see Redirect to ACS.
ConditionalpaReqString [1..255]PAReq (Payment Authentication Request) - a message that should be sent to ACS together with redirect. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. This message contains the Base64-encoded data necessary for the cardholder authentication. For details see Redirect to ACS.
ConditionaltermUrlString [1..512]In a successful response in case of a 3D-Secure payment. The URL address to which ACS redirects the cardholder after authentication. For details see Redirect to ACS.
ConditionalstatusResponseObjectParameters of the order status. This block is returned only if you have a corresponding setting enabled. To enable this feature please contact support. See nested parameters.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is automatically filled by statusResponse.debitTransactionReference parameter from the corresponding AFT transaction (automatically generated by Payment Gateway) or by the corresponding parameter received in the OCT request.

When authenticating via the 3DS2 protocol, the following parameters are returned during the initial request:

RequiredNameTypeDescription
Mandatoryis3DSVer2BooleanPossible values: true or false. Flag showing that payment uses 3DS2.
MandatorythreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSMethodUrlString [1..512]URL of ACS Server for gathering browser data.
MandatorythreeDSMethodUrlServerString [1..512]URL of 3DS Server for gathering browser data to be included in the AReq (Authentication Request) from 3DS Server to ACS Server.
OptionalthreeDSMethodDataPackedString [1..1024]Base-64-encoded data of CReq (Challenge Response) to be sent to ACS Server.
OptionalthreeDSMethodURLServerDirectString [1..512]URL of 3dsmethod.do for executing the 3DS method on 3DS Server via Payment Gateway (subject to respective Merchant-level permission).

Below are the parameters to be present in the response, after a repeated request for the payment and the need to redirect the client to the ACS during the authentication via the 3DS2 protocol:

RequiredNameTypeDescription
ConditionalacsUrlString [1..512]The URL address for redirecting to ACS. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. For details see Redirect to ACS.
ConditionalpackedCReqStringPacked challenge request data. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. This value should be used as the ACS link creq parameter (acsUrl) to redirect the client to the ACS. For details see Redirect to ACS.

The parameters of statusResponse block:

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalorderStatusIntegerThe value of this parameter specifies the status of the order in the payment gateway. It is missing if the order has not been found. Below is the list of available values:
  • 0 - order was registered but not paid;
  • 2 - order amount is fully authorized;
  • 3 - authorization reversed;
  • 5 - access control server of the issuing bank initiated authorization procedure;
  • 6 - authorization declined;
OptionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
OptionalpanMaskedFromString [1..19]The masked number of the card to be debited.
OptionalpanMaskedToString [1..19]The masked number of the card to be credited.
OptionalamountInteger [0..12]Payment amount in minor currency units (e.g. in cents).
OptionalcurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
OptionalcreationDateIntegerDate of order registration.
OptionalorderDescriptionString [1..600]Order description passed to the payment gateway during the registration.
It is not allowed to fill this parameter with personal data or payment data (card numbers, etc.). This requirement is due to the fact that the order description is not masked in Merchant Portal and log files.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
MandatoryresultCodeIntegerError code on the request execution. Available values:
  • 0 - in case of success;
  • 1 - in case of an error.
OptionalorderParamsObjectAn object with the merchant's attributes of the order. More than one orderParams object can be presented in the response.
The object must be passed as follows: {"param":"value","param2":"value2"}.
OptionaloperationListObjectObject containing information on the transactions completed in the order. More than one operationList object can be present in the response.
The parameters that can be passed here are described below.
OptionalbindingStringIdentifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher.
OptionaldetokenizedPanRepresentationString [1..19]The detokenized card number (the last 4 digits or in a masked form).
OptionaldetokenizedPanExpiryDateStringThe card's detokenized expiration date in the following format: "YYYYMM".
OptionalpaymentNetRefNumString [1..512]Original Network Reference Number - a unique identifier assigned by the card network (e.g., Mastercard, Visa) to the original transaction (such as a purchase or authorization). When a follow-up transaction is initiated (e.g., refund, recurring payment), this number must be included to:
  • Link the new transaction to the original one
  • Ensure proper tracking and reconciliation
  • Meet network compliance requirements
This parameter is returned only if the getP2PStatus version is 7 or higher.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is automatically generated by Payment Gateway for AFT operations using Mastercard. It can be further used in a subsequent OCT operation as a reference to the previous AFT operation.

Examples

Request example

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/performP2PByBinding.do' 
-H 'Content-Type: application/json' 
--data-raw '{ 
  "amountInput" : 1000,
  "bindingId" : "03e9492a-536c-7ab4-85e6-b44000f26b04",
  "fromCard" : {
     "seToken": "ofVx1r3aIJ3Mlx3nkfeOIJgFOnwfsgFK+V6Yzm+KxJgsq19l74GChhX0We/LEFq78Rhn9uFAEZGdeyDhnIc/KfuvObf0EzoDA65Uj1Z8FjwWyjnEwTBHZL4KmdFBCSk8jLxHt70mXwyjiHYyCVH1fT/UVOnsrkZVGrqmEG4MTi5dX9Znzf24DwRg4iezvdT8vf0dUW5lJdvY1tgOsOnBulwy6kH/YbHVsnR6yxO6d6IsdnT5f8PxaB+7ZyUqgrd6VA88FGJKJgdoxk4721pqKSG5dYroLJG96s23EDJ2Hpi4e9wU2rP7E6dlFw+qzATqX/eaJbaQ9eakkdMWnkj7aQ=="
  },
  "toCard": {
        "cardholderName": "TEST CARDHOLDER",
        "cvc": "123",
        "expirationMonth": 12,
        "expirationYear": 2029,
        "pan": "5555555555555599"
  },
  "orderId" : "3dbaf8bb-1d68-76b3-b4e6-784700f26b04",
  "password" : "test_user_password",
  "type" : "WITHOUT_TO_CARD",
  "username" : "test_user"
}'

Response example

{
  "errorCode" : 0,
  "errorMessage" : "Successful",
  "info" : "Your order is proceeded, redirecting...",
  "redirect" : "https://example.com/?orderId=47743354-be15-7c70-b9ef-4bfc482e68dc&lang=en",
  "is3DSVer2" : false
}

Request example with authentication via the 3DS2 protocol

Example of the first request:

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/performP2PByBinding.do' -H 'Content-Type: application/json' --data-raw '{ 
  "amountInput" : 1000,
  "currency" : "978",
  "fromCard" : {
    "bindingId" : "fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc"
  },
  "orderId" : "38b7a9e0-7cfa-46f7-8655-f206a8898e7a",
  "password" : "test_user_password",
  "type" : "WITHOUT_TO_CARD",
  "username" : "test_user",
  "params" : {
    "name" : "payerAddress",
    "value" : "payer Address"
  }
}'

Example of the second request:

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/performP2PByBinding.do' -H 'Content-Type: application/json' --data-raw '{ 
  "amountInput" : 1000,
  "currency" : "978",
  "fromCard" : {
    "bindingId" : "fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc"
  },
  "orderId" : "38b7a9e0-7cfa-46f7-8655-f206a8898e7a",
  "password" : "test_user_password",
  "type" : "WITHOUT_TO_CARD",
  "username" : "test_user",
  "params" : {
    "name" : "payerAddress",
    "value" : "payer Address"
  },
  "threeDSServerTransId" : "f44d6d21-1874-45a5-aeb0-1c710dd6e134",
  "threeDSVer2FinishUrl" : "https://example.com/acs2/acs/3dsMethod"
}'

Response example with authentication via the 3DS2 protocol

Example of the response to the first request:

{
  "errorCode": 0,
  "is3DSVer2": true,
  "threeDSServerTransId": "f44d6d21-1874-45a5-aeb0-1c710dd6e134",
  "threeDSMethodURLServer": "https://example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=f44d6d21-1874-45a5-aeb0-1c710dd6e134",
}

Example of the response to the second request:

{
  "errorCode": 0,
  "info": "Your order is proceeded, redirecting...",
  "acsUrl": "https://example.com/acs2/acs/creq",
  "is3DSVer2": true,
  "packedCReq" : "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjVmMzEyMjdlLTljZmQtNDQwYi1hNDNjLTE4NjljMzNhNGI5YiIsImFjc1RyYW5zSUQiOiI5YTQyYzQ4ZC1hNWRiLTQ3NjEtYmI4Mi05ZmY5MmM0NzZiM2QiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDQiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0="
}

Instant P2P transfer

To perform an instant P2P money transfer without order registration request, use https://dev.processing.ae/payment/rest/api/p2p/instantPerformP2P.do request.


When sending request, you should use header: Content-Type: application/json

The structure of the instantPerformP2P.do request assumes the presence of the fromCard block to pass the attributes of the card to be debited and the toCard block to pass the attributes of the card to be credited. Depending on the business processes of the bank and the online store, the following options are possible when carrying out a card-to-card money transfer:

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
MandatoryorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
OptionalclientIdString [0..255]Customer number (ID) in the merchant's system — up to 255 characters. Used to implement the functionality of stored-credential transactions. Can be returned in the response if the merchant is allowed to store credentials.
Specifying this parameter in stored-credential transactions is mandatory. Otherwise, a payment will be unsuccessful.
OptionalbindingIdString [1..255]Identifier of an already existing stored credential. This is the card ID tokenized by the Gateway. Can be used only if the merchant has the permission to work with stored credentials. If this parameter is passed in this request, it means that:
  • This order can only be paid with a stored credential;
  • The payer will be redirected to a payment page where only CVC entry is required.
ConditionaloriginalSchemeTransactionIdString [1..22]The identifier of the original successful Mastercard transaction.
Is mandatory when using merchant's stored credentials in stored credential transfers.
OptionalcreditBindingIdString [0..255]Identifier of the stored credential of the card to be credited. It is used in card-to-card transfers when the recipient's card is known in advance. This parameter should first be passed in the request for transfer register (registerP2P.do - clientId parameter should also be passed here), then in the request for transfer funds by binding (performP2PByBinding.do - the value of creditBindingId parameter passed in registerP2P.do should be passed in bindingId parameter in toCard block).
OptionalemailString [1..40]The payer's email address.
MandatoryamountString [0..12]Transfer amount in minor currency units (e.g. in cents).
This parameter is passed if the payer decides to change the transfer amount when carrying out the money transfer.
MandatorycurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
OptionaltypeStringIn the case of a money transfer with data on only one card, it is necessary to pass the corresponding value in this parameter:
WITHOUT_FROM_CARD - without indication of the card to be debited.
WITHOUT_TO_CARD - without indication of the card to be credited.
If an ordinary card-to-card money transfer is concerned the following value is to be passed here: STANDARD.
OptionalorderDescriptionString [1..600]Order description passed to the payment gateway during the registration.
It is not allowed to fill this parameter with personal data or payment data (card numbers, etc.). This requirement is due to the fact that the order description is not masked in Merchant Portal and log files.
OptionalparamsObjectFields for storing additional order information, must be passed as follows:
"params": [ {"name": "param1", "value": "value1"}, {"name": "param2", "value": "value2"} ].
These fields can be passed to the processing bank for further display in the bank registries.
By default orderNumber (order number) and orderDescription (order description) are passed. OrderDescription must not exceed 99 characters, do not use the following characters: %, +, end of line \r and line break \n).

To enable this functionality contact the bank.
OptionalfeeInputInteger [0..8]Fee amount in minimum currency units. Must be enabled by respective Merchant-level permission in the Gateway.
MandatoryreturnUrlString [1..512]The address to which the user will be redirected if the payment is successful. The address must be specified in full including the protocol used (for example, https://mybestmerchantreturnurl.com instead of mybestmerchantreturnurl.com). Otherwise, the user will be redirected to the address of the following type https://dev.processing.ae/payment/<merchant_address>.
OptionalfailUrlString [1..512]The address to which the user is to be redirected in case of a failed payment. The address must be specified in full including the protocol used (for example, https://mybestmerchantreturnurl.com instead of mybestmerchantreturnurl.com). Otherwise, the user will be redirected to the address of the following type https://dev.processing.ae/payment/<merchant_address>.
ConditionaltransactionTypeIndicatorStringIndicator of transaction type. It is used in one-direction types of transaction.
There are such possible values:
  • A – Account to Account (one person)
  • B – Business to business transfer
  • C – Transfer for the purpose of purchasing cryptocurrency
  • D – Funds Disbursement
  • F – Transfer for gambling betting
  • G – Online gambling payout
  • H – Cash Out (Withdrawal)
  • I – Government disbursment
  • J – Money transfer – bank-initiated
  • L – Non-Card Bill Payment
  • O – Credit card Bill Payment
  • P – Person to Person (different persons)
  • W – Transfer to own account of a staged digital wallet for payment.
ConditionalfeaturesObjectField for feature parameter, is mandatory for one-direction operations.
If AFT operation is performed (transfer from card to account) - WITHOUT_TO_CARD should be passed in feature parameter. Additionally, if a follow-up OCT operation is expected after this AFT operation, the OCT_EXPECTED value should be passed.
Example: "features" : { "feature" : ["WITHOUT_TO_CARD"] }
If OCT operation is performed (transfer from account to card) - WITHOUT_FROM_CARD should be passed in feature parameter.
Example: "features" : { "feature" : ["WITHOUT_FROM_CARD"] }
To specify multiple features, use this parameter several times in one request.
OptionalmccInteger [4]Merchant Category Code.
Using this parameter requires a special permission. You can use only the values from the predefined list of allowed MCC values. Contact the support team for details.
OptionalmerchantLoginString [1..255]To register an order on behalf of another merchant, specify the merchant's API account login in this parameter.
Can be used only if you have the permission to see the transactions of other merchants or if the specified merchant is your child merchant.
OptionaldynamicCallbackUrlString [1..512]This parameter allows you to use the functionality of sending callback notifications dynamically. Here you can pass the address to which all "payment" callback notifications activated for the merchant will be sent. "Payment" notifications are callback notifications related to the following events: successful hold, payment declined by timeout, cardpresent payment is declined, successful debit, refund, cancellation. At the same time, callback notifications activated for the merchant that are not related to payments (enabling/disabling a stored credential, storing a credential) will be sent to a static address for callbacks. Whether the parameter is mandatory or not depends on the merchant configuration on Payment Gateway side.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
OptionaltypeStringIn the case of a money transfer with data on only one card, it is necessary to pass the corresponding value in this parameter:
WITHOUT_FROM_CARD - without indication of the card to be debited.
WITHOUT_TO_CARD - without indication of the card to be credited.
If an ordinary card-to-card money transfer is concerned the following value is to be passed here: STANDARD.
OptionalcaptchaStringCAPTCHA (a text intended to distinguish human from machine input)
OptionalthreeDSSDKBooleanPossible values: true or false. Flag showing that payment comes from 3DS SDK.
OptionalthreeDSSDKEncDataStringEncrypted data about device. Parameter is mandatory for SDK flow.
OptionalthreeDSSDKReferenceNumberString3DS2 SDK official identifier
OptionalthreeDSSDKEphemPubKeyStringPublic part of ephemeral key. Required to etablish session with ACS. Parameter is mandatory for SDK flow.
OptionalthreeDSSDKAppIdStringUnique identifier of SDK.Parameter is mandatory for SDK flow.
OptionalthreeDSSDKTransIdStringUnique identifier of transaction within SDK. Parameter is mandatory for SDK flow.
OptionalthreeDSMethodNotificationUrlString [1..512]URL where notification about performed 3DS-method should be sent to.
ConditionalthreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSVer2FinishUrlString [1..512]URL where Customer should be redirected after authentication on ACS Server.
ConditionalthreeDSVer2MdOrderString [1..36]Order number which was registered in the first part of the request within 3DS2 transaction. Mandatory for 3DS2 authentication.
If this parameter is present in the request, the mdOrder value passed in it overrides, and in this case the order gets paid right away instead of being registered.
This parameter is used only for instant payments, i.e., when the order is registered and payed via the same request.
OptionalbindingNotNeededBooleanAllowed values:
  • true – storing the credential after the payment is disabled (a stored credential is a customer identifier passed in order registration request — after payment it will be deleted from order details);
  • false – if payment is successful the credential can be stored (if the necessary conditions are met). This is the default value.
OptionalexternalScaExemptionIndicatorStringThe type of SCA (Strong Customer Authentication) excemption. Used for AFT transactions. If this parameter is specified, the transaction will be processed depending on your settings in the payment gateway: either forced SSL operation will be done, or the issuer bank will get the information about SCA excemption and decide to perform operation with or without 3DS authentication (for details, contact our support team). Allowed values:
  • LVP – Low Value Payments transaction. You can consider a transaction as low risk based on the transaction amount, the client's transactions per day or the client's total daily amount.
  • TRA – Transaction Risk Analysis transaction, i.e., the transaction that has passed successful anti-fraud check.

To pass this parameter, you must have sufficient permissions in the payment gateway.
ConditionaloriginalPaymentNetRefNumString [1..36]The identifier of the original or previous successful transaction in the payment system in relation to the performed stored-credential transaction - TRN ID. Is passed when tii = R,U, or F.
Is mandatory when using merchant's stored credentials in stored credential transfers.
ConditionaltiiStringTransaction initiator indicator. A parameter indicating what type of operation will be carried out by the initiator (Customer or Merchant).
Is mandatory for AFT and transfer operation when using a stored credential in fromCard block or a merchant's stored credential.
For OCT operations, this parameter cannot be passed.
Possible values
OptionalshippingPayerDataObjectObject containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalpreOrderPayerDataObjectObject containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.
OptionalorderPayerDataObjectObject containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.
OptionalbillingAndShippingAddressMatchIndicatorString [1]Indicator for matching the cardholder's billing address and shipping address. This parameter is used for further 3DS authentication of the customer.
Possible values:
  • Y - the cardholder's billing address and shipping address match;
  • N - cardholder billing address and shipping address do not match.
ConditionalbillingPayerDataObjectA block with the client's registration data (address, postal code) necessary for passing the address verification within the AVS/AVV services. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
ConditionalbillingRecipientDataObjectA block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
MandatoryfromCardObjectA block with the attributes of the card to be debited. See nested parameters.
MandatorytoCardObjectA block with the attributes of the card to be credited. See nested parameters.
OptionaldebitMdOrderString [1..36]Unique number of the order for which AFT transfer in IPay was performed. This parameter is used for OCT operations for P2P transfers (AFT+OCT).
ConditionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent.
OptionaltransactionPurposeStringTransaction purpose (used for OCT transactions using Mastercard). Possible values:
  • FAMILY_SUPPORT or 0
  • REGULAR_LABOR_TRA or 1
  • TRAVEL_AND_TOURISM or 2
  • EDUCATION or 3
  • HOSPITALIZATION or 4
  • EMERGENCY_NEED or 5
  • SAVING or 6
  • GIFTS or 7
  • OTHER or 8
  • SALARY or 9
  • CROWD_LENDING or 10
  • CRYPTO_CURRENCY or 11
  • REFUND_ORIGINAL or 12
  • REFUND_NEW_CARD or 13
  • TRANSFER_SAME_WAL or 14
  • BOLETO_PAYMENT or 15
  • HIGH_RISK_SECURITY or 16
  • RECYCLING_DEPOSIT_RETURN or 17
  • VALUE_ADDED_TAX or 18
OptionalserviceProcessingTypeStringThe type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:
  • NORMAL or 00
  • ORIG_HOLD or 01
  • VISA_DEFERRED_DEFAULT or 02
  • VISA_DEFERRED_CUSTOM or 03
  • CANCEL_DEFERRED or 09
  • VISA_DIRECT_CUSTOM or 0I
  • DEFERRED_OCT_QUERY or 0Q
  • REC_PAYOUT or 0R
  • ALIAS_DIRECTORY or A0

Possible values of tii parameter:

tii valueDescriptionTransaction typeTransaction initiatorCard data for transactionCard data saved after transactionNote
CIInitial Common CITInitiatingCustomerEntered by CustomerYesAn e-commerce transaction, credential is stored.
FUnscheduled CITSubsequentCustomerCustomer selects card instead of manual entryNoAn e-commerce transaction that uses a stored credential.

Description of parameters in shippingPayerData object:

RequiredNameTypeDescription
OptionalshippingCityString [1..50]The customer's city (from the delivery address)
OptionalshippingCountryString [1..50]The customer's country
OptionalshippingAddressLine1String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine2String [1..50]The customer's primary address (from the shipping address)
OptionalshippingAddressLine3String [1..50]The customer's primary address (from the shipping address)
OptionalshippingPostalCodeString [1..16]The customer's zip code for delivery
OptionalshippingStateString [1..50]Customer's state/region (from delivery address)
OptionalshippingMethodIndicatorInteger [2]Shipping Method Indicator.
Possible values:
  • 01 - delivery to the cardholder's billing address
  • 02 - delivery to another address verified by Merchant
  • 03 - delivery to an address other than the cardholder's primary (settlement) address
  • 04 - shipment to the store/self-collection (the store address should be specified in the relevant delivery parameters)
  • 05 - Digital distribution (includes online services and e-gift cards)
  • 06 - travel and event tickets that are not deliverable
  • 07 - Other (e.g. games, non-deliverable digital goods, digital subscriptions, etc.)
OptionaldeliveryTimeframeInteger [2]Product delivery timeframe.
Possible values:
  • 01 - digital distribution
  • 02 - same-day delivery
  • 03 - overnight delivery
  • 04 - delivery within 2 days after payment and later
OptionaldeliveryEmail String [1..254]Target email address for delivery of digital distribution. Note that it is preferrable to pass the email in a separate email parameter of the request. The deliveryEmail parameter specified in this block is only used to fill MerchantRiskIndicator during 3DS authorization.

Description of parameters in preOrderPayerData object:

RequiredNameTypeDescription
OptionalpreOrderDateString [10]Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
OptionalpreOrderPurchaseIndInteger [2]Indicator of a customer placing an order for available or future delivery.
Possible values:
  • 01 - delivery available;
  • 02 - future delivery
OptionalreorderItemsIndInteger [2]An indicator that the customer is rebooking a previously paid delivery as part of a new order.
Possible values:
  • 01 - order placed for the first time;
  • 02 - repeated order

Description of parameters in orderPayerData object:

RequiredNameTypeDescription
OptionalhomePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.
OptionalworkPhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

ConditionalmobilePhoneString [7..15]Customer's phone number. It is always necessary to specify the country code, but you can specify or omit the + sign or 00 at the beginning. The number must be 7 to 15 digits long. Thus, the following options are valid:
  • +35799988877;
  • 0035799988877;
  • 35799988877.

For payment by VISA with 3DS authorization, it is necessary to specify either phone or email of the cardholder. If you have a setting to display phone number on the payment page and have specified an invalid number, the customer will have a possibility to correct it on the payment page.

Below are the parameters of the billingPayerData block (data about the client registration address).

RequiredNameTypeDescription
ConditionalbillingCityString [0..50]The city registered on a specific card of the Issuing Bank. Mandatory for AFT transactions using Visa.
ConditionalbillingCountryString [0..50]The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Visa.
ConditionalbillingAddressLine1String [0..50]The address registered on a specific card of the Issuing Bank (A payer's address). Line 1. Mandatory to be passed in order AVS verification works. Mandatory for AFT transactions using Visa.
OptionalbillingAddressLine2String [0..50]The address registered on a specific card of the Issuing Bank. Line 2.
OptionalbillingAddressLine3String [0..50]The address registered on a specific card of the Issuing Bank. Line 3.
OptionalbillingPostalCodeString [0..9]Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
OptionalbillingStateString [0..50]The state registered on a specific card of the Issuing Bank. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
MandatorypayerAccountString [1..32]Payer's account number.
ConditionalpayerLastNameString [1..64]Payer's last name. Mandatory for AFT transactions using Visa.
ConditionalpayerFirstNameString [1..35]Payer's first name. Mandatory for AFT transactions using Visa.
OptionalpayerMiddleNameString [1..35]Payer's middle name.
OptionalpayerCombinedNameString [1..99]Payer's full name.
OptionalpayerIdTypeString [1..8]Type of the payer's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalpayerIdNumberString [1..100]Number of the payer's identifying document (e.g. passport) provided.
ConditionalpayerBirthdayString [1..20]Payer's birth date in the YYYYMMDD format. Mandatory for AFT transactions using Visa.
OptionalpayerAccountNumberTypeString [1..20]Payer's account number type. Mandatory for OCT transactions using Mastercard. Possible values:
  • RTN or 1 – RTN + Bank Account
  • IBAN or 2 – IBAN
  • CARD_ACCOUNT or 3 – Card Account
  • EMAIL or 4– Email
  • PHONE_NUMBER or 5 – Phone Number
  • BAN_AND_BIC or 6 – Bank account number (BAN) + Bank Identification Code (BIC)
  • WALLET_ID or 7 – Wallet Id
  • SOCIAL_NETWORK_ID or 8 – Social Network Id
  • OTHER or 100 – Other

Below are the parameters of the billingRecipientData block (data about the recipient).

RequiredNameTypeDescription
OptionalrecipientCityString [0..40]The recipient city code in the ISO 3166-1 alpha-3 format.
ConditionalrecipientCountryString [0..50]The recipient country code. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code. Mandatory for AFT transactions using Mastercard.
OptionalrecipientAddressLine1String [0..50]The recipient address. Can contain Latin characters only.
OptionalrecipientPostalCodeString [0..9]Postal code of the recipient.
OptionalrecipientStateString [0..50]The recipient state code. Format: full ISO 3166-2 code, its part, or the state/region name. Can contain Latin characters only. We recommend to pass a two-letter ISO state code.
ConditionalrecipientAccountString [0..32]Recipient's account number. Mandatory for AFT transactions using Mastercard.
ConditionalrecipientAccountNumberTypeInteger [1..2]Type of recipient account. Available values:
  • 1 - RTN + Bank Account;
  • 2 - IBAN;
  • 3 - Card Account;
  • 4 - E-mail;
  • 5 - Phone Number;
  • 6 - Bank account number (BAN) + Bank Identification Code (BIC);
  • 7 - Wallet Id;
  • 8 - Social Network Id;
  • 100 - Other.

Mandatory for AFT transactions using Mastercard.
MandatoryrecipientLastNameString [0..35]Recipient's last name.
MandatoryrecipientFirstNameString [0..35]Recipient's first name.
OptionalrecipientMiddleNameString [0..35]Recipient's middle name.
OptionalrecipientCombinedNameString [0..99]Recipient's full name.
OptionalrecipientIdTypeString [1..8]Type of the recipient's identifying document provided.
Allowed values:
  • IDTP1 - Passport
  • IDTP2 - Driving license
  • IDTP3 - Social card
  • IDTP4 - Citizen ID card
  • IDTP5 - Certificate of Business
  • IDTP6 - Refugee certificate
  • IDTP7 - Residence permit
  • IDTP8 - Foreign passport
  • IDTP9 - Official passport
  • IDTP10 - Temporary passport
  • IDTP11 - Sailor's passport
OptionalrecipientIdNumberString [1..99]Number of the recipient's identifying document provided.
OptionalrecipientBirthdayString [1..20]Recipient's birth date in the format YYYYMMDD.

The fromCard block includes the following possible parameters:

RequiredNameTypeDescription
ConditionalpanString [1..19]The number of the card to be debited.
ConditionalcvcString [3]CVC/CVV2 code on the back of a card to be debited.
Is mandatory if the payment is performed without stored credential or the merchant does not have a permission to pay without CVC.
Only digits are allowed.
ConditionalexpirationYearInteger [4]The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
ConditionalexpirationMonthInteger [2]The month of expiration of the card that is to be debited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be debited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, PAN, EXPDATE, MDORDER.
Click here for more information about seToken generation.
ConditionalthreeDsAuthResultObjectA block with the data related to the result of 3 DS authentication when the merchant's 3DS Server is used.
Is mandatory for transfer and AFT transactions with merchant's 3DS Server.
See nested parameters.

When making payments using tokens (APPLE, SAMSUNG, GOOGLE), the fromCard block includes the following parameters instead of card details:

RequiredNameTypeDescription
ConditionalvendorStringThis parameter is used for payments made with tokens. It is the name of the payment service provider and can be one of the following: APPLE, GOOGLE, SAMSUNG.
This parameter must be passed together with the paymentToken parameter, which contains the actual payment token value.
This parameter cannot be used together with the following parameters : pan, cvc, expiry, bindingId, seToken.
ConditionalpaymentTokenString [1..8192]Token value of the vendor specified in vendor parameter (APPLE, GOOGLE, SAMSUNG). If vendor is specified, it must be passed.
This parameter cannot be used together with the following parameters : pan, cvc, expiry, bindingId, seToken.
OptionaldecryptedTokenBooleanDecrypted token for payments through vendors (ApplePay, GooglePay, etc.). Allowed values:
  • true – for the decrypted token;
  • false – for an encrypted token.

If this parameter is not passed, decryptedToken = false will be assumed by default.
OptionalprotocolVersionStringProtocol version as defined by Google for a paymentToken: ECv1 (by default) or ECv2

Below are the parameters of the threeDsAuthResult block (data related to 3 DS authentication).

RequiredNameTypeDescription
OptionalcavvString [0..200]Cardholder authentication value. The indicator is specified only after an order is paid and if the corresponding permission is enabled.
OptionalxidString [1..80]Electronic commerce indicator of the transaction. The indicator is specified only after an order has been paid and in case the corresponding permission is present.
OptionaleciInteger [1..4]Electronic commerce indicator. The indicator is specified only after an order has been paid and in case the corresponding permission is present. Below is the explanation of ECI codes.
  • ECI=01 or ECI=06 - merchant supports 3-D Secure, payment card does not support 3-D Secure, payment is processed based on CVV2/CVC code.
  • ECI=02 or ECI=05 - both merchant and payment card support 3-D Secure;
  • ECI=07 - merchant does not support 3-D Secure, payment is processed based on CVV2/CVC code.
ConditionalthreeDsType String3DS authentication type. This parameter is required for payment via your own 3DS Server with 3DS 2. For payments with SSL, this parameter is optional and is defined automatically depending on ECI value.
Allowed values:
  • 0 - SSL authentication
  • 3 - SCA Cardholder authentication with 3DS 2
  • 4 - RBA Cardholder authentication with 3DS 2
  • 5 - Cardholder authentication attempt with 3DS 2
  • 6 - 3DS 2 exemption granted
  • 7 - 3RI authentication with 3DS 2
  • 8 - 3RI authentication attempt with 3DS 2
OptionalthreeDSProtocolVersionString3DS protocol version. Possible values are "2.1.0", "2.2.0" for 3DS2.
If threeDSProtocolVersion is not passed in the request, then the default value will be used for 3D Secure authorization (2.1.0 - for 3DS 2).

The toCard block (if crediting is done by a third-party system, this block must be absent) consists of the following possible parameters:

RequiredNameTypeDescription
ConditionalpanString [1..19]The number of the card to be credited.
OptionalexpirationYearInteger [4]The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
OptionalexpirationMonthInteger [2]The month of expiration of the card that is to be credited. Available values are as follows: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.
OptionalcardholderNameString [1..26]The name of the holder of the card that is to be credited.
ConditionalseTokenStringEncrypted card data. Must be passed if used instead of the card data.
The mandatory parameters for seToken string are timestamp, UUID, bindingId, MDORDER. Click here for more information about seToken generation.

In some cases, the request for AFT transaction contains toCard block, that contains replacementData block with the data used for replacement of the transfer destination. It contains card number and account number for crediting. These data are required by some payment systems in AFT transactions and are used for authentication on ACS during 3DS authorization.
To use this block, merchant must have a special permission (contact technical support team for details).

Below are the parameters of the replacementData block (data used for replacement of the transfer destination in AFT transactions):

RequiredNameTypeDescription
OptionalcardString [1..19]Recipient's card number, if known at the moment of transfer.
OptionalaccountString [1..30]Transit account number (any number provided by the bank).

The following parameters are also passed during the authentication via the 3DS2 protocol:

RequiredNameTypeDescription
OptionalthreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSVer2FinishUrlString [1..512]URL where Customer should be redirected after authentication on ACS Server.
OptionalthreeDSMethodNotificationUrlString [1..512]URL where notification about performed 3DS-method should be sent to.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalinfoStringThe result of an attempt to transfer funds.

The value in case of a successful transfer: "Your payment has been processed, redirecting...".

The value in case of an error: "Redirecting..."
OptionalorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
OptionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
OptionalacsUrlString [1..512]The URL address for redirecting to ACS. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. For details see Redirect to ACS.
OptionalredirectString [1..512]This parameter is returned if the payment is successful and that payment did not include check for 3-D Secure involvement. Merchants can use it if they want to redirect the user to the payment gateway page. If they have their own response page then this value can be ignored.
OptionaloriginalPaymentNetRefNumString [1..36]The identifier of the original or previous successful transaction in the payment system in relation to the performed stored-credential transaction - TRN ID. Is passed when tii = R,U, or F.
Is mandatory when using merchant's stored credentials in stored credential transfers.
ConditionalmcTransactionReferenceString [1..19]The identifier of the Mastercard AFT transaction. Only applicable (and mandatory) to Mastercard.
OptionalthreeDSSDKKeyStringDevice data encryption key. Parameter is mandatory for SDK flow.
OptionalthreeDSAcsTransactionIdStringID of 3DS transaction on ACS. Parameter is mandatory for SDK flow.
OptionalthreeDSAcsRefNumberStringReference number on ACS.
OptionalthreeDSAcsSignedContentStringSigned content for SDK, content includes ACS URL. Parameter is mandatory for SDK flow.
OptionalthreeDSDsTransIDStringUnique identifier of transaction witin IPS. Parameter is mandatory for SDK flow.
ConditionalstatusResponseObjectParameters of the order status. This block is returned only if you have a corresponding setting enabled. To enable this feature please contact support. See nested parameters.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is automatically filled by statusResponse.debitTransactionReference parameter from the corresponding AFT transaction (automatically generated by Payment Gateway) or by the corresponding parameter received in the OCT request.

The parameters of statusResponse block:

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalorderStatusIntegerThe value of this parameter specifies the status of the order in the payment gateway. It is missing if the order has not been found. Below is the list of available values:
  • 0 - order was registered but not paid;
  • 2 - order amount is fully authorized;
  • 3 - authorization reversed;
  • 5 - access control server of the issuing bank initiated authorization procedure;
  • 6 - authorization declined;
OptionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
OptionalpanMaskedFromString [1..19]The masked number of the card to be debited.
OptionalpanMaskedToString [1..19]The masked number of the card to be credited.
OptionalamountInteger [0..12]Payment amount in minor currency units (e.g. in cents).
OptionalcurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
OptionalcreationDateIntegerDate of order registration.
OptionalorderDescriptionString [1..600]Order description passed to the payment gateway during the registration.
It is not allowed to fill this parameter with personal data or payment data (card numbers, etc.). This requirement is due to the fact that the order description is not masked in Merchant Portal and log files.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
MandatoryresultCodeIntegerError code on the request execution. Available values:
  • 0 - in case of success;
  • 1 - in case of an error.
OptionalorderParamsObjectAn object with the merchant's attributes of the order. More than one orderParams object can be presented in the response.
The object must be passed as follows: {"param":"value","param2":"value2"}.
OptionaloperationListObjectObject containing information on the transactions completed in the order. More than one operationList object can be present in the response.
The parameters that can be passed here are described below.
OptionalbindingStringIdentifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher.
OptionaldetokenizedPanRepresentationString [1..19]The detokenized card number (the last 4 digits or in a masked form).
OptionaldetokenizedPanExpiryDateStringThe card's detokenized expiration date in the following format: "YYYYMM".
OptionalpaymentNetRefNumString [1..512]Original Network Reference Number - a unique identifier assigned by the card network (e.g., Mastercard, Visa) to the original transaction (such as a purchase or authorization). When a follow-up transaction is initiated (e.g., refund, recurring payment), this number must be included to:
  • Link the new transaction to the original one
  • Ensure proper tracking and reconciliation
  • Meet network compliance requirements
This parameter is returned only if the getP2PStatus version is 7 or higher.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is automatically generated by Payment Gateway for AFT operations using Mastercard. It can be further used in a subsequent OCT operation as a reference to the previous AFT operation.

When authenticating via the 3DS2 protocol, the following parameters are returned during the initial request:

RequiredNameTypeDescription
MandatorythreeDSServerTransIdString [1..36]Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
OptionalthreeDSMethodUrlString [1..512]URL of ACS Server for gathering browser data.
MandatorythreeDSMethodUrlServerString [1..512]URL of 3DS Server for gathering browser data to be included in the AReq (Authentication Request) from 3DS Server to ACS Server.
OptionalthreeDSMethodDataPackedString [1..1024]Base-64-encoded data of CReq (Challenge Response) to be sent to ACS Server.
OptionalthreeDSMethodURLServerDirectString [1..512]URL of 3dsmethod.do for executing the 3DS method on 3DS Server via Payment Gateway (subject to respective Merchant-level permission).

Below are the parameters to be present in the response, after a repeated request for the payment and the need to redirect the client to the ACS during the authentication via the 3DS2 protocol:

RequiredNameTypeDescription
ConditionalacsUrlString [1..512]The URL address for redirecting to ACS. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. For details see Redirect to ACS.
ConditionalpackedCReqStringPacked challenge request data. It is returned in a successful response in case of a 3D-Secure payment, when redirect to the ACS is needed. This value should be used as the ACS link creq parameter (acsUrl) to redirect the client to the ACS. For details see Redirect to ACS.

To complete the transaction use /p2p/finishThreeDsVer2.do.

Examples

Example of AFT transaction:

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/instantPerformP2P.do' '
--header 'Content-Type: application/json' \
--data '{
  "username": "test_user",
  "password": "test_user_password",
  "email" : "test@example.com",
  "orderNumber" : "abcd1234abchh",
  "amount" : 1500,
  "currency" : "978",
  "returnUrl" : "https://mybestmerchantreturnurl.com",
  "externalScaExemptionIndicator": "TRA",
  "failUrl" : "https://failUrl.com",
  "transactionTypeIndicator": "A",
  "features" : {
    "feature" : ["WITHOUT_TO_CARD"]
        },
  "fromCard" : {
    "cardholderName": "TEST CARDHOLDER",
    "pan" : "5000001111111115",
    "cvc" : "123",
    "expirationYear" : "2024",
    "expirationMonth" : "12"
        },
  "amountInput": "6000",
  "billingPayerData": {
    "billingCountry":"CYP",
    "billingCity":"Larnaka",
    "billingAddressLine1":"Stadiou 1",
    "payerBirthday": "20211512",
    "payerAccount": "DE1051078567",
    "payerLastName": "Kostas",
    "payerFirstName": "Parnas",
    "payerMiddleName": "Illigel",
    "payerCombinedName": "Kostas Parnas Illigel"
    },
  "billingRecipientData": {
    "recipientFirstName": "Rodetos",
    "recipientLastName": "Castinos",
    "recipientMiddleName": "Internal",
    recipientCombinedName": "Rodetos Castinos Internal",
    "recipientCountry": "CYP",   
    "recipientAccount": "DE3840401048",
    "recipientAccountNumberType": 1
    },
  }'

Example of OCT transaction

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/instantPerformP2P.do' '
--header 'Content-Type: application/json' \
--data '{
  "username": "test_user",
  "password": "test_user_password",
  "email" : "test@example.com",
  "orderNumber" : "abcd1234abchh",
  "amount" : 1500,
  "currency" : "978",
  "returnUrl" : "https://mybestmerchantreturnurl.com",
  "failUrl" : "https://failUrl.com",
  "toCard": {
        "pan": "4000001111111118"
    },
    "transactionTypeIndicator": "G",
    "features": {
        "feature": [
            "WITHOUT_FROM_CARD"
        ]
    }
  }'

Example of the response to the request:

{
    "errorCode": 0,
    "info": "Your order is proceeded, redirecting...",
    "acsUrl": "https://example.com/acs2/acs/creq",
    "is3DSVer2": true,
    "packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiOWM3NTkxMmEtZTg0NC00ODgyLWI5YzctYzZmYmMzNjIyNGQ3IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}

P2P transfer status

To obtain the status of a registered P2P order, use https://dev.processing.ae/payment/rest/api/p2p/getP2PStatus.do request.


When sending the request, you should use the header: Content-Type: application/json

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
OptionallanguageString [2]ISO 639-1 encoded language key. If the language is not specified, the default language specified in the store settings is used.
Supported languages: en,ru,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
ConditionalorderIdString [1..36]Order number in the payment gateway. Unique within the payment gateway.
ConditionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.

Response parameters

RequiredNameTypeDescription
MandatoryerrorCodeString [1..2]Information parameter in case of an error, which may have different code values:
  • 0 value - indicates success of the request processing;
  • another number value (1-99) - indicates an error for more details of which errorMessage parameter must be inspected.
It also can be missing if the result has not caused any error.
MandatoryerrorMessageString [1..512]Information parameter that is an error description in a case of error occurance. errorMessage value can vary, so it should not be hardcoded.
Language of the description is set in language parameter of the request.
OptionalorderStatusIntegerThe value of this parameter specifies the status of the order in the payment gateway. It is missing if the order has not been found. Below is the list of available values:
  • 0 - order was registered but not paid;
  • 2 - order amount is fully authorized;
  • 3 - authorization reversed;
  • 5 - access control server of the issuing bank initiated authorization procedure;
  • 6 - authorization declined;
OptionalorderNumberString [1..36]Order number (ID) in the merchant's system, must be unique for each order.
OptionalpanMaskedFromString [1..19]The masked number of the card to be debited.
OptionalpanMaskedToString [1..19]The masked number of the card to be credited.
OptionalamountInteger [0..12]Payment amount in minor currency units (e.g. in cents).
OptionalcurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
OptionalcreationDateIntegerDate of order registration.
OptionalorderDescriptionString [1..600]Order description passed to the payment gateway during the registration.
It is not allowed to fill this parameter with personal data or payment data (card numbers, etc.). This requirement is due to the fact that the order description is not masked in Merchant Portal and log files.
OptionalipString [1..39]Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
MandatoryresultCodeIntegerError code on the request execution. Available values:
  • 0 - in case of success;
  • 1 - in case of an error.
OptionalorderParamsObjectAn object with the merchant's attributes of the order. More than one orderParams object can be presented in the response.
The object must be passed as follows: {"param":"value","param2":"value2"}.
OptionaloperationListObjectObject containing information on the transactions completed in the order. More than one operationList object can be present in the response.
The parameters that can be passed here are described below.
OptionalbindingStringIdentifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher.
OptionaldetokenizedPanRepresentationString [1..19]The detokenized card number (the last 4 digits or in a masked form).
OptionaldetokenizedPanExpiryDateStringThe card's detokenized expiration date in the following format: "YYYYMM".
OptionalpaymentNetRefNumString [1..512]Original Network Reference Number - a unique identifier assigned by the card network (e.g., Mastercard, Visa) to the original transaction (such as a purchase or authorization). When a follow-up transaction is initiated (e.g., refund, recurring payment), this number must be included to:
  • Link the new transaction to the original one
  • Ensure proper tracking and reconciliation
  • Meet network compliance requirements
This parameter is returned only if the getP2PStatus version is 7 or higher.
OptionaldebitTransactionReferenceString [1..19]Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is automatically filled by statusResponse.debitTransactionReference parameter from the corresponding AFT transaction (automatically generated by Payment Gateway) or by the corresponding parameter received in the OCT request.

payerData element contains the following parameters.

RequiredNameTypeDescription
OptionalpaymentAccountReferenceString [1..29]The unique account number of the client, which links all their payment means within the IPS (cards and tokens).

Below are possible parameters of the operationList block.

RequiredNameTypeDescription
OptionaloperationTypeStringTransaction type. The following values are available:
  • P2P_VERIFY - requests the fee amount;
  • P2P_DEBIT - debits the money;
  • P2P_CREDIT - credits the money;
  • P2P_DEBIT_REVERSAL - debit cancellation;
  • P2P_CREDIT_REVERSAL - credit cancellation;
  • P2P_TRANSFER - card-to-card money transfer;
  • P2P_TRANSFER_REVERSAL - automatic refund if an error occurs during the transfer.
OptionalamountInteger [0..12]Payment amount in minor currency units (e.g. in cents).
OptionalcurrencyString [3]ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
OptionaldatetimeStringDate and time of the transaction.
OptionalresultCodeStringResponse code from the processing bank. Contains a numeric value. See the list of action codes here.
OptionalresultCodeDescriptionString [1..512]Description of the transaction error code.
OptionalmaskedPanString [1..19]Masked number of the card or token used for the payment.
OptionalcardholderNameString [1..26]Cardholder's name (if available).
OptionalrefNumString [12]Unique transaction identifier assigned by the acquiring bank during a bank card payment processing. The RRN is generated solely by the acquiring bank and is used for subsequent transaction search, verification, and settlement (including refunds, and investigations).

Examples

Request example

curl -X POST 'https://dev.processing.ae/payment/rest/api/p2p/getP2PStatus.do' -H 'Content-Type: application/json' --data-raw '{ 
  "username": "test_user",
  "password": "test_user_password",
  "orderId" : "0a4eaae8-653a-71a9-8259-46fc00a8ea58"
}'

Response example

{
  "orderStatus": 0,
  "errorCode": 0,
  "errorMessage": "Successful",
  "orderNumber": "2009",
  "amount": 50000,
  "currency": "978",
  "creationDate": 1674137044330,
  "orderParams": [],
  "operationList": [],
  "resultCode": 0
}

Finishing a 3DS2 P2P transaction via API

To complete a transaction, the merchant sends a transaction ID to the gateway using the https://dev.processing.ae/payment/rest/api/p2p/finishThreeDsVer2.do method.


When sending the request, you should use the header: Content-type: application/x-www-form-urlencoded

Request parameters

RequiredNameTypeDescription
MandatoryusernameString [1..30]Merchant's API account login.
MandatorypasswordString [1..30]Merchant's API account password.
MandatorytDsTransIdString [1..36]Unique identifier of a transaction received from 3DS server.

Response parameters

This request does not return any JSON parameters in response. Instead, it redirects the customer to one of the following URLs:

Examples

Request example

curl --request POST \
  --url https://dev.processing.ae/payment/rest/api/p2p/finishThreeDsVer2.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data '{
    "username": "test_user",
    "password": "test_user_password",
    "threeDSServerTransId": "65020d0c-2627-4a45-8eab-b93b58fc52ae"
}'

Redirect URL example

https://mybestmerchantreturnurl.com/finish.html?orderId=906bf262-bd53-4ac7-983c-07127954681b&lang=en

Categories:
P2PAPI V1
Beta
Categories
Search results