A Shop Server API version VPOS-API 2025.05.4-RC1

method image

Payment details

External Reference Amount


Type Product Quantity Unit Price Total Price Discount VAT URLs Brand Shipping Features Data

The URL can be extended with query parameters that match fields of the payment. This way it is easier to start new payments with a set of parameters that differ from the default.

Supported parameters
  • amount
  • currency
  • metadata
  • merchantOrderReference
  • description
  • expirationDuration
  • iban
  • bic
  • terminalId
  • managementSystemId
  • accessProtocol
  • ip
  • port
  • operatingEnvironment
  • merchantLanguage
Example
http://shop-vpos-test.ccvlab.eu/?amount=99&currency=CHF&description=A+different+description
# Testing The features below must be used in operating mode **TEST** and can be used to test VPOS functionality in a CCV Lab simulated environment. The operating mode is associated with your API key. Once you have completed your integration, you must use your **LIVE** key for production usage. # Method Card For card transactions you must use a known test card. The system rejects unknown cards in combination with a Test API key. | Brand | API Brand | PAN | 3DS2 authentication flow | |------------------------------------|--------------|-----------------------|--------------------------------| | Amex | `amex` | 3782 822463 10005 | Browser Frictionless - Success | | Amex | `amex` | 3759 870001 69792 | Browser Frictionless - Success | | Amex | `amex` | 3759 874358 77100 | Browser Frictionless - Failure | | Amex | `amex` | 3759 870001 69784 | Browser Challenge | | Bancontact - Maestro co-branded | `bcmc` | 6703 2222 2222 2222 7 | Browser Frictionless - Success | | Bancontact - Maestro co-branded | `bcmc` | 6703 3333 3333 3333 9 | Browser Challenge | | Bancontact - Maestro co-branded | `bcmc` | 6703 9999 9997 9901 5 | Browser Frictionless - Success | | Bancontact - Maestro co-branded | `bcmc` | 6060 0599 9999 9014 | Browser Frictionless - Success | | Bancontact - Mastercard co-branded | `bcmc` | 5127 8809 9999 9990 | Browser Frictionless - Success | | Bancontact - Visa co-branded | `bcmc` | 4796 5899 9999 9917 | Browser Frictionless - Success | | Visa | `visa` | 4242 4242 4242 4242 | Browser Frictionless - Success | | Visa | `visa` | 4111 1111 1111 1111 | Browser Frictionless - Success | | Visa | `visa` | 4012 8888 8888 1881 | Browser Frictionless - Success | | Visa | `visa` | 4222 2222 2222 2 | Browser Frictionless - Success | | Visa | `visa` | 4000 0000 0000 0002 | Browser Challenge | | Visa | `visa` | 4000 0000 0000 0028 | Browser Frictionless - Success | | Visa | `visa` | 4000 0000 0000 0036 | Browser Frictionless - Success | | Visa Electron | `visa` | 4245 1900 0000 0311 | Browser Frictionless - Success | | Visa Electron | `visa` | 4917 3008 0000 0000 | Browser Frictionless - Success | | Vpay | `visa` | 4370 0000 0000 0061 | Browser Frictionless - Success | | Maestro | `maestro` | 6759 6498 2643 8453 | Browser Frictionless - Success | | Mastercard | `mastercard` | 5555 5555 5555 0004 | Browser Frictionless - Success | | Mastercard | `mastercard` | 5555 5555 5555 0012 | Browser Frictionless - Success | | Mastercard | `mastercard` | 5555 5555 5555 4444 | Browser Frictionless - Success | | Mastercard | `mastercard` | 5105 1051 0510 5100 | Browser Frictionless - Success | | Mastercard | `mastercard` | 2223 0000 1002 9657 | Browser Frictionless - Success | | Mastercard | `mastercard` | 5200 0000 0000 0015 | Browser Challenge | | Mastercard | `mastercard` | 5200 0000 0000 0049 | Browser Challenge | | Mastercard | `mastercard` | 5454 5454 5454 5454 | Browser Challenge | | Mastercard | `mastercard` | 5555 5555 5555 0012 | Browser Challenge | ### 3-D Secure 2 authentication flows - Browser Frictionless: the payment is authenticated without customer interaction. Depending on the card, the authentication will succeed or fail. - Browser Challenge: the payment requires customer interaction to complete the authentication. Depending on the interaction, the authentication will succeed or fail. ## General | Amount | Simulator Response | VPOS status | |--------|--------------------|-------------------------------------------------| | 8.00 | `timeout` | `pending` and after period of time `success` | | 8.01 | `failed` | `failed` with failure code `INSUFFICIENT_FUNDS` | | 8.02 | `failed` | `failed` with failure code `CARD_REFUSED` | | 8.03 | `soft decline` | `success`* | | 8.04 | `soft decline` | `failed`* | | 9.00 | `failed` | `failed` | | 23.00 | `timeout` | `pending` and after period of time `failed` | | 81.00 | `failed` | `failed` with failure code `INSUFFICIENT_FUNDS` | | 82.00 | `failed` | `failed` with failure code `CARD_REFUSED` | | 83.00 | `soft decline` | `success`* | | 84.00 | `soft decline` | `failed`* | | other | `success` | `success` | `*` The simulator responds with a soft decline on the first authorisation. The second authorisation response depends on the specified amount. ## Authorise - Capture Note: Our simulators only store transactions for a limited amount of time. As a result, a capture following an authorisation might not have the expected behaviour due to the unknown state of the authorisation. ### Authorise | Brand | Amount | Simulator Response | VPOS status | |--------|--------|--------------------|-------------------------------------------| | `bcmc` | 125.00 | `success` | `success` with partial approval of 100.00 | | other | 125.00 | `failed` | `failed` | | other | other | `success` | `success` | ### Capture * A full capture is allowed * A capture of more than the authorised amount is not allowed # Method iDEAL For iDEAL transactions you can pass specific amounts: | Amount | Simulator response | VPOS status | |--------|----------------------------------------------------------------------------|----------------------------------------| | 5.00 | `Failure` | `failed` | | 6.00 | `Cancelled` | `failed` with failure code `cancelled` | | 7.00 | `Expired` | `failed` with failure code `expired` | | 8.00 | `Open` | `pending` | | 9.00 | `Success` after 10 seconds | `success` | | 10.00 | `Failure` after 10 seconds | `failed` | | 11.00 | Simulator only responds after 10 seconds but then `Success` | `success` | | 12.00 | First callback has status `Open`, after 10 seconds callback with `Success` | `success` | | other | `Success` | `success` | ## iDEAL mandate authentication flow When using iDEAL mandates, the server can respond with a notification result. The test behavior can be triggered using following amounts: | Amount | Authentication flow | VPOS status | |--------|----------------------------------------------------|-------------| | 12.00 | NotificationResult `REDIRECT` | `success` | | other | NotificationResult `PUSH_SENT_SHOW_WAITING_SCREEN` | `success` | # Method PayPal For PayPal transactions you can pass specific amounts: | Amount | Simulator response | VPOS status | |--------|----------------------------|-----------------------------------------------| | 5.00 | `failed` | `failed` with failure code `processing_error` | | 6.00 | `canceled` | `failed` with failure code `cancelled` | | 8.00 | `pending` | `pending` | | 9.00 | `approved` | `success` | | 10.00 | `created` | `pending` | | 11.00 | `denied` | `failed` with failure code `rejected` | | 27.00 | `422 Unprocessable Entity` | `failed` with failure code `processing_error` | | other | `completed` | `success` | # Method Terminal A simulated terminal is available to test your integration with a test api key: * dns: shop-vpos-test.ccvlab.eu * ip: 188.165.118.154 * port: 6235 * terminal id: random * management system id: 08000000002 or 08900000002 for browser wake-up, random for cloud wake-up * access protocol: OPI_NL * operatingEnvironment: SEMI_UNATTENDED or ATTENDED * merchantLanguage: ENG, NLD, FRA, DEU | Amount | Simulator response | VPOS status | |--------|-----------------------------------------------------------------------------------------------------------|-----------------------------------------------| | 4 | An error with code `TERMINAL_ALREADY_IN_USE` with http status code 500 | `failed` with failure code `rejected` | | 5 | `failure` | `failed` with failure code `processing_error` | | 8 | `unknown` | `manualintervention` | | 9 | `success` after 10 seconds | `success` | | 10 | `failure` after 10 seconds | `failed` | | 11 | `unknown` after 10 seconds | `manualintervention` | | 12 | `success` with no callback | `success` after status update | | 13 | `success` after VPOS performs status check | `success` after status update TAS callback | | 14 | `success` after VPOS performs multiple status checks | `success` after status update TAS callback | | 15 | `success` after 10 seconds and not responding to abort attempt | `success` | | 16 | `failed` after 10 seconds and not responding to abort attempt | `failed` | | 17 | `success` after 10 seconds when abort is not attempted, `failed` after 10 seconds when abort is attempted | `success` / `failed` | | 18 | An error with code `MISSING_QUERY_STRING_URL_PARAMETER` with http status code 400 | `failed` with failure code `rejected` | | other | `success ` | `success ` | # Method Payconiq For Payconiq transactions you can pass specific amounts: | Amount | Simulator response | VPOS status | |--------|--------------------|--------------------------------------------------------------------| | 6.00 | `canceled` | `failed` with failure code `cancelled` and cancelled by `consumer` | | 7.00 | `expired` | `failed` with failure code `expired` | | 9.00 | `failed` | `failed` with failure code `processing_error` | | other | `completed` | `success` | For Payconiq transactions you can also call the cancel url, and the simulator will respond with the following behavior: | Amount | Simulator response | VPOS status | |--------|--------------------|---------------------------------------------------------------------| | 8.00 | `not allowed` | `pending` | | other | `allowed` | `failed` with failure code `cancelled` with cancelled by `merchant` | # Method Gift For testing Gift you must take into account that a gift card value may be lower than, equal to or higher than the payment request amount. The test server only supports euro at this moment. The giftCode used indicates the value it holds in the last 3 digits. For example 'CCV0000000_004' will have a value of 4. A giftCode with other non-numeric characters will default to 30. For Gift you can also pass fixed giftCard codes: | GiftCard code | Simulator response | VPOS failed | |---------------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------| | CCV000000000A | `bad request` | `failed` with failure code `processing_error` | | CCV000000000B | `not found`, gift not found | `failed` with failure code `card_refused` | | CCV000000000C | `ok`, gift locked | `failed` with failure code `card_refused` | | CCV000000000D | `ok`, gift expired | `failed` with failure code `card_refused` | | CCV000000000E | `ok`, gift currency `gbp` | `failed` with failure code `card_refused` | | other | `ok` | `success` for payment request with amount equal to or less than indicated in the last 3 digits of the used giftCode, or default 30 | # Method SoftPos For SoftPos transactions you can pass specific amounts: | Amount | Simulator response | VPOS status | |--------|----------------------------------------|--------------------------------------------------------------------| | 9 | no response - client timeout after 10s | `failed` with failure code `processing_error` | | 10 | `bad request` | `failed` with failure code `processing_error` | | 11 | `created` | `pending` | | 12 | `created` - `failed` after get | `pending` after status check `failed` | | 13 | `time out` | `failed` with failure code `processing_error` after timeout occurs | | 14 | `success` | `success` | | 15 | `created` - `success after 30 seconds` | `pending` after status check `success` | | 16 | `created` - `failed after 30 seconds` | `pending` after status check `failed` | | 17 | `unknown status` | `manual intervention` | | other | `created` - `success` after get | `pending` after status check `success` | # Method Apple Pay For Apple Pay the following amounts can trigger test behavior. All other amounts should lead to a successful transaction. | Amount | Simulator Response | VPOS status | |--------|--------------------|-------------------------------------------------| | 8.01 | `failed` | `failed` with failure code `insufficient_funds` | | 8.02 | `failed` | `failed` with failure code `card_refused` | | 9.00 | `failed` | `failed` | | 81.00 | `failed` | `failed` with failure code `insufficient_funds` | | 82.00 | `failed` | `failed` with failure code `card_refused` | | other | `success` | `success` | # Method Google Pay You can test your Google Pay integration by using test cards along with different payment amounts. This allows you to simulate various payment scenarios and influence the resulting payment status. ## Google Pay test card behavior The Google Pay payment method expects a card to be coupled to your Google wallet. This can either be a real card or a collection of CCV test cards. - In case a real card is used, the Google Pay test environment returns a test card encrypted token that matches the card brand used. Your real card will **never be charged** and the card info is protected by Google's automatic encryption. - The other **preferred** option is to make use of the [CCV Test cards for Google Pay](#ccv-test-cards-googlepay) Depending on the Card number (PAN) used during testing, you can trigger various payment flows. - For device PAN (DPAN) test cards, the Google Pay API response includes a `CRYPTOGRAM_3DS`, simulating payment credentials linked to an Android device. Google handles the authentication for these cards, eliminating the need for additional 3D Secure authentication. The payment proceeds without further customer interaction. - Conversely, when using an FPAN test card, the Google API responds with a `PAN_ONLY` authentication method, requiring 3DS authentication from the customer. Based on the test PAN number, you can decide whether authentication should be frictionless or involve a challenge. > **API key considerations** > > When using a **test** API key on our test environment, the entered encrypted token is **not** validated or used for > further processing > of the payment. Instead, a dummy `CRYPTOGRAM_3DS` token is used that always results in an immediate processing of the > payment without > requiring 3DS authentication. Only using a **live** API key on our test environment will result in validation and > usage of the Google Pay > encrypted token! ## Determine payment result For Google Pay the following amounts influence the payment result. All other amounts should lead to a successful transaction. | Amount | Simulator Response | VPOS status | |--------|--------------------|-------------------------------------------------| | 8.01 | `failed` | `failed` with failure code `insufficient_funds` | | 8.02 | `failed` | `failed` with failure code `card_refused` | | 9.00 | `failed` | `failed` | | 81.00 | `failed` | `failed` with failure code `insufficient_funds` | | 82.00 | `failed` | `failed` with failure code `card_refused` | | other | `success` | `success` | ## CCV Test cards GooglePay > All DPAN test cards can be used on non-Android mobile web and desktop devices to simulate a PAN that is linked to an > Android device by Google Pay. | Brand | API Brand | PAN | PAN Type | Google Pay Authentication Method | 3DS2 authentication flow | |---------------|--------------|---------------------|----------|----------------------------------|--------------------------------| | Visa | `visa` | 4242 4242 4242 4242 | DPAN | `CRYPTOGRAM_3DS` | / | | Visa | `visa` | 4111 1111 1111 1111 | DPAN | `CRYPTOGRAM_3DS` | / | | Visa | `visa` | 4012 8888 8888 1881 | FPAN | `PAN_ONLY` | Browser Frictionless - Success | | Visa | `visa` | 4222 2222 2222 2 | FPAN | `PAN_ONLY` | Browser Frictionless - Success | | Visa | `visa` | 4000 0000 0000 0002 | DPAN | `CRYPTOGRAM_3DS` | / | | Visa | `visa` | 4000 0000 0000 0028 | DPAN | `CRYPTOGRAM_3DS` | / | | Visa | `visa` | 4000 0000 0000 0036 | FPAN | `PAN_ONLY` | Browser Frictionless - Success | | Visa Electron | `visa` | 4245 1900 0000 0311 | DPAN | `CRYPTOGRAM_3DS` | / | | Visa Electron | `visa` | 4917 3008 0000 0000 | FPAN | `PAN_ONLY` | Browser Frictionless - Success | | Mastercard | `mastercard` | 5555 5555 5555 0004 | DPAN | `CRYPTOGRAM_3DS` | / | | Mastercard | `mastercard` | 5555 5555 5555 4444 | FPAN | `PAN_ONLY` | Browser Frictionless - Success | | Mastercard | `mastercard` | 5105 1051 0510 5100 | FPAN | `PAN_ONLY` | Browser Frictionless - Success | | Mastercard | `mastercard` | 5200 0000 0000 0015 | DPAN | `CRYPTOGRAM_3DS` | / | | Mastercard | `mastercard` | 5200 0000 0000 0049 | DPAN | `CRYPTOGRAM_3DS` | / | | Mastercard | `mastercard` | 5454 5454 5454 5454 | FPAN | `PAN_ONLY` | Browser Challenge | | Mastercard | `mastercard` | 5555 5555 5555 0012 | FPAN | `PAN_ONLY` | Browser Challenge | # Fraud detection All the payments are screened for fraud. The following amounts are applicable for **all** payment methods. | Amount | Simulator Response | VPOS status | |--------|--------------------|---------------------------------------------| | 66.00 | `reject` | `failed` with failure code `fraud_detected` | | 67.00 | `accept` | Contains a BinInfo | | Other | `accept` | Depending on the chosen method |

Press the button below to generate a Card Token. You'll be automatically forwarded to our hosted token form to enter the data.

Press the button below to generate a Web Token. You'll be automatically forwarded to our hosted token form to enter the data.

Press the button below to generate a Card Token. You'll be automatically forwarded to a test page to enter data towards our embedded token data endpoint.

Fill in the Primary Account Number or the IBAN, and (optionally) metadata to generate a token. You won't be forwarded, but the result will be added below.

Vault Initiation

Generate a Vault Access Token via a redirect or native card data input.

PCI Vault Token

Fill in the Primary Account Number or the IBAN, the expiry date, and (optionally) a Merchant Order Reference to generate a token. You'll be not forwarded, but the result will be added below.

Create mandate

Fill in the customer first name, customer Last name, customer e-mail address, the return URL, the merchant reference, the language & the customer country reference to create a mandate.

Revoke mandate

Fill in the mandate id of the mandate that should be revoked.



References Actions

Actions details


Shipping Company Shipping Method Tracking Number Tracking URI Return Shipping Company Return Tracking Number Return Tracking Uri