For any question, we are one click away

Contact us

OCT transactions

OCT overview

OCT (Original Credit Transaction) - a special type of transaction for crediting funds to the recipient in real time.

The following rules are applied to all OCT transactions:

OCT operation scenario

sequenceDiagram participant C as Client participant OS as Online store participant PG as Payment Gateway C ->> OS: 1. Forming an Order OS ->> PG: 2. Registering the Order PG -->> OS: 3. orderId, formUrl OS -->> C: 4. Redirecting to the card data collection form C ->> PG: 5. Sending the data in the filled in form PG ->> PG: 6. Transfer of funds PG -->> C: 7. Redirecting the client to the online store C ->> OS: 8. Getting the page with the result OS ->> PG: 9. Checking the status PG -->> OS: 10. Status of the Order OS -->> C: 11. Showing the result
  1. A cardholder (client) interacts with the online store to create an order.
  2. The online store system registers the order in the Payment Gateway via registerP2P.do. The registration parameters used include the amount of the transfer, the currency, the order number in the merchant's system, and the return URL for the client.
  3. In response to the registration request, the Payment Gateway returns a unique identifier of the order in the payment system and the URL to redirect the client to the form for card data collection.
  4. The online store system passes the redirect URL received on step 3 to the client’s Web browser.
  5. Client fills in the form and the data is sent to the Payment Gateway server.
  6. Payment Gateway makes the transfer of funds via performP2P.do.
  7. 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).
  8. The client’s Web browser requests the results of the money transfer from the online store.
  9. The online store system requests the information about the order status from the payment gateway - getP2PStatus.do.
  10. Payment Gateway returns the status of the order.
  11. The online store system shows payment result to the client.

