For any question, we are one click away

Contact us

Card-to-card transactions

A card-to-card P2P transaction sends funds directly from one payment card (debit or credit) to another using card numbers.

Both the data of the card to be debited (fromCard) and the data of the card to be credited (toCard) are specified in a payment request.

P2P transaction flow can be displayed in the following main scenarios:

P2P 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.
  2. The online store system registers the order in the Payment Gateway via registerP2P.do. 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. The client’s Web browser opens the URL.
  6. At the specified URL, the client’s Web browser receives the form for card data collection.
  7. Client fills in the form and the data is sent to the Payment Gateway server.
  8. The system checks if the card belongs to 3-D Secure (SecureCode).
  9. 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).
  10. The client’s Web browser requests the user authorization form from ACS.
  11. ACS sends the authorization form to the client’s Web browser.
  12. Client fills in the form and the information is sent to ACS.
  13. 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.
  14. The client’s Web browser requests the Payment Gateway page when passing the encrypted parameters of the authorization result.
  15. Payment Gateway transfers the money.
  16. 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).
  17. The client’s Web browser requests the results of the money transfer from the online store.
  18. The online store system requests the information about the order status from the payment gateway - getP2PStatus.do.
  19. Payment Gateway returns the status of the order.
  20. The online store system shows payment result to client.

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

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: Registering the Order PG -->> OS: Response to order registration OS ->> PG: Requesting the fee amount PG -->> OS: Receiving the fee amount 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 [if 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: Authentication request ACS -->> 3DSS: Response to the authentication request 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 collects card data on its side.
  3. The online store system registers the order in the Payment Gateway via registerP2P.do. 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.
  4. In response to the registration request, the Payment Gateway returns a unique identifier of the order in the payment system.
  5. 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.
  6. Optional. Payment Gateway sends in response the fee amount.
  7. The online store sends a request for transfer of funds to the Payment Gateway via performP2P.do / performP2PByBinding.do.
    At this stage, the 3DS2 operation is initiated.
  8. Payment Gateway checks on the 3DS server whether the client can authenticate using the 3DS2 Protocol.
  9. 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).
  10. 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.
  11. 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.
  12. 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.
  13. Payment Gateway sends an authentication request to the 3DS server.
  14. 3DS server sends an authentication request (AReq) to the ACS server.
  15. ACS server sends an authentication request (ARes) response to the 3DS server.
  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

P2P card-to-card 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.bpcbt.com/payment/rest/api/p2p/registerP2P.do request.


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

Request parameters

Required Name Type Description
Mandatory

username String [1..30] Merchant's API account login.
Mandatory

password String [1..30] Merchant's API account password.
Mandatory

orderNumber String [1..36] Order number (ID) in the merchant's system, must be unique for each order.
Mandatory

amount Integer [0..12] Payment amount in minor currency units (e.g. in cents).
Mandatory

currency String [3] ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed.
Mandatory

