Developer
  • Getting started keyboard_arrow_down

    Discover

    • arrow_forward
      EV Charging

      Discover our unattended POS solution for the ev market

    Our solutions

    • arrow_forward
      CCV Terminal

      Integrate with a CCV Terminal

    • arrow_forward
      SoftPOS

      Turn your own device into a payment terminal

    • arrow_forward
      CCV Online Payments

      Accepting online payments in your platform without technical knowledge

    • arrow_forward

    • arrow_forward

    Connect to the CCV Platform

    Integrate our products into your software. Let's make payment happen together!

    Look at all the possibilities
  • Documentation
  • API Reference
menu
    • expand_less Payment API
      • expand_more General
        • Communication
        • Environments
        • Authentication
        • Idempotency
        • Transaction Types
        • Webhooks
        • Notifications
        • Error Handling
        • Security & Privacy
        • Return URL
      • expand_more Online Payments
        • expand_more Quick Start
          • Initial Setup
          • Create Payment
        • expand_more Basic Operations
          • Create A Payment
          • Refund A Payment
          • Authorise & Capture Payments
          • Query The Payment Status
        • expand_more Payment Features
          • expand_more 3D-Secure 2
            • SCA And 3D-Secure 2
            • Compliance Guide
            • Out Of Scope Transactions
            • Exemptions
          • Payment Links
          • Merchant Initiated Payments
          • Embedded Card Payments
          • Mandates
          • Customers & Loyalty
          • Partial Payment
        • expand_more Payment Methods
          • American Express
          • Apple Pay
          • Google Pay
          • expand_more Bancontact
            • Bancontact Walled Initiated Payments (WIP)
            • Bancontact Deferred Sales
          • Bancontact Mobile
          • Banktransfer
          • IDEAL
          • Klarna
          • Landingpage
          • Maestro
          • Mastercard
          • Payconiq
          • Paypal
          • Visa
        • expand_more Payouts
          • Split Payout
          • Test Payout
        • expand_more Developer Resources
          • Currencies
          • Languages
          • Payment Testing
          • Test Cards
      • expand_more In-person Payments
        • expand_more SoftPOS
          • expand_more General
            • Getting Started
            • Device Requirements
            • SoftPOS TerminalIds
            • SoftPOS Errors
            • Currencies
            • Languages
            • Network And Connectivity
            • Release Notes
          • expand_more Basic Operations
            • Install A Terminal
            • Make A Payment
            • Handling Receipts
          • expand_more API Reference
            • SoftPOS - API Reference
    • expand_more Board Your Merchants At CCV
      • expand_more General
        • Getting Started
        • Authentication
      • expand_more Boarding API
        • StartOrder
        • AddSalesPackage
        • AddProductPSPStandalone
        • AddProductPSPSubmerchant
        • AddTerminalPackage
        • SetShoppingCartPricingDetails
        • SubmitOrder
        • Boarding
      • API Reference
    • expand_more Android Rest Beta API
      • expand_more General
        • Getting Started
        • Brands
        • Supported Languages
      • expand_more Basic Operations
        • Make A Payment
        • Cancel A Payment
        • Handling Receipts
        • Show Display Messages
        • Recover A Payment
      • expand_more Payment Features
        • Authorise & Capture
        • Capture
      • expand_more Terminal Features
        • Transaction Overview
        • Brands
        • Period Closing
        • Terminal - Status
      • expand_more Tokenization
        • Tokenization - Get A Card Token
        • Read A Mifare Card
        • Custom Text On Terminal
      • expand_more API Reference
        • API Reference
    • expand_more Android SDK
      • expand_more General
        • Getting Started
        • Demo Application - Android SDK
        • Result States
        • Language Codes
        • Error Handling
        • Logging
        • EP2
        • Download SDK
        • Release Notes
      • expand_more Basic Operations
        • Make A Payment
        • Stop Ongoing Payment
        • Recover A Payment - Android SDK
      • expand_more Payment Features
        • Account Selection - Android SDK
        • Additional Receipt Text - Android SDK
        • Allow Or Deny Card Brands - Android SDK
        • Authorisation By Voice - Android SDK
        • Authorise - Android SDK
        • Capture - Android SDK
        • Card Detection - Android SDK
        • Card Detection Deprecated - Android SDK
        • Card Token - Android SDK
        • Card Validation - Android SDK
        • Customer Display - Android SDK
        • E-Receipt - Android SDK
        • Manual Card Information Entry - Android SDK
        • Payment Reversal - Android SDK
        • Refund - Android SDK
        • Request Transaction Information - Android SDK
        • Reservation - Android SDK
        • German Eichrecht - Android SDK
      • expand_more SDK Guides
        • Activate Terminal - Android SDK
        • Card Circuits - Android SDK
        • Card Reader Status - Android SDK
        • Card Reader Status - Android SDK
        • Check Password - Android SDK
        • Factory Reset - Android SDK
        • Get Config - Android SDK
        • Get Status - Android SDK
        • Mobile Phone Prepaid - Android SDK
        • Online Agent - Android SDK
        • Partial Period Closing - Android SDK
        • Period Closing - Android SDK
        • Possible Transaction Types - Android SDK
        • Retrieve Last Ticket - Android SDK
        • Retrieve Open Pre Authorisations - Android SDK
        • Startup - Android SDK
        • Taxfree - Android SDK
        • Terminal Administration - Android SDK
        • Terminal Discovery - Android SDK
        • Ticket Reprint Period Closing - Android SDK
        • Transaction Overview - Android SDK
        • Check Password - Android SDK
      • expand_more Hardware Access
        • Getting Started
        • NFC - Android SDK
        • Printing - Android SDK
        • QR And Barcode Scanner - Android SDK
      • expand_more API Reference
        • API Documentation
    • Android App Requirements
    • expand_more Certification
      • Introduction
      • expand_more Attended Certification Tests
        • expand_more Aborting
          • F1A - Regular Abort By Merchant
          • F1B - Failing Abort By Merchant
          • F1D - Hammering Abort By Merchant
        • expand_more Allowed Amounts
          • S1A - Transaction With Amount Of EUR 0,00
          • S1B - Transaction With Negative Amount
          • S1C - Transaction With Highest Possible Amount
          • S1D - Over-Amount Transaction
        • expand_more Connection Lost
          • Q1B - Manual Transaction Recovery
          • Q1C - Ethernet Connection With ITS Fails
          • Q1F - Device Unavailable
          • Q1G - Terminal Not Responding
          • T1A - Automatic Transaction Recovery
        • expand_more E Journal
          • M1A - Store E-Journal
          • M2A - ECR/POS Print Journal Receipts
          • M3A - ECR/POS Storing Journal Receipts
        • expand_more Reprint Ticket
          • L1A - Reprint Ticket
          • L1B - Reprint Ticket Declined Transaction
          • L2A - Reprint Ticket No Printer Available
          • L2B - Reprint Ticket Declined Transaction No Printer Available
        • expand_more Tickets
          • U1A - Request For Identification
          • U1B - Request For Signature
          • U1C - Request For Signature And Identification
          • U1D - Failing Transaction No Receipt
          • U1E - Split Payment
        • expand_more Time Out
          • R1A - Time Out On Presenting A Card
          • R1B - Time Out During Pin Entry
        • expand_more Transactions
          • C1A - Happy Flow
          • C1B - Happy Flow Contactless
          • C1D - Happy Flow Magnetic Stripe
          • C1E - Declined Transaction By Host
          • C1E - Transaction Aborted By Cardholder
          • C1F - Absence Of Thousand Separator
          • C1G - Cashier Display Messages
        • expand_more Validation
          • H1A - Too Many Fingers
          • H1B - Not Removing Card
          • H2A - Power Loss Or Closing Of ECR/POS During Transaction
      • expand_more Unattended Certification Tests
        • expand_more User Guidance
          • C1 - Successful Payment
          • C2 - Next Cardholder
          • C3 - Abort On PIN Entry
          • C4 - Time Out During PIN Entry
          • C5 - No Amount Entered
          • C6 - Language Selection
          • C7 - Amount To Authorise
          • C8 - Available Funds
        • expand_more Device Selection
          • D1 - Device Selection
          • D2 - Invalid Device
          • D3 - Charger Selection Abort
          • D4 - No Charger Selected
          • D5 - Authorisation With No Free Devices
        • expand_more Product Delivery
          • E1 - Product Selection
          • E2 - Enabled Products
          • E3 - Invalid Product Entered
          • E4 - Product Selection Aborted
          • E5 - No Product Selected
          • E6 - Max Delivery Time
          • E7 - Abort Session
          • E7 - Abort By POS
          • E9 - Not Started Charging In Time
          • E10 - Take More Fuel Than AVF
          • E10 - Multiple Sessions Mixed
          • E12 - Postpone Card Financial Advice On New Cardholder Card
          • E13 - Abort Session On Card Reinsert
        • expand_more Receipts
          • F1 - Cardholder Retrieve Receipt Info
          • F2 - Cardholder Receipt Retrieval
          • F3 - Reprint Ticket
          • F4 - F8 - Ticket Printing And Content
          • F9 - TrackingToken Deleted
          • F10 - Printer Paper Low
          • F11 - CardPayment Erased From Storage
          • F12 - E-Receipt Received By Cardholder
          • F13 - E-Receipt Failure
        • expand_more Transaction Limit Handeling Maestro
          • G1 - Maestro CardPayment 1 Euro
          • G2 - Maestro CardPayment 30 Euro
          • G3 - Maestro CardPayment 60 Euro
          • G4 - Maestro CardPayment 500 Euro
        • expand_more Transaction Limit Handeling Mastercard
          • H1 - Mastercard CardPayment 1 Euro
          • H2 - Mastercard CardPayment 30 Euro
          • H3 - Mastercard CardPayment 60 Euro
          • H4 - Mastercard CardPayment 500 Euro
        • expand_more Mifare Handling
          • I1 - Happy Flow Mifare
          • I2 - Unknown Mifare Card
          • I3 - No Mifare Card Presented
          • I4 - Mastercard Presented
        • expand_more Card Circuits
          • L1 - Available Card Circuits
        • expand_more Reconciliation
          • M1 - Reconciliation As Function
          • M2 - Reconciliation By New Shiftnumber
          • M3 - POS Auto Triggers Reconciliation With Closure
        • expand_more Journal
          • N1 - Journal Accessible By Authorized Employees
          • N2 - Journal Cannot Be Altered
        • expand_more Exception Flows
          • O1 - Unknown Card Session
          • O2 - Maximum Time Out
          • O3 - Device Unavailable
          • O4 - Time Out Card-Type Fallback
          • O5 - Time Out On Presenting Card
          • O6 - App Stability
          • O7 - Automatic Startup
          • O8 - Sleep Mode Not Supported
          • O8 - Sleep Mode Supported
        • expand_more Recovery
          • X1 - Recovery After Communication Failure
          • X2 - Recovery After CCV Component Update
          • X3 - Recovery After 24 Hour Reboot
          • X4 - Recovery After CCV-Fusion Client Restart
          • Y1 - Recovery After Power Failure With No Battery Backup
          • Y2 - Recovery After Power Failure With Battery Backup
      • expand_more SoftPOS Certification Tests
        • expand_more Success Scenarios
          • Installation Success - SoftPOS Certification Test
          • Payment Success - SoftPOS Certification Test
        • expand_more Failed Scenarios
          • Installation Failed - CCV SoftPOS App Not Installed - SoftPOS Certification Test
          • Payment Failed - Declined - SoftPOS Certification Test
          • Payment Failed - CCV SoftPOS App Is Closed During Payment - SoftPOS Certification Test
          • Payment Failed -CCV SoftPOS App Is Killed During Payment - SoftPOS Certification Test
          • Payment Failed - SoftPOS App Not Installed Anymore - SoftPOS Certification Test
        • expand_more Other Scenarios
          • Other Scenario - Data Cleared Of The CCV SoftPOS App - SoftPOS Certification Test
    • expand_more Development Kits
      • SoftPOS Dev Kit
      • IM30 Dev Kit
    • Glossary

