NAV

For any question, we are one click away

Contact us

Banking API

The Sandbox gives you an opportunity to test some basic card management functions of SmartVista suite - register customers, create accounts, issue virtual cards, set card limits, transfer funds, etc. The first steps in the banking Sandbox should be:

  1. Register a new customer with registerCustomer request. This request also creates an account for the customer. You can create as many customers as you want. But only one account per customer can be created in the Sandbox - this restriction is added to simplify the Sandbox logic. In a real project you would be able to create as many accounts per customer as required for your business.
  2. Issue a new virtual card with createVirtualCard for a customer's accounts. You can issue as many cards as you want. The Sandbox cards are issued in active state and are instantly ready for use.

Now you can test the following features (in no particular order):

You can download Postman collection of API requests to test some basic card management functions of SmartVista suite. Download Postman collection

Please check the information for each request below, including examples with short descriptions of what should be changed to make these requests yourself. Use links to detailed documentation for additional information.

Credentials

Use credentials from a Sandboxes page to make API calls.

Common characteristics

All requests are HTTP POST requests. Content type for both requests and responses is application \ json.

Banking Scenario

registerCustomer

Registers a new customer in SmartVista and creates an account. You can create as many customers as you want. But only one account per customer can be created in the Sandbox — this restriction is added to simplify the Sandbox logic. In a real project you would be able to create as many accounts per customer as required for your business.

Request parameters

Mandatory Name Type Description
Yes productName string Customer template ID to be used for customer creation. The Sandbox has only one customer template and this value should always be "CRCU1001" for the Sandbox customers.
Yes parameters Object Parameter list. The exact list depends on the customer creation template for a specific project. We have created one for the Sandbox and you can see the required parameters below this table
Yes name string Identify a parameter in the customer template for which the corresponding value is set.
Yes value string The value to be set for the specific parameter.

The following parameters with their values should be transferred for a customer creation in the Sandbox:

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/registerCustomer \
--header 'Content-Type: application/json' \
--data-raw '{
  "productName": "CRCU1001",
  "parameters":  [
      {
        "name": "institutionId",
        "value": "3006"
      },
      {
        "name": "agent_number",
        "value": "3006"
      },
      {
        "name": "customer_number",
        "value": "3006P_0000003"
      },
      {
        "name": "product_id",
        "value": "70000304"
      },
      {
        "name": "start_date",
        "value": "2021-09-06"
      },
      {
        "name": "service_id_acc",
        "value": "70000305"
      },
      {
        "name": "surname",
        "value": "Smith"
      },
      {
        "name": "firstName",
        "value": "John"
      },
      {
        "name": "secondName",
        "value": "A."
      },
      {
        "name": "email",
        "value": "johnsmith@email.com"
      },
      {
        "name": "mobile_phone",
        "value": "319220977338"
      },
      {
        "name": "country_code",
        "value": "528"
      },
      {
        "name": "region",
        "value": "BJ"
      },
      {
        "name": "city",
        "value": "Utrecht"
      },
      {
        "name": "street",
        "value": "Papendorpseweg"
      },
      {
        "name": "house",
        "value": "99"
      },
      {
        "name": "apartament",
        "value": "1"
      },
      {
        "name": "postal_code",
        "value": "3528"
      }
    ]  
}'

Response parameters

Mandatory Name Type Description
Yes customerNumber string Client number. You will receive the one you send in the request as the Sandbox configured to set the requested number to a created customer.
Yes accountNumber string Account number. The Sandbox returns the account number it creates for the Customer.

Response example

    {
      "customerNumber": "3006P_0000003",
      "accountNumber": "3006978700000000108"
    }

createVirtualCard