returnUrl String [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.bpcbt.com/payment/<merchant_address>.
Optional

failUrl String [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.bpcbt.com/payment/<merchant_address>.
Optional

orderDescription String [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.
Optional

language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
Optional

clientId String [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.
Optional

merchantLogin String [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.
Optional

dynamicCallbackUrl String [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.
Optional

sessionTimeoutSecs Integer [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.
Optional

sessionExpiredDate String Data 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.
Optional

mcc Integer [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.
Optional

bindingId String [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. |
  • |Optional

    | creditBindingId | String [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). |

    |Optional

    | params | Object | Fields 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. |

    |Optional

    | feeInput | String | Fee 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.

    | |Optional | shippingPayerData | Object | Object containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | preOrderPayerData | Object | Object containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | orderPayerData | Object | Object containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.| Optional

    | billingAndShippingAddressMatchIndicator | String [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:

    | | Conditional | billingPayerData | Object | A 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.| Conditional | billingRecipientData | Object | A 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.|

    Description of parameters in shippingPayerData object:

    Required Name Type Description
    Optional shippingCity String [1..50] The customer's city (from the delivery address)
    Optional shippingCountry String [1..50] The customer's country
    Optional shippingAddressLine1 String [1..50] The customer's primary address (from the shipping address)
    Optional shippingAddressLine2 String [1..50] The customer's primary address (from the shipping address)
    Optional shippingAddressLine3 String [1..50] The customer's primary address (from the shipping address)
    Optional shippingPostalCode String [1..16] The customer's zip code for delivery
    Optional shippingState String [1..50] Customer's state/region (from delivery address)
    Optional shippingMethodIndicator Integer [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.)
    Optional deliveryTimeframe Integer [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
    Optional deliveryEmail 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:

    Required Name Type Description
    Optional preOrderDate String [10] Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
    Optional preOrderPurchaseInd Integer [2] Indicator of a customer placing an order for available or future delivery.
    Possible values:
    • 01 - delivery available;
    • 02 - future delivery
    Optional reorderItemsInd Integer [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:

    Required Name Type Description
    Optional homePhone String [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.
    Optional workPhone String [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.

    Conditional mobilePhone String [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).

    Required Name Type Description
    Optional billingCity String [0..50] The city registered on a specific card of the Issuing Bank.
    Optional billingCountry String [0..50] The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Numbe
    Optional billingAddressLine1 String [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.
    Optional

    billingAddressLine2 String [0..50] The address registered on a specific card of the Issuing Bank. Line 2.
    Optional

    billingAddressLine3 String [0..50] The address registered on a specific card of the Issuing Bank. Line 3.
    Optional

    billingPostalCode String [0..9] Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
    Optional

    billingState String [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.
    Mandatory

    payerAccount String [1..32] Payer's account number.
    Optional payerLastName String [1..64] Payer's last name.
    Optional payerFirstName String [1..35] Payer's first name.
    Optional

    payerMiddleName String [1..35] Payer's middle name.
    Optional

    payerCombinedName String [1..99] Payer's full name.
    Optional

    payerIdType String [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
    • | | Optional

      | payerIdNumber | String [1..100] | Number of the payer's identifying document (e.g. passport) provided. |

      | Optional | payerBirthday | String [1..20] | Payer's birth date in the YYYYMMDD format. | Optional | payerAccountNumberType | String [1..20] | Payer's account number type. Possible values:
      |

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

      Required Name Type Description
      Optional

      recipientCity String [0..40] The recipient city code in the ISO 3166-1 alpha-3 format.
      Optional recipientCountry String [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.
      Optional

      recipientAddressLine1 String [0..50] The recipient address. Can contain Latin characters only.
      Optional

      recipientPostalCode String [0..9] Postal code of the recipient.
      Optional

      recipientState String [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.
      Optional recipientAccount String [0..32] Recipient's account number.
      Optional recipientAccountNumberType Integer [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

      recipientLastName String [0..35] Recipient's last name.
      Mandatory

      recipientFirstName String [0..35] Recipient's first name.
      Optional

      recipientMiddleName String [0..35] Recipient's middle name.
      Optional

      recipientCombinedName String [0..99] Recipient's full name.
      Optional

      recipientIdType String [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
      • | | Optional

        | recipientIdNumber | String [1..99] | Number of the recipient's identifying document provided. |

        | Optional

        | recipientBirthday | String [1..20] | Recipient's birth date in the format YYYYMMDD. |

        Response parameters

        Required Name Type Description
        Mandatory

        errorCode String [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.
          | | Mandatory

          | errorMessage | String [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. |

          |
          Optional

          | formUrl | String [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. |

          | Optional

          | orderId | String [1..36] | Order number in the payment gateway. Unique within the payment gateway. |

          | Optional

          | orderNumber | String [1..36] | Order number (ID) in the merchant's system, must be unique for each order. |

          Examples

          Request example

          curl -X POST 'https://dev.bpcbt.com/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 with specifying payer and recipient data

          curl -X POST 'https://dev.bpcbt.com/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.bpcbt.com/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.bpcbt.com/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.

          Request parameters

          Required Name Type Description
          Mandatory

          username String [1..30] Merchant's API account login.
          Mandatory

          password String [1..30] Merchant's API account password.
          Mandatory

          orderId String [1..36] Order number in the payment gateway. Unique within the payment gateway.
          Optional

          language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
          Optional

          amount String [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.
          Optional

          mcc Integer [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.
          Optional billingPayerData Object A 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.
          Optional billingRecipientData Object A block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.
          Mandatory

          fromCard Object A block with the attributes of the card to be debited. See nested parameters.
          Mandatory

          toCard Object A block with the attributes of the card to be credited. See nested parameters.

          The fromCard block includes the following possible parameters:

          Required Name Type Description
          Conditional

          pan String [1..19] The number of the card to be debited.
          Conditional

          cvc String [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.
          Conditional

          expirationYear Integer [4] The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
          Conditional

          expirationMonth Integer [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.
          Mandatory

          cardholderName String [1..26] The name of the holder of the card that is to be debited.
          Conditional

          seToken String Encrypted 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:

          Required Name Type Description
          Conditional

          pan String [1..19] The number of the card to be credited.
          Optional

          expirationYear Integer [4] The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
          Optional

          expirationMonth Integer [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.
          Optional

          cardholderName String [1..26] The name of the holder of the card that is to be credited.
          Conditional

          seToken String Encrypted 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).

          Required Name Type Description
          Optional billingCity String [0..50] The city registered on a specific card of the Issuing Bank.
          Optional billingCountry String [0..50] The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Numbe
          Optional billingAddressLine1 String [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.
          Optional

          billingAddressLine2 String [0..50] The address registered on a specific card of the Issuing Bank. Line 2.
          Optional

          billingAddressLine3 String [0..50] The address registered on a specific card of the Issuing Bank. Line 3.
          Optional

          billingPostalCode String [0..9] Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
          Optional

          billingState String [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.
          Mandatory

          payerAccount String [1..32] Payer's account number.
          Optional payerLastName String [1..64] Payer's last name.
          Optional payerFirstName String [1..35] Payer's first name.
          Optional

          payerMiddleName String [1..35] Payer's middle name.
          Optional

          payerCombinedName String [1..99] Payer's full name.
          Optional

          payerIdType String [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
          • | | Optional

            | payerIdNumber | String [1..100] | Number of the payer's identifying document (e.g. passport) provided. |

          • 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).

            Required Name Type Description
            Optional

            recipientCity String [0..40] The recipient city code in the ISO 3166-1 alpha-3 format.
            Optional recipientCountry String [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.
            Optional

            recipientAddressLine1 String [0..50] The recipient address. Can contain Latin characters only.
            Optional

            recipientPostalCode String [0..9] Postal code of the recipient.
            Optional

            recipientState String [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.
            Optional recipientAccount String [0..32] Recipient's account number.
            Optional recipientAccountNumberType Integer [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

            recipientLastName String [0..35] Recipient's last name.
            Mandatory

            recipientFirstName String [0..35] Recipient's first name.
            Optional

            recipientMiddleName String [0..35] Recipient's middle name.
            Optional

            recipientCombinedName String [0..99] Recipient's full name.
            Optional

            recipientIdType String [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
            • | | Optional

              | recipientIdNumber | String [1..99] | Number of the recipient's identifying document provided. |

              | Optional

              | recipientBirthday | String [1..20] | Recipient's birth date in the format YYYYMMDD. |

              Response parameters

              Required Name Type Description
              Mandatory

              errorCode String [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.
                | | Mandatory

                | errorMessage | String [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:

                Required Name Type Description
                Optional

                feeAmount Integer [1..12] Fee amount.
                Optional

                feeCurrency String [3] The ISO 4217 code of the fee currency.
                Optional

                feeDescription String [1..512] The description of the fee.

                Examples

                Request example

                curl -X POST 'https://dev.bpcbt.com/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.bpcbt.com/payment/rest/api/p2p/verifyP2PByBinding.do request.


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

                Request parameters

                Required Name Type Description
                Mandatory

                username String [1..30] Merchant's API account login.
                Mandatory

                password String [1..30] Merchant's API account password.
                Optional

                language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
                Optional

                mcc Integer [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.
                Mandatory

                orderId String [1..36] Order number in the payment gateway. Unique within the payment gateway.
                Mandatory

                fromCard Object A block with the attributes of the card to be debited. See nested parameters.
                Mandatory

                toCard Object A block with the attributes of the card to be credited. See nested parameters.

                The fromCard block includes the following possible parameters:

                Required Name Type Description
                Conditional

                bindingId String [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.
                Conditional

                pan String [1..19] The number of the card to be debited.
                Conditional

                cvc String [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.
                Conditional

                expirationYear Integer [4] The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
                Conditional

                expirationMonth Integer [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.
                Optional

                cardholderName String [1..26] The name of the holder of the card that is to be debited.
                Conditional

                seToken String Encrypted 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:

                Required Name Type Description
                Conditional

                bindingId String [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.
                Conditional

                pan String [1..19] The number of the card to be credited.
                Optional

                expirationYear Integer [4] The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
                Optional

                expirationMonth Integer [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.
                Optional

                cardholderName String [1..26] The name of the holder of the card that is to be credited.
                Conditional

                seToken String Encrypted 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

                Required Name Type Description
                Mandatory

                errorCode String [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.
                  | | Mandatory

                  | errorMessage | String [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. |

                  |
                  Optional

                  | feeAmount | Integer [1..12] | Fee amount. |

                  | Optional

                  | feeCurrency | String [3] | The ISO 4217 code of the fee currency. |

                  | Optional

                  | feeDescription | String [1..512] | The description of the fee. |

                  Examples

                  Request example

                  curl --location --request POST 'https://dev.bpcbt.com/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.bpcbt.com/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.

                  Request parameters

                  Required Name Type Description
                  Mandatory

                  username String [1..30] Merchant's API account login.
                  Mandatory

                  password String [1..30] Merchant's API account password.
                  Optional

                  language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
                  Mandatory

                  orderId String [1..36] Order number in the payment gateway. Unique within the payment gateway.
                  Optional

                  ip String [1..39] Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
                  Optional

                  email String [1..40] The payer's email address.
                  Optional

                  amount String [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.
                  Optional

                  amountInput Integer [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).
                  Optional

                  captcha String CAPTCHA (a text intended to distinguish human from machine input)
                  Optional

                  threeDSSDK Boolean Possible values: true or false. Flag showing that payment comes from 3DS SDK.
                  Optional

                  threeDSSDKEncData String Encrypted data about device.

                  Parameter is mandatory for SDK flow.

                  Optional

                  threeDSSDKReferenceNumber String 3DS2 SDK official identifier
                  Optional

                  threeDSSDKEphemPubKey String Public part of ephemeral key. Required to etablish session with ACS.

                  Parameter is mandatory for SDK flow.

                  Optional

                  threeDSSDKAppId String Unique identifier of SDK.

                  Parameter is mandatory for SDK flow.

                  Optional

                  threeDSSDKTransId String Unique identifier of transaction within SDK.

                  Parameter is mandatory for SDK flow.

                  Optional

                  threeDSMethodNotificationUrl String [1..512] URL where notification about performed 3DS-method should be sent to.
                  Conditional

                  threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                  Optional

                  threeDSVer2FinishUrl String [1..512] URL where Customer should be redirected after authentication on ACS Server.
                  Conditional

                  threeDSVer2MdOrder String [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.
                  Optional

                  bindingNotNeeded Boolean Allowed 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.
                  • | | Conditional

                    | originalPaymentNetRefNum | String [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.|

                  • 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):
                    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. | |
                    Optional | shippingPayerData | Object | Object containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | preOrderPayerData | Object | Object containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | orderPayerData | Object | Object containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.| Optional

                    | billingAndShippingAddressMatchIndicator | String [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:

                    | | Conditional | billingPayerData | Object | A 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.| Conditional | billingRecipientData | Object | A 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.| Mandatory

                    | fromCard | Object | A block with the attributes of the card to be debited. See nested parameters. |

                    | Mandatory

                    | toCard | Object | A block with the attributes of the card to be credited. See nested parameters. |

                    |

                    Possible values of tii parameter:

                    tii value Description Transaction type Transaction initiator Card data for transaction Card data saved after transaction Note
                    CI Initial Common CIT Initiating Customer Entered by Customer Yes An e-commerce transaction, credential is stored.
                    F Unscheduled CIT Subsequent Customer Customer selects card instead of manual entry No An e-commerce transaction that uses a stored credential.

                    Description of parameters in shippingPayerData object:

                    Required Name Type Description
                    Optional shippingCity String [1..50] The customer's city (from the delivery address)
                    Optional shippingCountry String [1..50] The customer's country
                    Optional shippingAddressLine1 String [1..50] The customer's primary address (from the shipping address)
                    Optional shippingAddressLine2 String [1..50] The customer's primary address (from the shipping address)
                    Optional shippingAddressLine3 String [1..50] The customer's primary address (from the shipping address)
                    Optional shippingPostalCode String [1..16] The customer's zip code for delivery
                    Optional shippingState String [1..50] Customer's state/region (from delivery address)
                    Optional shippingMethodIndicator Integer [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.)
                    Optional deliveryTimeframe Integer [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
                    Optional deliveryEmail 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:

                    Required Name Type Description
                    Optional preOrderDate String [10] Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
                    Optional preOrderPurchaseInd Integer [2] Indicator of a customer placing an order for available or future delivery.
                    Possible values:
                    • 01 - delivery available;
                    • 02 - future delivery
                    Optional reorderItemsInd Integer [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:

                    Required Name Type Description
                    Optional homePhone String [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.
                    Optional workPhone String [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.

                    Conditional mobilePhone String [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).

                    Required Name Type Description
                    Optional billingCity String [0..50] The city registered on a specific card of the Issuing Bank.
                    Optional billingCountry String [0..50] The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Numbe
                    Optional billingAddressLine1 String [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.
                    Optional

                    billingAddressLine2 String [0..50] The address registered on a specific card of the Issuing Bank. Line 2.
                    Optional

                    billingAddressLine3 String [0..50] The address registered on a specific card of the Issuing Bank. Line 3.
                    Optional

                    billingPostalCode String [0..9] Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
                    Optional

                    billingState String [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.
                    Mandatory

                    payerAccount String [1..32] Payer's account number.
                    Optional payerLastName String [1..64] Payer's last name.
                    Optional payerFirstName String [1..35] Payer's first name.
                    Optional

                    payerMiddleName String [1..35] Payer's middle name.
                    Optional

                    payerCombinedName String [1..99] Payer's full name.
                    Optional

                    payerIdType String [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
                    • | | Optional

                      | payerIdNumber | String [1..100] | Number of the payer's identifying document (e.g. passport) provided. |

                      | Optional | payerBirthday | String [1..20] | Payer's birth date in the YYYYMMDD format. | Optional | payerAccountNumberType | String [1..20] | Payer's account number type. Possible values:
                      |

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

                      Required Name Type Description
                      Optional

                      recipientCity String [0..40] The recipient city code in the ISO 3166-1 alpha-3 format.
                      Optional recipientCountry String [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.
                      Optional

                      recipientAddressLine1 String [0..50] The recipient address. Can contain Latin characters only.
                      Optional

                      recipientPostalCode String [0..9] Postal code of the recipient.
                      Optional

                      recipientState String [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.
                      Optional recipientAccount String [0..32] Recipient's account number.
                      Optional recipientAccountNumberType Integer [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

                      recipientLastName String [0..35] Recipient's last name.
                      Mandatory

                      recipientFirstName String [0..35] Recipient's first name.
                      Optional

                      recipientMiddleName String [0..35] Recipient's middle name.
                      Optional

                      recipientCombinedName String [0..99] Recipient's full name.
                      Optional

                      recipientIdType String [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
                      • | | Optional

                        | recipientIdNumber | String [1..99] | Number of the recipient's identifying document provided. |

                        | Optional

                        | recipientBirthday | String [1..20] | Recipient's birth date in the format YYYYMMDD. |

                        The fromCard block includes the following possible parameters:

                        Required Name Type Description
                        Conditional

                        pan String [1..19] The number of the card to be debited.
                        Conditional

                        cvc String [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.
                        Conditional

                        expirationYear Integer [4] The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
                        Conditional

                        expirationMonth Integer [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.
                        Optional

                        cardholderName String [1..26] The name of the holder of the card that is to be debited.
                        Conditional

                        seToken String Encrypted 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.
                        Conditional threeDsAuthResult Object A 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:

                        Required Name Type Description
                        Conditional

                        vendor String This 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.
                        Conditional

                        paymentToken String [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.
                        Optional

                        decryptedToken Boolean Decrypted 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. | | Optional

                          | protocolVersion | String | Protocol 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).

                          Required Name Type Description
                          Optional

                          cavv String [0..200] Cardholder authentication value. The indicator is specified only after an order is paid and if the corresponding permission is enabled.
                          Optional

                          xid String [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.
                          Optional

                          eci Integer [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.
                          • | | Conditional

                            | threeDsType | String | 3DS 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:

                            | | Optional

                            | threeDSProtocolVersion | String | 3DS 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:

                            Required Name Type Description
                            Conditional

                            pan String [1..19] The number of the card to be credited.
                            Optional

                            expirationYear Integer [4] The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
                            Optional

                            expirationMonth Integer [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.
                            Optional

                            cardholderName String [1..26] The name of the holder of the card that is to be credited.
                            Conditional

                            seToken String Encrypted 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:

                            Required Name Type Description
                            Optional

                            threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                            Optional

                            threeDSVer2FinishUrl String [1..512] URL where Customer should be redirected after authentication on ACS Server.
                            Optional

                            threeDSMethodNotificationUrl String [1..512] URL where notification about performed 3DS-method should be sent to.

                            Response parameters

                            Required Name Type Description
                            Mandatory

                            errorCode String [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.
                              | | Optional

                              | errorMessage | String [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. |

                              |
                              Optional

                              | info | String | The 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..." |

                              | Conditional

                              | acsUrl | String [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.|

                              |
                              Conditional

                              | paReq | String [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. |

                              | Optional

                              | termUrl | String [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. |

                              | Optional

                              | originalPaymentNetRefNum | String [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.|

                              | Conditional | statusResponse | Object | Parameters 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. |

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

                              Required Name Type Description
                              Mandatory

                              is3DSVer2 Boolean Possible values: true or false. Flag showing that payment uses 3DS2.
                              Mandatory

                              threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                              Optional

                              threeDSMethodUrl String [1..512] URL of ACS Server for gathering browser data.
                              Mandatory

                              threeDSMethodUrlServer String [1..512] URL of 3DS Server for gathering browser data to be included in the AReq (Authentication Request) from 3DS Server to ACS Server.
                              Optional

                              threeDSMethodDataPacked String [1..1024] Base-64-encoded data of CReq (Challenge Response) to be sent to ACS Server.
                              Optional

                              threeDSMethodURLServerDirect String [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:

                              Required Name Type Description
                              Conditional

                              acsUrl String [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.
                              Conditional

                              packedCReq String Packed 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:

                              Required Name Type Description
                              Mandatory

                              errorCode String [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.
                                | | Mandatory

                                | errorMessage | String [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. |

                                |
                                Optional

                                | orderStatus | Integer | The 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:

                                | | Optional

                                | orderNumber | String [1..36] | Order number (ID) in the merchant's system, must be unique for each order. |

                                |
                                Optional

                                | panMaskedFrom | String [1..19] | The masked number of the card to be debited. |

                                | Optional

                                | panMaskedTo | String [1..19] | The masked number of the card to be credited. |

                                |
                                Optional

                                | amount | Integer [0..12] | Payment amount in minor currency units (e.g. in cents).|

                                | Optional

                                | currency | String [3] | ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed. |

                                |
                                Optional

                                | creationDate | Integer | Date of order registration. |

                                | Optional

                                | orderDescription | String [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.|

                                |
                                Optional

                                | ip | String [1..39] | Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).

                                |

                                | Mandatory

                                | resultCode | Integer | Error code on the request execution. Available values:

                                | |
                                Optional

                                | orderParams | Object | An 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"}. |

                                | Optional

                                | operationList | Object | Object 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. |

                                | Optional

                                | binding | String | Identifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher. |

                                | Optional

                                | detokenizedPanRepresentation | String [1..19] | The detokenized card number (the last 4 digits or in a masked form). |

                                | Optional

                                | detokenizedPanExpiryDate | String | The card's detokenized expiration date in the following format: "YYYYMM". |

                                | Optional

                                | paymentNetRefNum | String [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:

                                This parameter is returned only if the getP2PStatus version is 7 or higher. | |

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

                                Examples

                                Example of the first request in case of 3DS2 authentication

                                curl -X POST 'https://dev.bpcbt.com/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.bpcbt.com/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 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.bpcbt.com/payment/rest/api/p2p/performP2PByBinding.do request.


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

                                Request parameters

                                Required Name Type Description
                                Mandatory

                                username String [1..30] Merchant's API account login.
                                Mandatory

                                password String [1..30] Merchant's API account password.
                                Optional

                                language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
                                Optional

                                ip String [1..39] Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).
                                Optional

                                email String [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.
                                Mandatory

                                orderId String [1..36] Order number in the payment gateway. Unique within the payment gateway.
                                Optional

                                amountInput Integer [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).
                                Optional

                                captcha String CAPTCHA (a text intended to distinguish human from machine input)
                                Optional

                                threeDSSDK Boolean Possible values: true or false. Flag showing that payment comes from 3DS SDK.
                                Optional

                                threeDSSDKEncData String Encrypted data about device.

                                Parameter is mandatory for SDK flow.

                                Optional

                                threeDSSDKReferenceNumber String 3DS2 SDK official identifier
                                Optional

                                threeDSSDKEphemPubKey String Public part of ephemeral key. Required to etablish session with ACS.

                                Parameter is mandatory for SDK flow.

                                Optional

                                threeDSSDKAppId String Unique identifier of SDK.

                                Parameter is mandatory for SDK flow.

                                Optional

                                threeDSSDKTransId String Unique identifier of transaction within SDK.

                                Parameter is mandatory for SDK flow.

                                Optional

                                threeDSMethodNotificationUrl String [1..512] URL where notification about performed 3DS-method should be sent to.
                                Conditional

                                threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                                Optional

                                threeDSVer2FinishUrl String [1..512] URL where Customer should be redirected after authentication on ACS Server.
                                Conditional

                                threeDSVer2MdOrder String [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.
                                Optional

                                bindingNotNeeded Boolean Allowed 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.
                                • | | Conditional

                                  | originalPaymentNetRefNum | String [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.|

                                  | Optional

                                  | mcc | Integer [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. |

                                  | Conditional

                                  | originalSchemeTransactionId | String [1..22] | The identifier of the original successful Mastercard transaction.
                                  Is mandatory when using merchant's stored credentials in stored credential transfers. |

                                  | Conditional | tii | String | Is mandatory for transfer operation when using a stored credential in fromCard block or a merchant's stored credential.
                                  Possible values | Optional

                                  | params | Object | Fields 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):

                                  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):
                                  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. | | Optional | shippingPayerData | Object | Object containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | preOrderPayerData | Object | Object containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | orderPayerData | Object | Object containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.| Optional

                                  | billingAndShippingAddressMatchIndicator | String [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:

                                  | | Optional | billingPayerData | Object | A 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.| Optional | billingRecipientData | Object | A block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.| Mandatory

                                  | fromCard | Object | A block with the attributes of the card to be debited. See nested parameters. |

                                  | Mandatory

                                  | toCard | Object | A block with the attributes of the card to be credited. See nested parameters. |

                                  |

                                  Possible values of tii parameter:

                                  tii value Description Transaction type Transaction initiator Card data for transaction Card data saved after transaction Note
                                  CI Initial Common CIT Initiating Customer Entered by Customer Yes An e-commerce transaction, credential is stored.
                                  F Unscheduled CIT Subsequent Customer Customer selects card instead of manual entry No An e-commerce transaction that uses a stored credential.

                                  The fromCard block includes the following possible parameters:

                                  Required Name Type Description
                                  Conditional

                                  bindingId String [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.
                                  Conditional

                                  pan String [1..19] The number of the card to be debited.
                                  Conditional

                                  cvc String [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.
                                  Conditional

                                  expirationYear Integer [4] The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
                                  Conditional

                                  expirationMonth Integer [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.
                                  Optional

                                  cardholderName String [1..26] The name of the holder of the card that is to be debited.
                                  Conditional

                                  seToken String Encrypted 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.
                                  Conditional threeDsAuthResult Object A 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).

                                  Required Name Type Description
                                  Optional

                                  cavv String [0..200] Cardholder authentication value. The indicator is specified only after an order is paid and if the corresponding permission is enabled.
                                  Optional

                                  xid String [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.
                                  Optional

                                  eci Integer [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.
                                  • | | Conditional

                                    | threeDsType | String | 3DS 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:

                                    | | Optional

                                    | threeDSProtocolVersion | String | 3DS 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:

                                    Required Name Type Description
                                    Conditional

                                    bindingId String [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.
                                    Conditional

                                    pan String [1..19] The number of the card to be credited.
                                    Optional

                                    expirationYear Integer [4] The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
                                    Optional

                                    expirationMonth Integer [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.
                                    Optional

                                    cardholderName String [1..26] The name of the holder of the card that is to be credited.
                                    Conditional

                                    seToken String Encrypted 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:

                                    Required Name Type Description
                                    Optional shippingCity String [1..50] The customer's city (from the delivery address)
                                    Optional shippingCountry String [1..50] The customer's country
                                    Optional shippingAddressLine1 String [1..50] The customer's primary address (from the shipping address)
                                    Optional shippingAddressLine2 String [1..50] The customer's primary address (from the shipping address)
                                    Optional shippingAddressLine3 String [1..50] The customer's primary address (from the shipping address)
                                    Optional shippingPostalCode String [1..16] The customer's zip code for delivery
                                    Optional shippingState String [1..50] Customer's state/region (from delivery address)
                                    Optional shippingMethodIndicator Integer [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.)
                                    Optional deliveryTimeframe Integer [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
                                    Optional deliveryEmail 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:

                                    Required Name Type Description
                                    Optional preOrderDate String [10] Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
                                    Optional preOrderPurchaseInd Integer [2] Indicator of a customer placing an order for available or future delivery.
                                    Possible values:
                                    • 01 - delivery available;
                                    • 02 - future delivery
                                    Optional reorderItemsInd Integer [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:

                                    Required Name Type Description
                                    Optional homePhone String [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.
                                    Optional workPhone String [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.

                                    Conditional mobilePhone String [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).

                                    Required Name Type Description
                                    Optional billingCity String [0..50] The city registered on a specific card of the Issuing Bank.
                                    Optional billingCountry String [0..50] The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Numbe
                                    Optional billingAddressLine1 String [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.
                                    Optional

                                    billingAddressLine2 String [0..50] The address registered on a specific card of the Issuing Bank. Line 2.
                                    Optional

                                    billingAddressLine3 String [0..50] The address registered on a specific card of the Issuing Bank. Line 3.
                                    Optional

                                    billingPostalCode String [0..9] Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
                                    Optional

                                    billingState String [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.
                                    Mandatory

                                    payerAccount String [1..32] Payer's account number.
                                    Optional payerLastName String [1..64] Payer's last name.
                                    Optional payerFirstName String [1..35] Payer's first name.
                                    Optional

                                    payerMiddleName String [1..35] Payer's middle name.
                                    Optional

                                    payerCombinedName String [1..99] Payer's full name.
                                    Optional

                                    payerIdType String [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
                                    • | | Optional

                                      | payerIdNumber | String [1..100] | Number of the payer's identifying document (e.g. passport) provided. |

                                      | Optional | payerBirthday | String [1..20] | Payer's birth date in the YYYYMMDD format. | Optional | payerAccountNumberType | String [1..20] | Payer's account number type. Possible values:
                                      |

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

                                      Required Name Type Description
                                      Optional

                                      recipientCity String [0..40] The recipient city code in the ISO 3166-1 alpha-3 format.
                                      Optional recipientCountry String [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.
                                      Optional

                                      recipientAddressLine1 String [0..50] The recipient address. Can contain Latin characters only.
                                      Optional

                                      recipientPostalCode String [0..9] Postal code of the recipient.
                                      Optional

                                      recipientState String [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.
                                      Optional recipientAccount String [0..32] Recipient's account number.
                                      Optional recipientAccountNumberType Integer [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

                                      recipientLastName String [0..35] Recipient's last name.
                                      Mandatory

                                      recipientFirstName String [0..35] Recipient's first name.
                                      Optional

                                      recipientMiddleName String [0..35] Recipient's middle name.
                                      Optional

                                      recipientCombinedName String [0..99] Recipient's full name.
                                      Optional

                                      recipientIdType String [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
                                      • | | Optional

                                        | recipientIdNumber | String [1..99] | Number of the recipient's identifying document provided. |

                                        | Optional

                                        | recipientBirthday | String [1..20] | Recipient's birth date in the format YYYYMMDD. |

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

                                        Mandatory Name Type Description
                                        Optional

                                        threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                                        Optional

                                        threeDSVer2FinishUrl String [1..512] URL where Customer should be redirected after authentication on ACS Server.
                                        Optional

                                        threeDSMethodNotificationUrl String [1..512] URL where notification about performed 3DS-method should be sent to.

                                        Response parameters

                                        Required Name Type Description
                                        Mandatory

                                        errorCode String [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.
                                          | | Mandatory

                                          | errorMessage | String [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. |

                                          |
                                          Optional

                                          | info | String | The 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..." |

                                          | Conditional

                                          | acsUrl | String [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.|

                                          |
                                          Conditional

                                          | paReq | String [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. |

                                          | Conditional

                                          | termUrl | String [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. |

                                          | Conditional | statusResponse | Object | Parameters 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. |

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

                                          Required Name Type Description
                                          Mandatory

                                          is3DSVer2 Boolean Possible values: true or false. Flag showing that payment uses 3DS2.
                                          Mandatory

                                          threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                                          Optional

                                          threeDSMethodUrl String [1..512] URL of ACS Server for gathering browser data.
                                          Mandatory

                                          threeDSMethodUrlServer String [1..512] URL of 3DS Server for gathering browser data to be included in the AReq (Authentication Request) from 3DS Server to ACS Server.
                                          Optional

                                          threeDSMethodDataPacked String [1..1024] Base-64-encoded data of CReq (Challenge Response) to be sent to ACS Server.
                                          Optional

                                          threeDSMethodURLServerDirect String [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:

                                          Required Name Type Description
                                          Conditional

                                          acsUrl String [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.
                                          Conditional

                                          packedCReq String Packed 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:

                                          Required Name Type Description
                                          Mandatory

                                          errorCode String [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.
                                            | | Mandatory

                                            | errorMessage | String [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. |

                                            |
                                            Optional

                                            | orderStatus | Integer | The 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:

                                            | | Optional

                                            | orderNumber | String [1..36] | Order number (ID) in the merchant's system, must be unique for each order. |

                                            |
                                            Optional

                                            | panMaskedFrom | String [1..19] | The masked number of the card to be debited. |

                                            | Optional

                                            | panMaskedTo | String [1..19] | The masked number of the card to be credited. |

                                            |
                                            Optional

                                            | amount | Integer [0..12] | Payment amount in minor currency units (e.g. in cents).|

                                            | Optional

                                            | currency | String [3] | ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed. |

                                            |
                                            Optional

                                            | creationDate | Integer | Date of order registration. |

                                            | Optional

                                            | orderDescription | String [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.|

                                            |
                                            Optional

                                            | ip | String [1..39] | Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).

                                            |

                                            | Mandatory

                                            | resultCode | Integer | Error code on the request execution. Available values:

                                            | |
                                            Optional

                                            | orderParams | Object | An 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"}. |

                                            | Optional

                                            | operationList | Object | Object 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. |

                                            | Optional

                                            | binding | String | Identifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher. |

                                            | Optional

                                            | detokenizedPanRepresentation | String [1..19] | The detokenized card number (the last 4 digits or in a masked form). |

                                            | Optional

                                            | detokenizedPanExpiryDate | String | The card's detokenized expiration date in the following format: "YYYYMM". |

                                            | Optional

                                            | paymentNetRefNum | String [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:

                                            This parameter is returned only if the getP2PStatus version is 7 or higher. | |

                                            Examples

                                            Request example

                                            curl -X POST 'https://dev.bpcbt.com/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.bpcbt.com/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.bpcbt.com/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.bpcbt.com/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

                                            Required Name Type Description
                                            Mandatory

                                            username String [1..30] Merchant's API account login.
                                            Mandatory

                                            password String [1..30] Merchant's API account password.
                                            Optional

                                            language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
                                            Mandatory

                                            orderNumber String [1..36] Order number (ID) in the merchant's system, must be unique for each order.
                                            Optional

                                            clientId String [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.
                                            Optional

                                            bindingId String [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. |
                                            • | Conditional

                                              | originalSchemeTransactionId | String [1..22] | The identifier of the original successful Mastercard transaction.
                                              Is mandatory when using merchant's stored credentials in stored credential transfers. |

                                              |Optional

                                              | creditBindingId | String [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). |

                                              |Optional

                                              | email | String [1..40] | The payer's email address. |

                                              |
                                              Mandatory

                                              | amount | String [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.|

                                              | Mandatory

                                              | currency | String [3] | ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed. |

                                              | Optional

                                              | orderDescription | String [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.|

                                              | Optional

                                              | params | Object | Fields 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. |

                                              | Optional

                                              | feeInput | Integer [0..8] | Fee amount in minimum currency units. Must be enabled by respective Merchant-level permission in the Gateway. |

                                              | Mandatory

                                              | returnUrl | String [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.bpcbt.com/payment/<merchant_address>.

                                              |

                                              |
                                              Optional

                                              | failUrl | String [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.bpcbt.com/payment/<merchant_address>.

                                              |

                                              | Optional

                                              | mcc | Integer [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. |

                                              | Optional

                                              | merchantLogin | String [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. |

                                              | Optional

                                              | dynamicCallbackUrl | String [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. |

                                              | Optional

                                              | ip | String [1..39] | Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).

                                              |

                                              | Optional

                                              | captcha | String | CAPTCHA (a text intended to distinguish human from machine input) |

                                              | Optional

                                              | threeDSSDK | Boolean | Possible values: true or false. Flag showing that payment comes from 3DS SDK. |

                                              | Optional

                                              | threeDSSDKEncData | String | Encrypted data about device.

                                              Parameter is mandatory for SDK flow.

                                              | | Optional

                                              | threeDSSDKReferenceNumber | String | 3DS2 SDK official identifier |

                                              | Optional

                                              | threeDSSDKEphemPubKey | String | Public part of ephemeral key. Required to etablish session with ACS.

                                              Parameter is mandatory for SDK flow.

                                              | | Optional

                                              | threeDSSDKAppId | String | Unique identifier of SDK.

                                              Parameter is mandatory for SDK flow.

                                              | | Optional

                                              | threeDSSDKTransId | String | Unique identifier of transaction within SDK.

                                              Parameter is mandatory for SDK flow.

                                              | | Optional

                                              | threeDSMethodNotificationUrl | String [1..512] | URL where notification about performed 3DS-method should be sent to. |

                                              | Conditional

                                              | threeDSServerTransId | String [1..36] | Transaction identifier created on 3DS Server. Mandatory for 3DS authentication. |

                                              | Optional

                                              | threeDSVer2FinishUrl | String [1..512] | URL where Customer should be redirected after authentication on ACS Server. |

                                              | Conditional

                                              | threeDSVer2MdOrder | String [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. |

                                              | Optional

                                              | bindingNotNeeded | Boolean | Allowed values:

                                              | | Optional

                                              | externalScaExemptionIndicator | String | The 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:


                                              To pass this parameter, you must have sufficient permissions in the payment gateway. | | Conditional

                                              | originalPaymentNetRefNum | String [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.|

                                              | Conditional | tii | String | Is mandatory for transfer operation when using a stored credential in fromCard block or a merchant's stored credential.
                                              Possible values | Optional | shippingPayerData | Object | Object containing customer delivery data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | preOrderPayerData | Object | Object containing pre-order data. It is used for further 3DS authentication of the client. See nested parameters.| Optional | orderPayerData | Object | Object containing data about the order payer. It is used for further 3DS authentication of the client. See nested parameters.| Optional

                                              | billingAndShippingAddressMatchIndicator | String [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:

                                              | | Conditional | billingPayerData | Object | A 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.| Conditional | billingRecipientData | Object | A block with the data about the recipient. Mandatory if the feature is enabled for the merchant on Payment Gateway side. See nested parameters.| Mandatory

                                              | fromCard | Object | A block with the attributes of the card to be debited. See nested parameters. |

                                              | Mandatory

                                              | toCard | Object | A block with the attributes of the card to be credited. See nested parameters. |

                                              |

                                              Possible values of tii parameter:

                                              tii value Description Transaction type Transaction initiator Card data for transaction Card data saved after transaction Note
                                              CI Initial Common CIT Initiating Customer Entered by Customer Yes An e-commerce transaction, credential is stored.
                                              F Unscheduled CIT Subsequent Customer Customer selects card instead of manual entry No An e-commerce transaction that uses a stored credential.

                                              Description of parameters in shippingPayerData object:

                                              Required Name Type Description
                                              Optional shippingCity String [1..50] The customer's city (from the delivery address)
                                              Optional shippingCountry String [1..50] The customer's country
                                              Optional shippingAddressLine1 String [1..50] The customer's primary address (from the shipping address)
                                              Optional shippingAddressLine2 String [1..50] The customer's primary address (from the shipping address)
                                              Optional shippingAddressLine3 String [1..50] The customer's primary address (from the shipping address)
                                              Optional shippingPostalCode String [1..16] The customer's zip code for delivery
                                              Optional shippingState String [1..50] Customer's state/region (from delivery address)
                                              Optional shippingMethodIndicator Integer [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.)
                                              Optional deliveryTimeframe Integer [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
                                              Optional deliveryEmail 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:

                                              Required Name Type Description
                                              Optional preOrderDate String [10] Expected date when delivery will be available (for pre-ordered purchases), in the format YYYYYYMMDD.
                                              Optional preOrderPurchaseInd Integer [2] Indicator of a customer placing an order for available or future delivery.
                                              Possible values:
                                              • 01 - delivery available;
                                              • 02 - future delivery
                                              Optional reorderItemsInd Integer [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:

                                              Required Name Type Description
                                              Optional homePhone String [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.
                                              Optional workPhone String [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.

                                              Conditional mobilePhone String [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).

                                              Required Name Type Description
                                              Optional billingCity String [0..50] The city registered on a specific card of the Issuing Bank.
                                              Optional billingCountry String [0..50] The country registered on a specific card of the Issuing Bank. Format: ISO 3166-1 (Alpha 2 / Alpha 3 / Numbe
                                              Optional billingAddressLine1 String [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.
                                              Optional

                                              billingAddressLine2 String [0..50] The address registered on a specific card of the Issuing Bank. Line 2.
                                              Optional

                                              billingAddressLine3 String [0..50] The address registered on a specific card of the Issuing Bank. Line 3.
                                              Optional

                                              billingPostalCode String [0..9] Postal code registered on a specific card of the Issuing Bank. Mandatory to be passed in order AVS verification works.
                                              Optional

                                              billingState String [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.
                                              Mandatory

                                              payerAccount String [1..32] Payer's account number.
                                              Optional payerLastName String [1..64] Payer's last name.
                                              Optional payerFirstName String [1..35] Payer's first name.
                                              Optional

                                              payerMiddleName String [1..35] Payer's middle name.
                                              Optional

                                              payerCombinedName String [1..99] Payer's full name.
                                              Optional

                                              payerIdType String [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
                                              • | | Optional

                                                | payerIdNumber | String [1..100] | Number of the payer's identifying document (e.g. passport) provided. |

                                                | Optional | payerBirthday | String [1..20] | Payer's birth date in the YYYYMMDD format. | Optional | payerAccountNumberType | String [1..20] | Payer's account number type. Possible values:
                                                |

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

                                                Required Name Type Description
                                                Optional

                                                recipientCity String [0..40] The recipient city code in the ISO 3166-1 alpha-3 format.
                                                Optional recipientCountry String [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.
                                                Optional

                                                recipientAddressLine1 String [0..50] The recipient address. Can contain Latin characters only.
                                                Optional

                                                recipientPostalCode String [0..9] Postal code of the recipient.
                                                Optional

                                                recipientState String [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.
                                                Optional recipientAccount String [0..32] Recipient's account number.
                                                Optional recipientAccountNumberType Integer [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

                                                recipientLastName String [0..35] Recipient's last name.
                                                Mandatory

                                                recipientFirstName String [0..35] Recipient's first name.
                                                Optional

                                                recipientMiddleName String [0..35] Recipient's middle name.
                                                Optional

                                                recipientCombinedName String [0..99] Recipient's full name.
                                                Optional

                                                recipientIdType String [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
                                                • | | Optional

                                                  | recipientIdNumber | String [1..99] | Number of the recipient's identifying document provided. |

                                                  | Optional

                                                  | recipientBirthday | String [1..20] | Recipient's birth date in the format YYYYMMDD. |

                                                  The fromCard block includes the following possible parameters:

                                                  Required Name Type Description
                                                  Conditional

                                                  pan String [1..19] The number of the card to be debited.
                                                  Conditional

                                                  cvc String [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.
                                                  Conditional

                                                  expirationYear Integer [4] The year of expiration of the card that is to be debited. The accepted values are from 2000 to 2200.
                                                  Conditional

                                                  expirationMonth Integer [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.
                                                  Optional

                                                  cardholderName String [1..26] The name of the holder of the card that is to be debited.
                                                  Conditional

                                                  seToken String Encrypted 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.
                                                  Conditional threeDsAuthResult Object A 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:

                                                  Required Name Type Description
                                                  Conditional

                                                  vendor String This 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.
                                                  Conditional

                                                  paymentToken String [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.
                                                  Optional

                                                  decryptedToken Boolean Decrypted 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. | | Optional

                                                    | protocolVersion | String | Protocol 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).

                                                    Required Name Type Description
                                                    Optional

                                                    cavv String [0..200] Cardholder authentication value. The indicator is specified only after an order is paid and if the corresponding permission is enabled.
                                                    Optional

                                                    xid String [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.
                                                    Optional

                                                    eci Integer [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.
                                                    • | | Conditional

                                                      | threeDsType | String | 3DS 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:

                                                      | | Optional

                                                      | threeDSProtocolVersion | String | 3DS 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:

                                                      Required Name Type Description
                                                      Conditional

                                                      pan String [1..19] The number of the card to be credited.
                                                      Optional

                                                      expirationYear Integer [4] The year of expiration of the card that is to be credited. The accepted values are from 2000 to 2200.
                                                      Optional

                                                      expirationMonth Integer [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.
                                                      Optional

                                                      cardholderName String [1..26] The name of the holder of the card that is to be credited.
                                                      Conditional

                                                      seToken String Encrypted 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:

                                                      Required Name Type Description
                                                      Optional

                                                      threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                                                      Optional

                                                      threeDSVer2FinishUrl String [1..512] URL where Customer should be redirected after authentication on ACS Server.
                                                      Optional

                                                      threeDSMethodNotificationUrl String [1..512] URL where notification about performed 3DS-method should be sent to.

                                                      Response parameters

                                                      Required Name Type Description
                                                      Mandatory

                                                      errorCode String [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.
                                                        | | Mandatory

                                                        | errorMessage | String [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 parameters of statusResponse block:

                                                        Required Name Type Description
                                                        Mandatory

                                                        errorCode String [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.
                                                          | | Mandatory

                                                          | errorMessage | String [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. |

                                                          |
                                                          Optional

                                                          | orderStatus | Integer | The 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:

                                                          | | Optional

                                                          | orderNumber | String [1..36] | Order number (ID) in the merchant's system, must be unique for each order. |

                                                          |
                                                          Optional

                                                          | panMaskedFrom | String [1..19] | The masked number of the card to be debited. |

                                                          | Optional

                                                          | panMaskedTo | String [1..19] | The masked number of the card to be credited. |

                                                          |
                                                          Optional

                                                          | amount | Integer [0..12] | Payment amount in minor currency units (e.g. in cents).|

                                                          | Optional

                                                          | currency | String [3] | ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed. |

                                                          |
                                                          Optional

                                                          | creationDate | Integer | Date of order registration. |

                                                          | Optional

                                                          | orderDescription | String [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.|

                                                          |
                                                          Optional

                                                          | ip | String [1..39] | Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).

                                                          |

                                                          | Mandatory

                                                          | resultCode | Integer | Error code on the request execution. Available values:

                                                          | |
                                                          Optional

                                                          | orderParams | Object | An 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"}. |

                                                          | Optional

                                                          | operationList | Object | Object 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. |

                                                          | Optional

                                                          | binding | String | Identifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher. |

                                                          | Optional

                                                          | detokenizedPanRepresentation | String [1..19] | The detokenized card number (the last 4 digits or in a masked form). |

                                                          | Optional

                                                          | detokenizedPanExpiryDate | String | The card's detokenized expiration date in the following format: "YYYYMM". |

                                                          | Optional

                                                          | paymentNetRefNum | String [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:

                                                          This parameter is returned only if the getP2PStatus version is 7 or higher. | |

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

                                                          Required Name Type Description
                                                          Mandatory

                                                          threeDSServerTransId String [1..36] Transaction identifier created on 3DS Server. Mandatory for 3DS authentication.
                                                          Optional

                                                          threeDSMethodUrl String [1..512] URL of ACS Server for gathering browser data.
                                                          Mandatory

                                                          threeDSMethodUrlServer String [1..512] URL of 3DS Server for gathering browser data to be included in the AReq (Authentication Request) from 3DS Server to ACS Server.
                                                          Optional

                                                          threeDSMethodDataPacked String [1..1024] Base-64-encoded data of CReq (Challenge Response) to be sent to ACS Server.
                                                          Optional

                                                          threeDSMethodURLServerDirect String [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:

                                                          Required Name Type Description
                                                          Conditional

                                                          acsUrl String [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.
                                                          Conditional

                                                          packedCReq String Packed 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 card-to-card transaction:

                                                          curl -X POST 'https://dev.bpcbt.com/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",
                                                          "fromCard" : { "cardholderName": "TEST CARDHOLDER", "pan" : "5000001111111115", "cvc" : "123", "expirationYear" : "2024", "expirationMonth" : "12" }, "toCard": { "pan": "4000001111111118" }, "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 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.bpcbt.com/payment/rest/api/p2p/getP2PStatus.do request.


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

                                                          Request parameters

                                                          Required Name Type Description
                                                          Mandatory

                                                          username String [1..30] Merchant's API account login.
                                                          Mandatory

                                                          password String [1..30] Merchant's API account password.
                                                          Optional

                                                          language String [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,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
                                                          Conditional

                                                          orderId String [1..36] Order number in the payment gateway. Unique within the payment gateway.
                                                          Conditional

                                                          orderNumber String [1..36] Order number (ID) in the merchant's system, must be unique for each order.

                                                          Response parameters

                                                          Required Name Type Description
                                                          Mandatory

                                                          errorCode String [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.
                                                            | | Mandatory

                                                            | errorMessage | String [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. |

                                                            |
                                                            Optional

                                                            | orderStatus | Integer | The 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:

                                                            | | Optional

                                                            | orderNumber | String [1..36] | Order number (ID) in the merchant's system, must be unique for each order. |

                                                            |
                                                            Optional

                                                            | panMaskedFrom | String [1..19] | The masked number of the card to be debited. |

                                                            | Optional

                                                            | panMaskedTo | String [1..19] | The masked number of the card to be credited. |

                                                            |
                                                            Optional

                                                            | amount | Integer [0..12] | Payment amount in minor currency units (e.g. in cents).|

                                                            | Optional

                                                            | currency | String [3] | ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed. |

                                                            |
                                                            Optional

                                                            | creationDate | Integer | Date of order registration. |

                                                            | Optional

                                                            | orderDescription | String [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.|

                                                            |
                                                            Optional

                                                            | ip | String [1..39] | Buyer's IP address. IPv6 is supported in all requests. (up to 39 characters).

                                                            |

                                                            | Mandatory

                                                            | resultCode | Integer | Error code on the request execution. Available values:

                                                            | |
                                                            Optional

                                                            | orderParams | Object | An 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"}. |

                                                            | Optional

                                                            | operationList | Object | Object 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. |

                                                            | Optional

                                                            | binding | String | Identifier of a stored credential (if it has been already created). This parameter is returned only if the getP2PStatus version is 3 or higher. |

                                                            | Optional

                                                            | detokenizedPanRepresentation | String [1..19] | The detokenized card number (the last 4 digits or in a masked form). |

                                                            | Optional

                                                            | detokenizedPanExpiryDate | String | The card's detokenized expiration date in the following format: "YYYYMM". |

                                                            | Optional

                                                            | paymentNetRefNum | String [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:

                                                            This parameter is returned only if the getP2PStatus version is 7 or higher. | |

                                                            payerData element contains the following parameters.

                                                            Required Name Type Description
                                                            Optional

                                                            paymentAccountReference String [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.

                                                            Required Name Type Description
                                                            Optional

                                                            operationType String Transaction 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.
                                                            • | Optional

                                                              | amount | Integer [0..12] | Payment amount in minor currency units (e.g. in cents).|

                                                              |
                                                              Optional

                                                              | currency | String [3] | ISO 4217 encoded currency key. If not specified, the default value is used. Only digits are allowed. |

                                                              Examples

                                                              Request example

                                                              curl -X POST 'https://dev.bpcbt.com/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.bpcbt.com/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

                                                              Required Name Type Description
                                                              Mandatory

                                                              username String [1..30] Merchant's API account login.
                                                              Mandatory

                                                              password String [1..30] Merchant's API account password.
                                                              Mandatory

                                                              tDsTransId String [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.bpcbt.com/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

                                                              Categories:
                                                              P2P API V1
                                                              Categories
                                                              Search results