Payment API

  • Payment
  • Transaction Query
  • Balance
  • Cancel
  • Refund
  • Payout
  • Capture
  • Mandate
  • Method
  • Release
  • Reversal
  • SoftPOS
  • Status
  • Token
  • Transaction Confirm
  • Transaction Export
  • Transaction Update
  • Vault
  • Void

What's on this page

  • Mandates
    • Supported Methods
    • Mandate Creation
      • Typical mandate creation flow
    • Mandate object
      • Mandate type
      • Mandate status
      • Mandate details
    • Mandate create request
      • Google Pay create details
    • Mandate create response
    • Read mandate request
    • Read mandate response
    • Read all mandates request
    • Read all mandates response
    • Read all transactions of mandate request
    • Read all transactions of mandate response
    • Revoke mandate request
    • Revoke mandate response
    • Update mandate request
      • Update general details
    • Update mandate response
API Reference / Mandate

Mandates

The mandate API resource can be used to acquire mandates from the customers to allow easy merchant initiated transactions in the future. When creating a mandate, a mandateId is returned. This mandateId can later be used for all kinds of actions, including sending the mandateId with a new payment request, to indicate it’s a new payment for that specific mandate.

Supported Methods

  • Apple Pay
  • Card
  • Google Pay
  • Paypal