Creates a virtual card for a registered customer. Use registerCustomer to create a customer and an account if you haven't done it yet.

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Primary card identification parameters. There are many card attributes and their combinations to identify a card, supported by SmartVista, but the Sandbox uses the most simple one - the card number. All other options are provided as examples.
Yes cardIdentification.cardNumber string Card number. This is the way we will use in all Sandbox's requests to identify a card. For this request always use "visaBin0000000000" card number, where [visaBin] is the number from the e-mail you got after the registration. For the all other requests use card number you will get after creating a card with this request.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. It is commonly used as one of the possible card identification params, but not in this Sandbox project to avoid keys management. Do not use it here.
No cardIdentification.cardNumberMask string Masked card number. Common way to identify the card combined with a phone number or some other card data, but not the one used in the Sandbox. Do not use it here.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Common way to identify the card combined with a phone number, but not the one used in the Sandbox. Do not use it here.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Frequently used with some other card attributes. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number. Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Frequently used with some other card attributes. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes virtualCardIdentification Object Virtual card parameters. expDate and productType are required.
Yes virtualCardIdentification.expDate string Card expiration date. Any future date in "YYYYMM" format.
Yes virtualCardIdentification.productType string Product type. Identifies the card product for a card. In the Sandbox should always be constant number '16' as we set up a one product for you.
No virtualCardIdentification.cardNumber string Card number. Not for the Sandbox.
No virtualCardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No virtualCardIdentification.cardId string Card id. Not for the Sandbox.
No virtualCardIdentification.barCode string Bar code. Not for the Sandbox.
No virtualCardIdentification.cvv2 string CVV2/CVC2. Not for the Sandbox.
Yes amount integer Default limit for newly created virtual cards. Should be constant number '0' in the Sandbox.
Yes currency integer Currency. ISO 4217 numeric currency code. Use '978' for the Sandbox.
Yes accountNumber string Account number for primary card identification. Use the account number you got from registerCustomer().
No deliveryMethod string Virtual card parameters delivery method. Possible values: [WS, HALF_AND_HALF] . WS - all parameters delivered in Web Service response. HALF_AND_HALF - some parameters delivered in Web Service response, some in SMS. For HALF_AND_HALF, the Web Service response will contain masked card number (for example **** 1111 1111 ****) and the SMS will contain the CVV2 and other half of the masked card number (for example 1111 **** **** 1111). Use 'WS' value for the Sandbox.
No personalData Object Card owner personal data. Not for the Sandbox.
No personalData.firstName string Not for the Sandbox.
No personalData.lastName string Not for the Sandbox.
No cardAcceptorParameters Object Terminal parameters. Not for the Sandbox.
No cardAcceptorParameters.terminalIdentification string Terminal id. Not for the Sandbox.
No cardAcceptorParameters.merchantIdentification string Merchant id. Not for the Sandbox.
No cardAcceptorParameters.merchantType string Merchant category code. Not for the Sandbox.
No cardAcceptorParameters.nameAndLocation string Terminal location address. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/createVirtualCard \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardNumber" : 4140050000000000,
    "phoneNumber" : "319220977337",
    "customerId" : "3006P_0000002"
  },
  "virtualCardIdentification" : {
    "expDate" : 202301,
    "productType" : "5C"
  },
  "amount" : 0,
  "currency" : 978,
  "accountNumber" : "3006978700000000108",
  "deliveryMethod" : "WS"
}'

Response parameters

Mandatory Name Type Description
Yes virtualCardIdentification Object Virtual card Parameters.
No virtualCardIdentification.cardNumber string Card number. Here you will get the card number of the created card in the Sandbox. Save it for all further operations with the created card.
No virtualCardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No virtualCardIdentification.cardId string Card id. Not for the Sandbox.
Yes virtualCardIdentification.expDate string Card expiration date. Not for the Sandbox.
Yes virtualCardIdentification.productType string Product type. Not for the Sandbox.
No virtualCardIdentification.barCode string Bar code. Not for the Sandbox.
No virtualCardIdentification.cvv2 string CVV2/CVC2. Not for the Sandbox.

Response example

    {
        "virtualCardIdentification": {
            "cardNumber": "4140050021658271",
            "cardId": "100000000873",
            "expDate": "202301",
            "productType": "5C"
        }
    }

getCardLimits

Get limits for a specific card. The limits set is defined for the card product and is predefined in the Sandbox. Initially the limits for a specific card are inherited from the product setting. You can change the limit values for a specific card with changeCardLimits.

The following limits are available (cycle types are specified for the default limit setting and can be changed with changeCardLimit request):

The following limits cycleType are available:

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Card identification parameters. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/getCardLimits \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardId" : 100000000873
  }
}'

Response parameters

Mandatory Name Type Description
Yes limits Object List of card limits.
Yes limits.name string Limit name.
No limits.startDate DateTime Limit start date. Not for the Sandbox.
No limits.endDate DateTime Limit end date. Not for the Sandbox.
No limits.value long Limit value.
No limits.cycleType integer Cycle type. There several possible types of limits cycles - daily, monthly etc.
No limits.cycleLength integer Cycle length. For example, value 2 for monthly limit types means 2 months.
No limits.currency integer Currency.
No limits.currentValue long Current limit value.
Yes limits.limitExceptions Object Limit exception list. Not for the Sandbox.

