Integrate our products into your software. Let's make payment happen together!
Look at all the possibilitiesAn authorise allows a merchant to reserve money from the customer without withdrawing the money from the customers account. When you want to withdraw the money later on, you can send a capture request. If you decide to not withdraw the money, you can send a reversal request to release the reserved money on the customers account.
This can be useful in cases where
You can view the supported payment methods here.
You want to reserve the funds on the customer’s account for a specific amount for your service you are about to deliver. Usually, the exact amount is not known at this point, so you authorise a fixed amount.
After you have delivered or cancelled the service, you can either capture the authorisation or reverse it.
This requires the payment method to support authorisations. The following request will send an authorise request for 9.99 EUR,
Initiate a new payment with type authorise
Example request
curl --basic --user apikey: -H "Content-Type: application/json" --data '{
"transactionType": "authorise",
"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"
}' https://api.psp.ccv.eu/api/v1/payment
Example response
{
"lastUpdate": 1709620979582,
"cancelUrl": "https://onlinepayments.ccv.eu/card/cancel/merchant?reference=C240305064258677CB87E192.G",
"created": 1709620979582,
"payUrl": "https://onlinepayments.ccv.eu/card/payment.html?reference=C240305064258677CB87E192.G",
"amount": 9.99,
"description": "Order 123456",
"status": "pending",
"reference": "C240305064258677CB87E192.G",
"merchantOrderReference": "123456",
"method": "card",
"type": "authorise",
"language": "eng",
"currency": "eur",
"returnUrl": "https://shop/return?order=123456"
}
In order to complete the payment, you’ll need to redirect your customer
to the payment url (payUrl) as returned in the payment response.
Depending on the payment method, the customer performs an authentication. In case of card payments, we use 3-D Secure to verify the customer’s identity.
As a final result, we return the customer back to your shop.
The shop url is provided by you as returnUrl when you initiated the request in step 1.
At this point you don’t know whether the payment is successful or not.
Example request
curl --basic --user apikey: https://api.psp.ccv.eu/api/v1/transaction?reference=C240305064258677CB87E192.G
Example response
{
"lastUpdate": 1709621105740,
"statusFinalDate": 1709621105740,
"cancelUrl": "https://onlinepayments.ccv.eu/card/cancel/merchant?reference=C240305064258677CB87E192.G",
"created": 1709620979582,
"methodTransactionId": "tMuzqg",
"entryMode": "ecom",
"brand": "visa",
"details": {
"cardholderFirstName": "John",
"initialTransactionId": "p3GNcBD4tLFo800",
"qrCode": "https://shop-vpos-test.ccvlab.eu/bep/authenticate.html?secureTransferId=1d584a8f-58fc-4704-a92d-9955e678b932&trm=50",
"maskedPan": "4111XXXXXXXX1111",
"acquirerResponseCode": "00",
"urlIntent": "https://shop-vpos-test.ccvlab.eu/bep/authenticate.html?secureTransferId=1d584a8f-58fc-4704-a92d-9955e678b932&trm=51",
"authorisedAmount": 9.99,
"acquirer": "Valitor",
"cardholderLastName": "Doe",
"authenticationProtocol": "3DS2",
"authenticationStatus": "Y",
"acquirerResponseCodeDescription": "ApprovedOrCompletedSuccessfully"
},
"payUrl": "https://onlinepayments.ccv.eu/card/payment.html?reference=C240305064258677CB87E192.G",
"amount": 9.99,
"description": "Order 123456",
"status": "success",
"reference": "C240305064258677CB87E192.G",
"merchantOrderReference": "123456",
"method": "card",
"type": "authorise",
"language": "eng",
"currency": "eur",
"returnUrl": "https://shop/return?order=123456"
}
As a side effect of completing the payment (successfully or not), we will notify you using the webhook provided in step 1.
When later in time you know the definitive amount to charge,
perform a Capture request on the previous authorise transaction.
The authorisation reference must be sent in the reference field.
Example request
curl --basic --user apikey: -H "Content-Type: application/json" --data '{
"amount": 5.31,
"webhookUrl": "https://shop/payhook?order=123456",
"description": "Order 123456",
"reference" : "C240305064258677CB87E192.G"
}' https://api.psp.ccv.eu/api/v1/capture
Example response
{
"lastUpdate": 1709621334602,
"originalReference": "C240305064258677CB87E192.G",
"created": 1709621334478,
"brand": "visa",
"amount": 5.31,
"description": "Order 123456",
"status": "pending",
"reference": "C240305064854420CB87E193.G",
"merchantOrderReference": "123456",
"method": "card",
"type": "capture",
"language": "eng",
"currency": "eur"
}
At this point you don’t know whether the payment is successful or not.
Example request
curl --basic --user apikey: https://api.psp.ccv.eu/api/v1/transaction?reference=C240305064854420CB87E193.G
Example response
{
"originalReference": "C240305064258677CB87E192.G",
"lastUpdate": 1709621334942,
"statusFinalDate": 1709621334942,
"methodTransactionId": "tMuzqg",
"entryMode": "ecom",
"created": 1709621334478,
"details": {
"initialTransactionId": "p3GNcBD4tLFo800",
"acquirerResponseCode": "00",
"authorisedAmount": 9.99,
"acquirer": "Valitor",
"acquirerResponseCodeDescription": "ApprovedOrCompletedSuccessfully"
},
"status": "success",
"description": "Order 123456",
"brand": "visa",
"amount": 5.31,
"merchantOrderReference": "123456",
"notificationRequests": [],
"reference": "C240305064854420CB87E193.G",
"returnUrl": "https://shop/return?order=123456",
"method": "card",
"type": "capture",
"language": "eng",
"currency": "eur"
}
After effect of completing a payment (successfully or not) we will notify you using a webhook. This allows you to perform additional operations in your system like sending an email to your customer.
When capturing a payment which was made using the method terminal, additional
details can be provided if the terminal is different from the original authorisation.
Any details included in the original authorise can be overwritten with these details.
Example Request
{
"amount": 5.31,
"webhookUrl": "https://shop/payhook?order=123456",
"description": "Order 123456",
"reference" : "C240305064258677CB87E192.G",
"details": {
"terminalId": "1234567",
"managementSystemId": "1234567",
"accessProtocol": "OPI_NL",
"ip": "192.168.1.154",
"port": "6235",
"operatingEnvironment": "ATTENDED",
"merchantLanguage": "ita"
}
A payout instruction can be used to provide a custom structured reference and facilitate Split Payouts. Multiple Payout Instructions can only be used when boarded for Split Payout.
Requirements:
Example Request
{
"amount": 5.31,
"webhookUrl": "https://shop/payhook?order=123456",
"description": "Order 123456",
"reference" : "C240305064258677CB87E192.G",
"payoutInstructions": [
{
"amount": 2.00,
"structuredReference": "090933755493",
"externalReference" : "0001606469162293"
},
{
"amount": 3.31,
"structuredReference": "090933755423",
"externalReference" : "0001606469162223"
}
]
}
Depending on the payment method, the following can be accomplished using a reversal:
The following transactions can be reversed:
authorise transactions
applepay, card, googlepay, klarna and terminal.sale and capture transactions
terminal.When you want to cancel the authorisation and release the reserved funds on the customer’s account,
perform a Reversal request on the previous authorise transaction.
The authorisation reference must be sent in the reference field.
Example request
curl --basic --user apikey: -H "Content-Type: application/json" --data '{
"webhookUrl": "https://shop/payhook?order=123456",
"description": "Order 123456",
"reference" : "C240305064258677CB87E192.G"
}' https://api.psp.ccv.eu/api/v1/reversal
Example response
{
"lastUpdate": 1709621334602,
"originalReference": "C240305064258677CB87E192.G",
"created": 1709621334478,
"brand": "visa",
"description": "Order 123456",
"status": "pending",
"reference": "C240305064854420CB87E193.G",
"merchantOrderReference": "123456",
"method": "card",
"type": "reversal",
"language": "eng",
"currency": "eur"
}
At this point you don’t know whether the reversal is successful or not.
Example request
curl --basic --user apikey: https://api.psp.ccv.eu/api/v1/transaction?reference=C240305064854420CB87E193.G
Example response
{
"originalReference": "C240305064258677CB87E192.G",
"lastUpdate": 1709621334942,
"statusFinalDate": 1709621334942,
"methodTransactionId": "tMuzqg",
"entryMode": "ecom",
"created": 1709621334478,
"details": {
"initialTransactionId": "p3GNcBD4tLFo800",
"acquirerResponseCode": "00",
"authorisedAmount": 9.99,
"acquirer": "Valitor",
"acquirerResponseCodeDescription": "ApprovedOrCompletedSuccessfully"
},
"status": "success",
"description": "Order 123456",
"brand": "visa",
"amount": 5.31,
"merchantOrderReference": "123456",
"notificationRequests": [],
"reference": "C240305064854420CB87E193.G",
"returnUrl": "https://shop/return?order=123456",
"method": "card",
"type": "capture",
"language": "eng",
"currency": "eur"
}
After effect of completing a payment (successfully or not) we will notify you using a webhook. This allows you to perform additional operations in your system like sending an email to your customer.
These details are possible when reversing an authorisation or sale which was made using the method terminal.
Any details included in the original authorise or sale can be overwritten with these details.
| Name | Required | Description | Max Length |
|---|---|---|---|
| cardPresent | No | Specify whether the customer’s card has to be present to perform the reversal. Defaults to true. |
|
| terminalId | No | The terminal id as assigned by CCV | 50 |
| managementSystemId | No | The management system id of this terminal as assigned by CCV | 50 |
| accessProtocol | No | The communication protocol between the terminal and access server | 20 |
| ip | No | The browser accessible IP of the terminal for initiating the wake up | 50 |
| port | No | The browser accessible port of the terminal’s socket handling HTTP calls | 5 |
| operatingEnvironment | Conditional | Only ATTENDED terminal reversals are supported. Meaning it is required to include ATTENDED if the operatingEnvironment of the transaction being reversed was set to SEMI_UNATTENDED. |
20 |
| merchantLanguage | No | The language of the merchant, used to change the language in which the intermediate page is displayed in ATTENDED operatingEnvironments. Required when operatingEnvironment is ATTENDED, not required otherwise. |
3 |
Example Request
{
"webhookUrl": "https://shop/payhook?order=123456",
"description": "Order 123456",
"reference" : "C240305064258677CB87E192.G",
"details": {
"terminalId": "1234567",
"managementSystemId": "1234567",
"accessProtocol": "OPI_NL",
"ip": "192.168.1.154",
"port": "6235",
"operatingEnvironment": "ATTENDED",
"merchantLanguage": "ita"
}
}
Yes, depending on the payment method, you can capture an authorisation multiple times, as long as the total amount captured does not exceed the authorised amount.
Yes, you can capture an authorisation partially, as long as the total amount captured does not exceed the authorised amount.
No, you cannot reverse an authorisation after you have captured it. You should refund the specific capture instead. See the Refund API for more information.
No, you can only reverse an authorisation once, the full authorisation will be reversed.
The validity of an authorisation is specific to the payment method and can be found in the Payment Methods documentation.
No, you cannot capture an authorisation after it has expired. You will need to authorise the payment again.
No, you cannot reverse an authorisation after it has expired. The authorisation will already be reversed automatically.
No, you cannot capture an authorisation after you have reversed it. You will need to authorise the payment again.