Mandate Creation

A mandate is obtained by performing an initial mandate creation process. The creation can be achieved through a mandate create request:

The mandate creation process creates two entities: the mandate itself and a child transaction. The mandate contains the mandate Id and a reference to the child transaction (childReferenceId). The child transaction is created to gain the actual mandate.

A mandate entity can only have 1 child transaction. When the child transaction reaches a final transaction status such as success or manualintervention, the mandate will be updated with the same corresponding mandate status.

An optional amount can be added when creating a mandate and triggers the first payment of that mandate. The payment information is then used to sign the mandate. When no amount is specified, alternative ways to sign the mandate will be presented to the customer, eg. SMS, iDIN, itsme, …

Typical mandate creation flow

The general mandate creation request flow is:

  1. You create a new mandate
  2. Redirect the customer to the signUrl from the response.
  3. The customer is invited to sign a mandate contract.
  4. After the contract has been signed and stored, we redirect the customer back to the returnUrl provided in the create a new mandate.
  5. You read the mandate to get the status and the mandate id.

only an active mandate can be used for payments.

Status Verification

We do not expose the status of the mandate or any of its details to the customer. It is up to you to verify the status of the mandate transaction and act accordingly. Webhooks and Notifications are provided to give you feedback, but this principle remains.

Mandate object