Response example

    {
        "limits": [
            {
                "name": "LMTP0111",
                "value": 999999999999,
                "cycleType": 0,
                "cycleLength": 1,
                "currency": 978,
                "currentValue": 0,
                "limitExceptions": []
            },
            {
                "name": "LMTP0112",
                "value": 999999999999,
                "cycleType": 3,
                "cycleLength": 1,
                "currency": 978,
                "currentValue": 0,
                "limitExceptions": []
            },
            {
                "name": "LMTP0108",
                "value": 999999999999,
                "cycleType": 3,
                "cycleLength": 1,
                "currency": 978,
                "currentValue": 0,
                "limitExceptions": []
            },
            {
                "name": "LMTP0110",
                "value": 999999999999,
                "cycleType": 3,
                "cycleLength": 1,
                "currency": 978,
                "currentValue": 0,
                "limitExceptions": []
            },
            {
                "name": "LMTP0109",
                "value": 999999999999,
                "cycleType": 0,
                "cycleLength": 1,
                "currency": 978,
                "currentValue": 0,
                "limitExceptions": []
            },
            {
                "name": "LMTP0107",
                "value": 999999999999,
                "cycleType": 0,
                "cycleLength": 1,
                "currency": 978,
                "currentValue": 0,
                "limitExceptions": []
            }
        ]
    }

changeCardLimit

Change the limit values for a specific card. The limits set is defined for the card product and is predefined in the Sandbox. Initially the limits for a specific card are inherited from the product setting. Use getCardLimits to get limits names.

The following limits are available (cycle types are specified for the default limit setting and can be changed with changeCardLimit request):

The following limits cycleType are available:

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Card identification parameters. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number. Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes limit Object Limit parameters.
Yes limit.name string Limit name. It is predefined in the Sandbox. You can get the limits list with getCardLimits() and get limit names from its response.
No limit.startDate DateTime Limit start date. Not for the Sandbox.
No limit.endDate DateTime Limit end date. Not for the Sandbox.
No limit.value long Limit value.
No limit.cycleType integer Cycle type.
No limit.cycleLength integer Cycle length.
No limit.currency integer Currency. Not for the Sandbox.
No limit.currentValue long Current limit value. Not for the Sandbox.
No cardAcceptorParameters Object Terminal parameters. Not for the Sandbox.
No cardAcceptorParameters.terminalIdentification string Terminal id. Not for the Sandbox.
No cardAcceptorParameters.merchantIdentification string Merchant id. Not for the Sandbox.
No cardAcceptorParameters.merchantType string Merchant category code. Not for the Sandbox.
No cardAcceptorParameters.nameAndLocation string Terminal location address. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/changeCardLimit \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardId" : 100000000873
  },
  "limit" : {
    "name" : "LMTP0112",
    "value" : 13000000,
    "cycleType" : 4,
    "cycleLength" : 1
  }
}'

Response parameters

Mandatory Name Type Description
Yes responseCode string Operation completion code in SmartVista. 00 is for success.

Response example

    {
        "responseCode": "00",
        "processingCode": "710000",
        "systemTraceAuditNumber": 620394,
        "localTransactionDate": "2021-09-23T14:35:24"
    }

getCardData

Returns you the data about the cards you created. Can be used after creating a card with createVirtualCard.

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Card identification parameters. cardNumber is required. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.
No rsaPublicKey ByteArray Open key for card number encryption in return message. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/getCardData \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardId" : 100000000873
  }
}'

Response parameters