API calls

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

    |Mandatory

    | transactionTypeIndicator | String | Indicator of transaction type. It is used in one-direction types of transaction.
    There are such possible values:

    | | Mandatory | features | Object | Field for feature parameter, is mandatory for one-direction operations.
    If OCT operation is performed (transfer from account to card) - WITHOUT_FROM_CARD should be passed in feature parameter.
    Example: "features" : { "feature" : ["WITHOUT_FROM_CARD"] } | 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. | 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.| Optional

    | debitMdOrder | String [1..36] | Unique number of the order for which AFT transfer in IPay was performed. This parameter is used for OCT operations for P2P transfers (AFT+OCT). |

    |
    Conditional

    | debitTransactionReference | String [1..19] | Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent. |

    | Optional

    | transactionPurpose | String | Transaction purpose (used for OCT transactions using Mastercard). Possible values:

    | | Optional

    | serviceProcessingType | String | The type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:

    | |

    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 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code.
    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. | Conditional

      | payerAccountNumberType | String [1..20] | Payer's account number type. Mandatory for OCT transactions using Mastercard. 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 of OCT operation

          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": "12",
            "clientId": "122313",
            "transactionTypeIndicator": "A",
            "features":{
                "feature":["WITHOUT_FROM_CARD"]
             }
          }'

          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 performP2P.do request assumes the presence of 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

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

          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 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code.
          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",
                  "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

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

                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",
                      "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 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 type String In OCT transaction, it is necessary to pass the corresponding value in this parameter:
                  WITHOUT_TO_CARD - without indication of the card to be credited.
                  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.|

                  • Y - the cardholder's billing address and shipping address match;
                  • N - cardholder billing address and shipping address do not match.
                  • | | 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

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

                    | Conditional

                    | debitTransactionReference | String [1..19] | Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent. |

                    | Optional

                    | transactionPurpose | String | Transaction purpose (used for OCT transactions using Mastercard). Possible values:

                    | | Optional

                    | serviceProcessingType | String | The type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:

                    | |

                    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 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code.
                    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. | Conditional

                      | payerAccountNumberType | String [1..20] | Payer's account number type. Mandatory for OCT transactions using Mastercard. 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 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. | Optional

                          | debitTransactionReference | String [1..19] | Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is automatically filled by statusResponse.debitTransactionReference parameter from the corresponding AFT transaction (automatically generated by Payment Gateway) or by the corresponding parameter received in the OCT request. |

                          |

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

                          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 OCT request

                            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,
                              "toCard" : {
                                "pan" : "4111111111111111"
                              }
                            }'

                            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"
                            }

                            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.
                            Optional type String In OCT transaction, it is necessary to pass the corresponding value in this parameter:
                            WITHOUT_TO_CARD - without indication of the card to be credited.
                            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. |

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

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

                              | Conditional

                              | debitTransactionReference | String [1..19] | Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent. |

                              | Optional

                              | transactionPurpose | String | Transaction purpose (used for OCT transactions using Mastercard). Possible values:

                              | | Optional

                              | serviceProcessingType | String | The type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:

                              | |

                              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 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code.
                              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. | Conditional

                                | payerAccountNumberType | String [1..20] | Payer's account number type. Mandatory for OCT transactions using Mastercard. 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. | Optional

                                    | debitTransactionReference | String [1..19] | Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is automatically filled by statusResponse.debitTransactionReference parameter from the corresponding AFT transaction (automatically generated by Payment Gateway) or by the corresponding parameter received in the OCT request. |

                                    |

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

                                    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",
                                        "toCard": {
                                              "cardholderName": "TEST CARDHOLDER",
                                              "cvc": "123",
                                              "expirationMonth": 12,
                                              "expirationYear": 2029,
                                              "pan": "5555555555555599"
                                        },
                                        "orderId" : "3dbaf8bb-1d68-76b3-b4e6-784700f26b04",
                                        "password" : "test_user_password",
                                        "type" : "WITHOUT_FROM_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
                                      }

                                      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 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

                                      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 {"param":"value","param2":"value2"}.
                                        These fields can be passed to the processing bank for further display in the bank registries. |
                                        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>.

                                        |

                                        |
                                        Mandatory

                                        | transactionTypeIndicator | String | Indicator of transaction type. It is used in one-direction types of transaction.
                                        There are such possible values:

                                        | | Mandatory | features | Object | Field for feature parameter, is mandatory for one-direction operations.
                                        If OCT operation is performed (transfer from account to card) - WITHOUT_FROM_CARD should be passed in feature parameter.
                                        Example: "features" : { "feature" : ["WITHOUT_FROM_CARD"] } | 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 | type | String | In OCT transaction, it is necessary to pass the corresponding value in this parameter:
                                        WITHOUT_TO_CARD - without indication of the card to be credited. |
                                        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:

                                        | | 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 | 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

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

                                        | Optional

                                        | debitMdOrder | String [1..36] | Unique number of the order for which AFT transfer in IPay was performed. This parameter is used for OCT operations for P2P transfers (AFT+OCT). |

                                        | Conditional

                                        | debitTransactionReference | String [1..19] | Reference to AFT operation. This parameter is used for OCT operations for P2P transfers (AFT+OCT) using Mastercard. It is filled by the statusResponse.debitTransactionReference parameter from the corresponding AFT transaction. Mandatory if a Mastercard Money Funding Payment was made earlier and a Unique Transaction Reference was generated and sent. |

                                        | Optional

                                        | transactionPurpose | String | Transaction purpose (used for OCT transactions using Mastercard). Possible values:

                                        | | Optional

                                        | serviceProcessingType | String | The type of processing service (used for OCT transactions using Visa). A service flag that tells Visa system how to process a transaction at their processing level. Possible values:

                                        | |

                                        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 / Number-3) or the country name. We recommend to pass a two/three-letter ISO country code.
                                        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. | Conditional

                                          | payerAccountNumberType | String [1..20] | Payer's account number type. Mandatory for OCT transactions using Mastercard. 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 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 OCT 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",
                                                  "toCard": {
                                                        "pan": "4000001111111118"
                                                    },
                                                    "transactionTypeIndicator": "G",
                                                    "features": {
                                                        "feature": [
                                                            "WITHOUT_FROM_CARD"
                                                        ]
                                                    }
                                                  }'

                                                Example of the response to the request:

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

                                                P2P transfer status

                                                To obtain the status of a registered P2P order, use https://dev.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