Name Description
status Possible values: Mandate Status
merchantOrderReference A reference, maximum 255 characters, of the merchant order reference associated with this mandate
signUrl To complete the mandate create request the customer should be redirected to this URL.
returnUrl After the mandate creation is completed (successfully or otherwise) the customer is redirected to this URL
externalMandateReference The unique reference of the mandate given by the external mandate party
created The local server datetime the mandate was created, epoch timestamp
modified The local server datetime the mandate was modified, epoch timestamp
details An optional object listing specific mandate details: Mandate Details
signed The local server datetime the mandate was signed, epoch timestamp
mandateId The Id of the mandate uniquely given by CCV.
type The Type of the mandate, possible values: Mandate Type
amount The amount used in the first payment of the current mandate. Specifying an amount will trigger the first payment automatically
notificationRequests An object which is used to request Notifications for specific events related to this mandate.

Example

{
 "status": "active",
 "externalMandateReference": "CCV98",
 "mandateId": "50d2f91c-9a4d-4205-b443-24ae24b316a3",
 "signed": 1622705674332,
 "type": "paypal",
 "merchantOrderReference": "1234678",
 "modified": 1622705674384,
 "signUrl": "https://urlToSign",
 "created": 1622705598302,
 "returnUrl": "https://google.be",
 "amount": 4.78,
 "details": {
  "customerCountry": "BEL",
  "customerLanguage": "nld",
  "customerFirstName": "Dirk",
  "customerEmail": "d.teur@ccvlab.eu",
  "customerLastName": "Teur"
 }
}

Mandate type

Name Description
APPLEPAY Create a mandate to use with payments using the method applepay.
CARD Create a mandate to use with payments using the method card.
GOOGLEPAY Create a mandate to use with payments using the method googlepay.
PAYPAL Create a mandate to use with payments using the method paypal.

Mandate status

Name Description
PENDING This mandate is still is the process of being signed.
ACTIVE This mandate is active and ready to be used.
INACTIVE This mandate is not active and cannot be used with a payment.

Mandate details

For each given mandate-type, there are specific details. Besides these specific details, there are also general details that apply to all mandates.

General details

Name Description
customerFirstName The first name of the customer
customerLastName The last name of the customer
customerEmail The email of the customer
customerLanguage The language of the customer
customerCountry The country code of the customer

Example

{
 "customerCountry": "BEL",
 "customerLanguage": "nld",
 "customerFirstName": "Dirk",
 "customerEmail": "d.teur@ccvlab.eu",
 "customerLastName": "Teur"
}