Mandatory Name Type Description
Yes cardData Object Card parameters.
No cardData.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardData.cardNumberMask string Masked card number. Not for the Sandbox.
Yes cardData.cardNumber string Card number.
No cardData.expiryDate string Card expiration date. Comes in YYYYMM format.
No cardData.formattedExpiryDate string User-formatted card expiration date. Not for the Sandbox.
No cardData.cardId string Card id. This is internal SmartVista card ID that can be used to identify the card for non PCI DSS compliant apps.
No cardData.hotCardStatus integer Card status.
No cardData.cardTypeName string Card type.
No cardData.embossedName string Embossed name. Would have a real value only for embossed plastic cards and not for virtual cards in the Sanbox.
No cardData.customerId string Client id.
No cardData.customerName string Client name. Not for the Sandbox.
No cardData.personId string Cardholder id. Not for the Sandbox.
No cardData.pinDenialCounter integer Incorrect PIN attempts count
No cardData.plasticNumber integer Plastic number. Not for the Sandbox.
No cardData.hotCardStatusDescription string Card status description.
No cardData.cardIsPrimary boolean Primary card flag. Always false for the Sandbox.
No cardData.cardBindToCustomer boolean Card binded to client flag. Always false for the Sandbox.
No cardData.customerIsCardholder boolean Is client a cardholder flag. Always false for the Sandbox.
No cardData.cardContractId string Card contract id. Not for the Sandbox.
No cardData.cardPlasticId string Plastic type id. Not for the Sandbox.
No cardData.cardPlasticDescription string Plastic type description. Not for the Sandbox.
No cardData.memorableWord string Secret word. Not for the Sandbox.
No cardData.email string E-mail. Not for the Sandbox.
No cardData.lastWrongPinDate DateTime Last incorrect PIN attempt date/time. Not for the Sandbox.
No cardData.cardCreationDate DateTime Card issue date. Not for the Sandbox.
No cardData.cardBlockingDate DateTime Card lock date/time. Not for the Sandbox.
No cardData.directDebitAccount string Account used for auto-payments. Not for the Sandbox.
No cardData.cardholderMobilePhoneNumber string Cardholder's phone number. Not for the Sandbox.
No cardData.accounts Object List of accounts for the card. There should be only one account in the Sandbox.
Yes accounts.number string Account number.
Yes accounts.currency integer Account currency
No accounts.currencyAlphaCode string Account currency letter code.
Yes accounts.balance integer Account balance.
No accounts.creditLimit integer Credit limit.
Yes accounts.customerId string Client id.
No accounts.defaultAccount boolean Default account indicator. Always true for the Sandbox.

Response example

    {
        "cardData": {
            "cardNumber": "4140050021658271",
            "expiryDate": "202301",
            "cardId": "100000000873",
            "hotCardStatus": 0,
            "cardTypeName": "VISA - PLUS",
            "embossedName": "GENERAL POOL",
            "customerId": "3006P_0000003",
            "personId": "3006P_0000002",
            "pinDenialCounter": 0,
            "plasticNumber": 1,
            "hotCardStatusDescription": "VALID CARD",
            "cardIsPrimary": false,
            "cardBindToCustomer": false,
            "customerIsCardholder": false,
            "accounts": [
                {
                    "number": "3006978700000000108",
                    "accountType": 1,
                    "currency": 978,
                    "currencyAlphaCode": "EUR",
                    "balance": 0,
                    "creditLimit": 0,
                    "customerId": "3006P_0000003",
                    "defaultAccount": true
                }
            ],
            "customParameters": []
        }
    }

blockCard

Block card. Within the Sandbox a card has to be in active status (status code 0) to be blocked. You can get a card status code with getCardData.

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Card identification parameters. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id.
Yes hotCardStatus integer Card status. Should be 6 for the Sandbox. This means the card is blocked and should be captured on usage attempt.
No cardAcceptorParameters Object Terminal parameters. Not for the Sandbox.
No cardAcceptorParameters.terminalIdentification string Terminal id. Not for the Sandbox.
No cardAcceptorParameters.merchantIdentification string Merchant id. Not for the Sandbox.
No cardAcceptorParameters.merchantType string Merchant category code. Not for the Sandbox.
No cardAcceptorParameters.nameAndLocation string Terminal location address. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/blockCard \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardNumber" : 100000000873
  },
  "hotCardStatus" : 6
}'

Response parameters

Mandatory Name Type Description
Yes responseCode string Operation completion code in SmartVisa. 00 is for success.

Response example

    {
        "responseCode": "00",
        "processingCode": "910000",
        "systemTraceAuditNumber": 620397,
        "localTransactionDate": "2021-09-23T14:37:36"
    }

changeCardStatus

Change card status. In the Sandbox you can change card status only for blocked cards (card status code is 6). You can get the card status code with getCardData request. To change card status from 0 to 6 (blocked) use blockCard request.

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Card identification parameters. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number. Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes hotCardStatus integer Card status. For the Sandbox should be 0 to activate a blocked card.
No cardAcceptorParameters Object Terminal parameters. Not for the Sandbox.
No cardAcceptorParameters.terminalIdentification string Terminal id. Not for the Sandbox.
No cardAcceptorParameters.merchantIdentification string Merchant id. Not for the Sandbox.
No cardAcceptorParameters.merchantType string Merchant category code. Not for the Sandbox.
No cardAcceptorParameters.nameAndLocation string Terminal location address. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/changeCardStatus \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardId" : 100000000873
  },
  "hotCardStatus" : 0
}'

Response parameters

Mandatory Name Type Description
Yes responseCode string Operation completion code in SmartVista. 00 is for success.

