Integrate our products into your software. Let's make payment happen together!
Look at all the possibilitiesCCV Online Payments supports multiple brands. All brands can be used in the same way.
Brand | Shopper Country | Sale | Refund | Authorise / Capture | Void | Token Vault | Mandates |
---|---|---|---|---|---|---|---|
American Express | Worldwide | ✓ | ✓ | ✓ | ✓ | ✓ | |
Bancontact | Belgium | ✓ | ✓ | ✓ | ✓ | ✓ | |
Bancontact Mobile | Belgium | ✓ | ✓ | ✓ | ✓ | ✓ | |
Maestro | Worldwide | ✓ | ✓ | ✓ | ✓ | ✓ | |
Mastercard | Worldwide | ✓ | ✓ | ✓ | ✓ | ✓ | |
Visa / VPAY / Visa Electron | Worldwide | ✓ | ✓ | ✓ | ✓ | ✓ |
Payments processed using the card method can be handled by different acquirers in the background. Dependent on your contract, Card payments are processed by Elavon, Valitor, American Express or Bancontact.
Brand | Acquirers |
---|---|
Visa | Elavon, Valitor |
Mastercard | Elavon, Valitor |
Maestro | Elavon, Valitor |
American Express | American Express |
Bancontact | Bancontact |
The standard card payment flow follows the following steps:
card
and use a webhook or
notification.payUrl
in the payment response.returnUrl
.Cardholder authentication is transparent for you. It is done after the customer enters their details on the CCV hosted payment page.
There are 2 distinct methods of authentication.
The use case defines which additional parameters you can provide for card payments.
The easiest way to integrate card payments is to define the payment method
card
in the payment request and redirect the customer to CCV.
CCV will handle the authentication if necessary and redirect the customer back to you.
Since the introduction of Strong Customer Authentication (SCA), additional customer information can be added to the request and is highly recommended. See more information on the dedicated SCA documentation
Example
{
"amount": 9.99,
"currency": "eur",
"method": "card",
"returnUrl": "https://shop/return?order=123456",
"webhookUrl": "https://shop/payhook?order=123456",
"merchantOrderReference": "123456",
"description": "Order 123456",
"language": "eng"
}
You can provide the customers card brand upfront in the payment request in the field brand
.
If you do not provide a brand, the CCV Hosted Payment Page will do brand detection.
The available values are
Brand | API value |
---|---|
Visa | visa |
Mastercard | mastercard |
Maestro | maestro |
American Express | amex |
Bancontact | bcmc |
An example looks like
{
"amount": 9.99,
"currency": "eur",
"method": "card",
"brand": "amex",
"returnUrl": "https://shop/return?order=123456",
"webhookUrl": "https://shop/payhook?order=123456",
"merchantOrderReference": "123456",
"description": "Order 123456",
"language": "eng"
}
CCV provides a secure vault to store sensitive information like card data. The reference to a card in the vault is called a vault access token. You can provide a token in the payment request so the card holder does not need to enter their card details again.
Name | Required | Description |
---|---|---|
vaultAccessToken | Conditional | The Vault Access Token that has valid data card stored in the vault. Only required if transactionType equals sale |
Example
{
"amount": 9.99,
"currency": "eur",
"method": "card",
"returnUrl": "https://shop/return?order=123456",
"webhookUrl": "https://shop/payhook?order=123456",
"merchantOrderReference": "123456",
"description": "Order 123456",
"language": "eng",
"transactionType" : "sale",
"details": {
"vaultAccessToken": "1GV13YEY8ZKCH8ZBJCEOJKDI"
}
}
This means you capture the card data on your system before you send it to CCV. The customer does not enter their card data on a CCV Hosted Payment Page. If you don’t want to handle card data on your own, this scenario is not suited for you.
Warning
When you send card data directly from your backend to CCV, you must be PCI compliant.
Name | Required | Description |
---|---|---|
pan | Yes | The primary account number. All spaces and dashes are removed |
expiryDate | Yes | The expiry date of the card. Format: MMyy or MMyyyy . Example: 0222 or 022022 are both February 2022 |
cardholderFirstName | Yes | The first name of the cardholder |
cardholderLastName | Yes | The last name of the cardholder |
cvc | Conditional | The CVC/CVV2 security code of the card. Only required if transactionType = sale or transactionType = credit and brand is not bcmc . When a vaultAccessToken is used, the cvc code is optional and depending on configuration. |
Example
{
"amount": 9.99,
"currency": "eur",
"method": "card",
"returnUrl": "https://shop/return?order=123456",
"webhookUrl": "https://shop/payhook?order=123456",
"merchantOrderReference": "123456",
"description": "Order 123456",
"language": "eng",
"details": {
"pan": "67032222222222227",
"expiryDate": "1225",
"cardholderFirstName": "John",
"cardholderLastName": "Doe"
}
}
The basic card payment integration means you redirect the customer to CCV. CCV requests the card data from the card holder in order to complete the payment. If your integration requires a more seamless integration with CCV, you can choose to create an embedded or native card data entry form for your customer. Once the card data is captured on the card holders device, you send the card data directly from the card holders device to CCV.
Info
CCV does not allow this feature by default, contact your CCV representative for more information.
The basic flow:
card
and use a webhook or
notification.cardDataUrl
payUrl
as received in the payment response.
There is a possibility customer authentication is required.
CCV does not support out of bounds authentication.returnUrl
.Resource: cardDataUrl
e.g. https://onlinepayments.ccv.eu/card/carddata/embedded?reference=
POST
application/json
Name | Required | Description |
---|---|---|
pan | Yes | The primary account number. All spaces and dashes are removed |
expiryDate | Yes | The expiry date of the card. Format: MMyy or MMyyyy . Example: 0222 or 022022 are both February 2022 |
cardholderFirstName | Yes | The first name of the cardholder. Length of cardholderFirstName and cardholderLastName combined may not exceed 44 characters. |
cardholderLastName | Yes | The last name of the cardholder. Length of cardholderFirstName and cardholderLastName combined may not exceed 44 characters. |
cvc | Conditional | The 3 digit CVC/CVV2 security code of the card. Only required if transactionType = sale or transactionType = credit and brand is not bcmc . When a vaultAccessToken is used, the cvc code is optional and depending on configuration. |
Example
{
"pan": "67032222222222227",
"expiryDate": "1220",
"cvc": "1224",
"cardholderFirstName": "testName",
"cardholderLastName": "testLastName"
}
Card data response
200
PCI compliance may be required:
cardDataUrl
to submit the card data directly to CCV.cardDataUrl
to submit the data to the PSP.Card does not require method specific input.
{
"reference": "P240226130441921CB87E195.Y",
"description": "Refund of Order 123456"
}
Card does not require method specific input.
{
"reference": "P240226130441921CB87E195.Y",
"description": "Refund of Order 123456"
}
Card does not require method specific input.
The operations is only supported for authorisations, i.e. the payments have
transaction type authorise
.
{
"reference": "P240226130441921CB87E195.Y",
"description": "Refund of Order 123456"
}