Mandate create request

  • Resource: /api/v1/mandate
  • Method: POST
  • Content-Type: application/json
  • Authentication: basic auth
  • Parameters
Name Required Description
merchantOrderReference No A reference, maximum of 255 characters, of the order associated with this mandate
returnUrl Yes After the contract is completed (successfully or otherwise) the customer is redirected to this URL.
type Yes The type of the mandate to be created. Possible values Mandate Types
amount No An optional amount to start the first payment and to use that payment to sign the mandate. The amount can contain up to 12 digits in total, including a maximum of 2 decimal digits.
details No Details specific for the type of mandate
notificationRequests No An object which is used to request Notifications for specific events related to this mandate.
sequenceInfo Conditional Indicates if the mandate is created as part of a sequence. Required for mandate types GOOGLEPAY and APPLEPAY

Google Pay create details

Name Required Description
googlePayEncryptedToken No The entire unmodified encrypted token as received by Google Pay in String UTF-8 format

Example

{
  "type": "GOOGLEPAY",
  "returnUrl" : "https://google.be",
  "merchantOrderReference" : "1234678",
  "details": {
    "googlePayEncryptedToken": "<UNMODIFIED ENCRYPTED TOKEN HERE>"
  },
  "sequenceInfo": {
    "type": "UNSCHEDULED",
    "source": "CIT"
  }
}

Mandate create response

  • Status Code: 200
  • Content Type: application/json
  • Content: See Mandate object

Read mandate request

This operation returns all data from a given mandate.

  • Resource: /api/v1/mandate/{id}
  • Method: GET
  • Content-Type: application/json
  • Authentication: basic auth
  • Parameters: PathParam of the mandate to be fetched

Read mandate response

  • Status Code: 200
  • Content Type: application/json
  • Content: Mandate object

Read all mandates request

This operation returns all data from all mandates.

  • Resource: /api/v1/mandate
  • Method: GET
  • Content-Type: application/json
  • Authentication: basic auth
  • Parameters: Optional path parameters of page and size
    • page defaults to 0
    • size defaults to 10

Read all mandates response

  • Status Code: 200
  • Content Type: application/json
  • Content: List of Mandate object

Read all transactions of mandate request

This operation returns all transactions initiated using the given mandate.

  • Resource: /api/v1/mandate/{id}/transactions
  • Method: GET
  • Content-Type: application/json
  • Authentication: basic auth
  • Parameters: PathParam of the mandate to be fetched

Read all transactions of mandate response

  • Status Code: 200
  • Content Type: application/json
  • Content: List of Payment object

Revoke mandate request

Used to revoke a mandate rendering it unusable. The mandate status is set to the inactive mandate status

The mandate revoke request is a simple DELETE request.

  • Resource: /api/v1/mandate/{mandateId}
  • Method: DELETE
  • Authentication: basic auth
  • URL-Parameters
Name Required Description
mandateId Yes The mandate id of the mandate that should be revoked

Revoke mandate response

  • Status Code: 200

200 if revoke is successful.

Update mandate request

  • Resource: /api/v1/mandate/{mandateId}
  • Method: PUT
  • Content-Type: application/json
  • Authentication: basic auth
  • URL-Parameters
Name Required Description
mandateId Yes The mandate id of the mandate that should be updated
  • Parameters
Name Required Description
details Yes General Details and/or details specific for the type of mandate

The details parameter is required meaning that at least one of the below specified detail-fields should be present in the update request. Otherwise, the request will return 400 - Bad Request status code.

Update general details

Updating general details can be done in combination with mandate-type specific details. There is no need to perform a separate update request to change these values.

Name Required Description
customerFirstName No The first name of the customer
customerLastName No The last name of the customer
customerEmail No The email of the customer to which the contract is mailed.
customerLanguage No The language of the customer. Defines the language to be used in the payment screens the customer will see. Possible values: Languages
customerCountry No The country of the customer, an ISO 3166 alpha-2 code. See for more info: Country Codes - ISO 3166.

!INFO customerFirstName & customerLastName must be updated together, otherwise the request will return a 400 - Bad Request status code.
Only provide customerEmail when it’s value has changed otherwise the request will return a 400 - Bad Request status code.

Update mandate response

  • Status Code: 200
  • Content Type: application/json
  • Content: Mandate object

Go to

Home
Documentation




Cookies Privacy Statement