Response example

    {
        "responseCode": "00",
        "processingCode": "950000",
        "systemTraceAuditNumber": 620398,
        "localTransactionDate": "2021-09-23T14:38:26"
    }

creditCard

Deposit funds to the card.

Request parameters

Mandatory Name Type Description
No preAuthorization boolean Pre-authorization flag.
Yes cardIdentification Object Card identification parameters. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes amount integer Amount.
Yes currency integer Currency. ISO 4217 numeric currency code. Use 978 for the Sandbox.
No tds Object 3DS transaction parameters.
No tds.xid string VISA 3DS transaction id. Not for the Sandbox.
No tds.cavv string VISA authentication check value. Not for the Sandbox.
No tds.ucaf string Mastercard universal authentification field. Not for the Sandbox.
No tds.authenticationIndicator string E-commerce transaction authentification type. Possible values: NOT_PERFORMED, TDS_MERCHANT_ONLY, TDS_PERFORMED, ADDITIONAL_PROTOCOL_USED, RECURRENT_PAYMENT_AUTH. Not for the Sandbox.
No cardAcceptorParameters Object Terminal parameters. Not for the Sandbox.
No cardAcceptorParameters.terminalIdentification string Terminal id. Not for the Sandbox.
No cardAcceptorParameters.merchantIdentification string Merchant id. Not for the Sandbox.
No cardAcceptorParameters.merchantType string Merchant category code. Not for the Sandbox.
No cardAcceptorParameters.nameAndLocation string Terminal location address. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/creditCard \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification" : {
    "cardNumber" : 4140050021658271,
    "expDate" : 202201
  },
  "amount" : 10000,
  "currency" : 978,
}'

Response parameters

Mandatory Name Type Description
Yes responseCode string SVFE operation completion code. 00 is for success.
Yes processingCode string processing code.
Yes systemTraceAuditNumber integer Audit record number
Yes localTransactionDate DateTime Transaction date. format: date-time
Yes rrn string External id RNN.
No authorizationIdResponse string Authorization id.
No uniqueReferenceNumber string Unique reference number for the operation.
No otp string One-time password. Not for the Sandbox.
No acquirerFeeAmount string Acquirer fee amount. Not for the Sandbox.
No issuerFeeAmount string Issuer fee amount. Not for the Sandbox.
No paymentSpecificData Object Payment specific data.

Response example

    {
        "responseCode": "00",
        "processingCode": "270000",
        "systemTraceAuditNumber": 620399,
        "localTransactionDate": "2021-09-23T14:39:15",
        "rrn": "000000154798",
        "authorizationIdResponse": "154798",
        "paymentSpecificData": {}
    }

p2pTransfer

p2pTransfer from a card to a card.

Request parameters

Mandatory Name Type Description
No preAuthorization boolean Pre-authorization flag.
Yes sourceCardIdentification Object Card identification parameters for the source card. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes sourceCardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
Yes sourceCardIdentification.expDate string Card expiration date. YYYYMM format.
No sourceCardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No sourceCardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No sourceCardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No sourceCardIdentification.cardId string Card id. Not for the Sandbox.
No sourceCardIdentification.plasticNumber integer Plastic number. Not for the Sandbox.
No sourceCardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No sourceCardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No sourceCardIdentification.customerId string Client id. Not for the Sandbox.
No sourceCardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No sourceCardIdentification.barCode string Bar code. Not for the Sandbox.
No sourceCardIdentification.cvv2 string CVV2. Not for the Sandbox.
No sourceCardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No sourceCardIdentification.token string Token. Not for the Sandbox.
No sourceCardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No sourceCardIdentification.email string E-mail. Not for the Sandbox.
No sourceCardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes destinationCardIdentification Object Identification parameters for the card being credited. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes destinationCardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No destinationCardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No destinationCardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No destinationCardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No destinationCardIdentification.cardId string Card id. Not for the Sandbox.
No destinationCardIdentification.expDate string Card expiration date. Not for the Sandbox.
No destinationCardIdentification.plasticNumber integer Plastic number Not for the Sandbox.
No destinationCardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No destinationCardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No destinationCardIdentification.customerId string Client id. Not for the Sandbox.
No destinationCardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No destinationCardIdentification.barCode string Bar code. Not for the Sandbox.
No destinationCardIdentification.cvv2 string CVV2. Not for the Sandbox.
No destinationCardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No destinationCardIdentification.token string Token. Not for the Sandbox.
No destinationCardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No destinationCardIdentification.email string E-mail. Not for the Sandbox.
No destinationCardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes amount integer Amount.
Yes currency integer Currency. ISO 4217 numeric currency code. Use 978 for the Sandbox.
No sourceAccountNumber string Card number for the card being debited. Not for the Sandbox.
No destinationAccountNumber string Card number for the card being credited. Not for the Sandbox.
No tds Object 3DS transaction parameters. Not for the Sandbox.
No tds.xid string VISA 3DS transaction id. Not for the Sandbox.
No tds.cavv string VISA authentication check value. Not for the Sandbox.
No tds.ucaf string Mastercard universal authentification field. Not for the Sandbox.
No tds.authenticationIndicator string E-commerce transaction authentification type. Possible values: [NOT_PERFORMED, TDS_MERCHANT_ONLY, TDS_PERFORMED, ADDITIONAL_PROTOCOL_USED, RECURRENT_PAYMENT_AUTH]. Not for the Sandbox.
Yes senderReceiverInfo Object Information about the sender and recipient of the payment. Not for the Sandbox.
Yes senderReceiverInfo.senderName string Sender name in 'Lastname, Firstname' format.
Yes senderReceiverInfo.senderAddress string Sender address.
No senderReceiverInfo.senderCity string Sender city. Not for the Sandbox.
No senderReceiverInfo.senderCountry string Sender country code. Not for the Sandbox.
No senderReceiverInfo.senderPostalCode string Sender postcode. Not for the Sandbox.
No senderReceiverInfo.receiverName string Recipient name in "Lastname, Firstname" format. Not for the Sandbox.
No pointOfServiceDataCode string A set of codes that determine the capabilities of the terminal, the parameters of its environment and the use of security tools during a transaction. Not for the Sandbox.
Yes pointOfServiceConditionCode string A code that defines the conditions for conducting a transaction at a service point. Any text.
No cardAcceptorParameters Object Terminal parameters. Not for the Sandbox.
No cardAcceptorParameters.terminalIdentification string Terminal id. Not for the Sandbox.
No cardAcceptorParameters.merchantIdentification string Merchant id. Not for the Sandbox.
No cardAcceptorParameters.merchantType string Merchant category code. Not for the Sandbox.
No cardAcceptorParameters.nameAndLocation string Terminal location address. Not for the Sandbox.
No securityLevelIndicator string Security level indicator. Not for the Sandbox.
No originalTransactionParameters Object Initial transaction parameters. Must be included in transaction status check request. Not for the Sandbox.
No originalTransactionParameters.systemTraceAuditNumber integer Audit record number. Not for the Sandbox.
No originalTransactionParameters.localTransactionDate DateTime Transaction date. Not for the Sandbox.
No originalTransactionParameters.rrn string External id RNN. Not for the Sandbox.
No posCardholderPresence integer Cardholder presense at a service point type. Not for the Sandbox.
No businessApplicationIdentifier string MC transaction type id. Not for the Sandbox.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/p2PTransfer \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification": {
    "cardNumber": 4140050021658271,
    "expDate": 202201
  },
  "amount": 10000,
  "currency": 978,
  "senderReceiverInfo": {
    "senderName": "Tor, John",
    "senderAddress": "New York, USA"
  },
  "pointOfServiceDataCode": 810
}'

Response parameters

Mandatory Name Type Description
Yes responseCode string Operation completion code. 00 is for success.
Yes processingCode string processing code.
Yes systemTraceAuditNumber integer Audit record number
Yes localTransactionDate DateTime Transaction date. format: date-time
Yes rrn string External id RNN.
No authorizationIdResponse string Authorization id.
No paymentSpecificData Object Payment specific data.

Response example

    {
        "responseCode": "00",
        "processingCode": "490000",
        "systemTraceAuditNumber": 620400,
        "localTransactionDate": "2021-09-23T14:40:05",
        "rrn": "000000154799",
        "authorizationIdResponse": "154801",
        "paymentSpecificData": {}
    }

getTransactions

Get transactions history for the specific card.

Request parameters

Mandatory Name Type Description
Yes cardIdentification Object Card identification parameters. For bit of details on other card identification options which can be used in the real project and not in this Sandbox - please check the createVirtualCard description.
Yes cardIdentification.cardNumber string Card number. You will get it in CreateVirtualCard() response.
No cardIdentification.encryptedCardNumber ByteArray Encrypted card number. Not for the Sandbox.
No cardIdentification.cardNumberMask string Masked card number. Not for the Sandbox.
No cardIdentification.cardLastDigitMask string Last digits of the card number. Not for the Sandbox.
No cardIdentification.cardId string Card id. Not for the Sandbox.
No cardIdentification.expDate string Card expiration date. Not for the Sandbox.
No cardIdentification.plasticNumber integer Plastic number. Not for the Sandbox.
No cardIdentification.phoneNumber string Client phone number. Not for the Sandbox.
No cardIdentification.cardholderId string Cardholder id. Not for the Sandbox.
No cardIdentification.customerId string Client id. Not for the Sandbox.
No cardIdentification.customerNumber string Client number in SVB02. Not for the Sandbox.
No cardIdentification.barCode string Bar code. Not for the Sandbox.
No cardIdentification.cvv2 string CVV2. Not for the Sandbox.
No cardIdentification.externalCardId string Card id in the bank's external system. Not for the Sandbox.
No cardIdentification.token string Token. Not for the Sandbox.
No cardIdentification.cardTypeCode string Card type code. Not for the Sandbox.
No cardIdentification.email string E-mail. Not for the Sandbox.
No cardIdentification.institutionId string Internal institution id. Not for the Sandbox.
Yes period Object Time span.
No period.start DateTime Start date. YYYY-MM-DD format.
No period.end DateTime End date. YYYY-MM-DD format.

Request example

curl --request POST \
--url https://dev.bpcbt.com/payment/apigate/ws/rest/getTransactions \
--header 'Content-Type: application/json' \
--data-raw '{
  "cardIdentification": {
    "cardId": 100000000873
  },
  "period": {
    "start": "2020-04-01",
    "end": "2020-05-01"
  }
}'

Response parameters

Mandatory Name Type Description
Yes transactions Object Transactions.
No transactions.boWriteOffDate DateTime SVBO write-off time and date. Not for the Sandbox.
Yes transactions.authorizationDate DateTime Authorization date/time.
Yes transactions.transactionType string Transaction type.
Yes transactions.operationDirection string Transaction direction. Possible values: [CREDIT, DEBIT, NOOP]
Yes transactions.amount integer Transaction amount.
Yes transactions.currency integer Currency.
Yes transactions.amountInAccountCurrency integer Transaction amount in account currency.
Yes transactions.utrnno long Transaction id in SVFE (SmartVista internal ID).
No transactions.boUtrnno long Transaction ID in SVBO. (SmartVista internal ID).
No transactions.transactionDescription string Transaction description.
No transactions.feeDirection string Fee direction. Possible values: [CREDIT, DEBIT, NOOP]
No transactions.acquireFeeAmount integer Acquirer fee amount.
No transactions.feIssuerFeeAmount integer Issuer online fee amount.
No transactions.boIssuerFeeAmount integer Issuer offline fee amount.
No transactions.mcc long MCC.
No transactions.merchantCountry string Merchant country.
No transactions.merchantCity string Merchant city.
No transactions.merchantName string Merchant name.
No transactions.merchantId string Merchant id.
No transactions.terminalAddress string Terminal address.
No transactions.posDataCode string POS data code.
No transactions.authorizationIdResponse string Authorization id.
No transactions.reversalDate DateTime Reversal date/time.
No transactions.reversal boolean Reversal flag.
No transactions.requestAmount integer Requested amount for the transaction.
No transactions.terminalId string Terminal id.
No transactions.payId string ID assigned by service provider.

Response example

    {
        "transactions": [
            {
                "authorizationDate": "2021-09-23T14:35:24",
                "transactionType": "578",
                "operationDirection": "NOOP",
                "amount": 0,
                "currency": 0,
                "amountInAccountCurrency": 0,
                "utrnno": 154793,
                "transactionDescription": "Change limit",
                "feeDirection": "DEBIT",
                "acquireFeeAmount": 0,
                "feIssuerFeeAmount": 0,
                "mcc": 6012,
                "merchantCountry": "NLD",
                "merchantCity": "BPC TEST ADDRESS N 2",
                "merchantName": "Test Mobile Bank",
                "merchantId": "TEST__MB",
                "terminalAddress": "APIGATE  FE  TEST BPC TEST ADDRESS N 1",
                "posDataCode": "600550U00110",
                "reversal": false,
                "requestAmount": 0,
                "terminalId": "TEST__MB",
                "internalResponseCode": -1
            },
            {
                "authorizationDate": "2021-09-23T14:37:36",
                "transactionType": "493",
                "operationDirection": "NOOP",
                "amount": 0,
                "currency": 0,
                "amountInAccountCurrency": 0,
                "utrnno": 154796,
                "transactionDescription": "Card blocking",
                "feeDirection": "DEBIT",
                "acquireFeeAmount": 0,
                "feIssuerFeeAmount": 0,
                "mcc": 6012,
                "merchantCountry": "NLD",
                "merchantCity": "BPC TEST ADDRESS N 2",
                "merchantName": "Test Mobile Bank",
                "merchantId": "TEST__MB",
                "terminalAddress": "APIGATE  FE  TEST BPC TEST ADDRESS N 1",
                "posDataCode": "600550U00110",
                "authorizationIdResponse": "154796",
                "reversal": false,
                "requestAmount": 0,
                "terminalId": "TEST__MB",
                "internalResponseCode": -1
            },
            {
                "authorizationDate": "2021-09-23T14:38:26",
                "transactionType": "672",
                "operationDirection": "NOOP",
                "amount": 0,
                "currency": 0,
                "amountInAccountCurrency": 0,
                "utrnno": 154797,
                "transactionDescription": "Card status change",
                "feeDirection": "DEBIT",
                "acquireFeeAmount": 0,
                "feIssuerFeeAmount": 0,
                "mcc": 6012,
                "merchantCountry": "NLD",
                "merchantCity": "BPC TEST ADDRESS N 2",
                "merchantName": "Test Mobile Bank",
                "merchantId": "TEST__MB",
                "terminalAddress": "APIGATE  FE  TEST BPC TEST ADDRESS N 1",
                "posDataCode": "600550U00110",
                "authorizationIdResponse": "154797",
                "reversal": false,
                "requestAmount": 0,
                "terminalId": "TEST__MB",
                "internalResponseCode": -1
            },
            {
                "authorizationDate": "2021-09-23T14:39:15",
                "transactionType": "760",
                "operationDirection": "CREDIT",
                "amount": 10000,
                "currency": 978,
                "amountInAccountCurrency": 10000,
                "utrnno": 154798,
                "transactionDescription": "Credit account presentment",
                "feeDirection": "CREDIT",
                "acquireFeeAmount": 0,
                "feIssuerFeeAmount": 0,
                "mcc": 6012,
                "merchantCountry": "NLD",
                "merchantCity": "BPC TEST ADDRESS N 2",
                "merchantName": "Test Mobile Bank",
                "merchantId": "TEST__MB",
                "terminalAddress": "APIGATE  FE  TEST BPC TEST ADDRESS N 1",
                "posDataCode": "600550U00110",
                "authorizationIdResponse": "154798",
                "reversal": false,
                "requestAmount": 10000,
                "terminalId": "TEST__MB",
                "internalResponseCode": -1
            },
            {
                "authorizationDate": "2021-09-23T14:40:05",
                "transactionType": "781",
                "operationDirection": "DEBIT",
                "amount": 1000,
                "currency": 978,
                "amountInAccountCurrency": 1000,
                "utrnno": 154800,
                "transactionDescription": "P2P Debit part",
                "feeDirection": "DEBIT",
                "acquireFeeAmount": 0,
                "feIssuerFeeAmount": 0,
                "mcc": 6012,
                "merchantCountry": "NLD",
                "merchantCity": "BPC TEST ADDRESS N 2",
                "merchantName": "Test Mobile Bank",
                "merchantId": "TEST__MB",
                "terminalAddress": "APIGATE  FE  TEST BPC TEST ADDRESS N 1",
                "posDataCode": "600550U00110",
                "authorizationIdResponse": "154800",
                "reversal": false,
                "requestAmount": 1000,
                "terminalId": "TEST__MB",
                "internalResponseCode": -1
            },
            {
                "authorizationDate": "2021-09-23T14:40:05",
                "transactionType": "689",
                "operationDirection": "NOOP",
                "amount": 1000,
                "currency": 978,
                "amountInAccountCurrency": 1000,
                "utrnno": 154799,
                "transactionDescription": "Card-to-Card money transfer",
                "feeDirection": "DEBIT",
                "acquireFeeAmount": 0,
                "feIssuerFeeAmount": 0,
                "mcc": 6012,
                "merchantCountry": "NLD",
                "merchantCity": "BPC TEST ADDRESS N 2",
                "merchantName": "Test Mobile Bank",
                "merchantId": "TEST__MB",
                "terminalAddress": "APIGATE  FE  TEST BPC TEST ADDRESS N 1",
                "posDataCode": "600550U00110",
                "authorizationIdResponse": "154801",
                "reversal": false,
                "requestAmount": 1000,
                "terminalId": "TEST__MB",
                "internalResponseCode": -1
            }
        ]
    }