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_less 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_less Payment Features
          • expand_less 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

  • General
    • Communication
    • Environments
    • Authentication
    • Idempotency
    • Transaction Types
    • Webhooks
    • Notifications
    • Error Handling
    • Security & Privacy
    • Return URL
  • Online Payments
    • Quick Start expand_more
      • Initial Setup
      • Create Payment
    • Basic Operations expand_more
      • Create A Payment
      • Refund A Payment
      • Authorise & Capture Payments
      • Query The Payment Status
    • Payment Features
      • 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
    • Payment Methods expand_more
      • American Express
      • Apple Pay
      • Google Pay
      • Bancontact expand_more
        • Bancontact Walled Initiated Payments (WIP)
        • Bancontact Deferred Sales
      • Bancontact Mobile
      • Banktransfer
      • IDEAL
      • Klarna
      • Landingpage
      • Maestro
      • Mastercard
      • Payconiq
      • Paypal
      • Visa
    • Payouts expand_more
      • Split Payout
      • Test Payout
    • Developer Resources expand_more
      • Currencies
      • Languages
      • Payment Testing
      • Test Cards
  • In-person Payments
    • SoftPOS expand_more
      • General expand_more
        • Getting Started
        • Device Requirements
        • SoftPOS TerminalIds
        • SoftPOS Errors
        • Currencies
        • Languages
        • Network And Connectivity
        • Release Notes
      • Basic Operations expand_more
        • Install A Terminal
        • Make A Payment
        • Handling Receipts
      • API Reference expand_more
        • SoftPOS - API Reference

What's on this page

  • Out Of Scope Transactions
    • Merchant Initiated Transaction - MIT
    • Mail order / Telephone Order - MOTO
    • One leg Out
    • Anonymous transactions
  • Liability Shift
  • How to request Out of Scope transactions
    • Merchant Initiated Transaction
      • API Changes
      • Initial Customer Initiated Transaction
      • Subsequent transaction 1
      • Subsequent transaction 2
      • Industry Practice
      • Unscheduled Card On File
    • Recurring
      • Initial transaction
      • Subsequent transactions
    • Instalments
      • Initial transaction
      • Subsequent transactions
    • MOTO
  • Early adaptor migration
    • Initial Customer Initiated Transaction
    • First Subsequent Merchant Initiated Transactions
    • All the following Subsequent Merchant Initiated Transactions
Online Payments / Payment Features / 3D-Secure 2 / Out Of Scope Transactions

Out Of Scope Transactions

The PSD2 mandate does not cover all card-based transactions and considers these as Out Of Scope for SCA. The issuing bank will not apply SCA for these transactions and guarantees that they will not present the cardholders with an authentication challenge. Out Of Scope transactions do not require an exemption to be requested. However, they do have to be explicitly flagged.

Merchant Initiated Transaction - MIT

Visa SCA Implementation Guide Version 2.0

A transaction, or series of transactions, of fixed or variable amount and frequency, governed by an agreement between the cardholder and merchant that, once agreed, allows the merchant to initiate subsequent payments without any direct involvement of the cardholder. Examples of MITs include subscription type payments at fixed or variable intervals, instalment payments, pre/balance payments, payments related to delayed or split shipments, payments related to booking reservations made via indirect channels, cancellation fees (No show), incremental authorisation requests, delayed charges, and collection of payment of already delivered services (contactless transit only).

In most cases SCA is required if the agreement is set up through a remote electronic channel and MITs must be identified and flagged by merchants so their Acquirers can flag them to Visa using the Visa MIT Framework.

Mail order / Telephone Order - MOTO

Visa SCA Implementation Guide Version 2.0

Payments made through Mail Order/Telephone Order (telephone includes Interactive Voice Response services). Note, “voice commerce” payments initiated through digital assistants or smart speakers are not classed as MOTO.

These transactions must be identified and flagged by merchants and Acquirers.

One leg Out

Visa SCA Implementation Guide Version 2.0

A transaction where either the Issuer or Acquirer is located outside the EEA or the UK is considered out of scope and not requiring SCA. However, SCA should still be applied on a “best efforts” basis.

These transactions are identifiable by the issuer BIN or the Acquirer location being from outside the EEA or the UK.

Anonymous transactions

Visa SCA Implementation Guide Version 2.0

Transactions through anonymous payment instruments, for example anonymous prepaid cards.

These transactions cannot be recognised as such by a merchant so must be identified by Issuers checking the BIN.

Liability Shift

The new regulation has implications on the liability in case of a fraudulent transaction. In general, the following applies:

  • If no 3-D Secure is used, the merchant/acquirer is liable
  • If the merchant/acquirer applies for an exemption and
    • the issuer requests a challenge, the issuer is liable
    • the issuer acknowledges the exemption, the merchant/acquirer is liable
  • If the issuer applies for an exemption, the issuer is liable
  • If the transaction is a subsequent transaction (MIT/Recurring/Instalments), the acquirer is liable

How to request Out of Scope transactions

Merchant Initiated Transaction

A merchant initiated transaction, MIT in short, requires an agreement between you and the cardholder. Set up the agreement in the initial customer-initiated transaction (CIT). Without a CIT, there can be no MIT. Each CIT must apply SCA to obtain a valid agreement. Once the agreement is set up, use the CIT as a reference in subsequent MIT payments.

Subsequent transactions imply that the cardholder’s card data is stored on file. Our vault can facilitate this or if you are PCI compliant store the data locally.

API Changes

In order to facilitate MIT exemptions, the sequence information contains the following fields:

Name Type Size Format Inclusion Description
type string Possible Values:
EXPRESS_CHECKOUT
RECURRING
INSTALMENT
UNSCHEDULED
Required If the payment is part of a sequence of payments, indicate the type of sequence
instalmentMaxAuthorisations integer 3 Required if type is INSTALMENT and mode is INITIAL If the payment is part of an instalment, the maximum number of instalments allowed with this authentication
recurringExpiry string 8 Date formatted in YYYYMMDD Required if type is RECURRING and mode is INITIAL If the payment is part of a recurring payment, the date that the last recurring payment is executed
recurringFrequency integer 3 Required if type is RECURRING and mode is INITIAL If the payment is part of a recurring payment, the number of days between each recurring payment
mode string Possible Values:
INITIAL
SUBSEQUENT
Required if type is RECURRING, INSTALMENT or UNSCHEDULED If the payment is part of an unscheduled sequence, indicate if the transaction is the initial or subsequent transaction
source string Possible Values:
CIT
MIT
Required if type is RECURRING, INSTALMENT or UNSCHEDULED Indicate who the initiator is of the payment
initialTransactionId string Max 20 Required if type is RECURRING, INSTALMENT or UNSCHEDULED and no vault access token is used If the payment is part of a chain of transactions, the reference to the initial or last subsequent transaction of the chain
industryPractice string Possible Values:
INCREMENTAL
DELAYED_CHARGES
NO_SHOW
REAUTHORIZATION
RESUBMISSION
Optional If the payment is a change of an existing CIT, indicate what industry practice triggered the change

Initial Customer Initiated Transaction

The initial transaction acts as an agreement with the cardholder giving you permission to use the cardholders’ card data for future payments.

Inform the cardholder why approval is required, how the card is used, and for how long. If future payments vary in amount, inform the customer during the set up of the agreement. For fixed amounts, the Recurring flow is advised.

To utilize the MIT exemption, transactions must be flagged appropriately. Once the CIT transaction is complete, the transaction response contains the initial transaction id to be used in the subsequent transactions.

API Request

  1. Initiate a new transaction and flag the transaction as the initial CIT.
    {
        "amount" : 10.99,
        "currency" : "eur",
        "method" : "card",
        "returnUrl" : "https://shop.merchant.com/return?order=123456",
        "merchantOrderReference" : "123456",
        "description" : "Order 123456",
        "language" : "nld",
        "sequenceInfo": {
            "type": "UNSCHEDULED",
            "mode": "INITIAL",
            "source": "CIT"
        },
        "storeInVault": "yes"
    }
    
  2. CCV Pay responds with a generated transaction containing a unique payUrl
    {
         "amount": 10.99,
         "currency": "eur",
         "method": "card",
         "returnUrl": "https://shop.merchant.com/return?order=123456",
         "merchantOrderReference": "123456",
         "description": "Order 123456",
         "reference": "C200603161403114CB87E19E.2",
         "language": "nld",
         "type": "sale",
         "created": 1591193643343,
         "lastUpdate": 1591193643343,
         "payUrl": "https://onlinepayments.ccv.eu/card/payment.html?reference=C200603161403114CB87E19E.2",
         "status": "pending"
     }
    
  3. Redirect the customer to the payUrl
  4. The customer submits card data
  5. CCV Pay requests authentication for a mandate and show the challenge to the customer
  6. When the customer completes authentication, CCV Pay redirects them to the returnUrl
  7. CCV Pay sends the authorisation to the issuer for completion

Final API Response

When the transaction is complete, query the transaction to get the final status. The API response now also includes the new field $.details.initialTransactionId. Just like the $.details.vaultAccessToken, store this data for subsequent transactions.

{
   "amount" : 10.99,
   "currency" : "eur",
   "method" : "card",
   "returnUrl" : "https://shop.merchant.com/return?order=123456",
   "merchantOrderReference" : "123456",
   "description" : "Order 123456",
   "language" : "nld",
   "status": "success",
   "details": {
       "initialTransactionId": "INITIAL_TX_ID_1",
       "vaultAccessToken": "VAT_1"
   }
}

Subsequent transaction 1

Each subsequent transaction must refer to a previous transaction in the chain of transactions. Being the first subsequent transaction, only refer to the initial customer-initiated transaction.

Each subsequent transaction also requires card data. If you use our vault, you can add the vault access token of the cardholder to the request. Another option is to add the card data in the transaction details of the request.

We assume that the cardholder is off-session meaning the cardholder is not actively interacting with a website or mobile app. If the card-holder is on-session, MIT is not allowed.

The input data of the subsequent transaction can be very compact compared to the initial transaction. E.g. there is no need to provide the billing address for each subsequent transaction.

API Request

{
    "amount" : 20.99,
    "currency" : "eur",
    "method" : "card",
    "returnUrl" : "https://shop.merchant.com/return?order=123457",
    "merchantOrderReference" : "123457",
    "language" : "nld",
    "sequenceInfo": {
        "type": "UNSCHEDULED",
        "mode": "SUBSEQUENT",
        "source": "MIT",
        "initialTransactionId": "INITIAL_TX_ID_1"
    },
    "details": {
        "vaultAccessToken": "VAT_1"
    }   
}

Final API Response

Payment schemes are most likely to respond with a new initial transaction id for the next subsequent transaction id.

{
   "amount" : 20.99,
   "currency" : "eur",
   "method" : "card",
   "returnUrl" : "https://shop.merchant.com/return?order=123457",
   "merchantOrderReference" : "123457",
   "language" : "nld",
   "status": "success",
   "details": {
       "initialTransactionId": "SUBSEQUENT_TX_ID_1"
   }
}

Subsequent transaction 2

To complete the example of multiple subsequent transactions, the following request shows the use of initialTransactionId with value SUBSEQUENT_TX_ID_1 as received in Subsequent transaction 1.

Use the initial transaction id of the CIT transaction or the last subsequent MIT transaction. We prefer the last subsequent transaction which allows all parties involved to store a limited set of data for a chain of transactions.

Example API Request

{
    "amount" : 15.99,
    "currency" : "eur",
    "method" : "card",
    "returnUrl" : "https://shop.merchant.com/return?order=123458",
    "merchantOrderReference" : "123458",
    "language" : "nld",
    "sequenceInfo": {
        "type": "UNSCHEDULED",
        "mode": "SUBSEQUENT",
        "source": "MIT",
        "initialTransactionId": "SUBSEQUENT_TX_ID_1"
    },
    "details": {
        "vaultAccessToken": "VAT_1"
    }   
}

Final API Response

The value initialTransactionId can be the same as the input id or a new one.

{
   "amount" : 15.99,
   "currency" : "eur",
   "method" : "card",
   "returnUrl" : "https://shop.merchant.com/return?order=123458",
   "merchantOrderReference" : "123458",
   "language" : "nld",
   "status": "success",
   "details": {
       "initialTransactionId": "SUBSEQUENT_TX_ID_2"
   }
}

Industry Practice

A Merchant Initiated Transaction encompasses multiple scenarios, especially in the travel and hospitality sector. There are several use-cases for an MIT transaction for which additional flagging is available using the optional field $.sequenceInfo.industryPractice. Use it both in the CIT or MIT transaction of the transaction chain.

Unscheduled Card On File

Unscheduled means payments initiated at an irregular interval, and possibly for changing amounts between payments.

Recurring

Recurring is an MIT scenario where a fixed amount is withdrawn from the cardholders account at a regular interval.

Initial transaction

Flagging the initial recurring transaction looks very familiar to an MIT transaction. Additionally, a recurring transaction requires an expiry and frequency.

Example API Request

{
  "amount" : 15.99,
  "currency" : "eur",
  "method" : "card",
  "returnUrl" : "https://shop.merchant.com/return?order=123458",
  "merchantOrderReference" : "123458",
  "language" : "nld",
  "sequenceInfo": {
    "type": "RECURRING",
    "mode": "INITIAL",
    "source": "CIT",
    "recurringExpiry": "20211231",
    "recurringFrequency": "12"
  },
  "storeInVault": "yes"
}

Subsequent transactions

There is no need to pass on the recurring data in subsequent transactions.

Example API Request

{
  "amount" : 15.99,
  "currency" : "eur",
  "method" : "card",
  "merchantOrderReference" : "123458",
  "language" : "nld",
  "sequenceInfo": {
    "type": "RECURRING",
    "mode": "SUBSEQUENT",
    "source": "MIT",
    "initialTransactionId": "INITIAL_TX_ID_1"
  },
  "details": {
    "vaultAccessToken": "VAT_1"
  }
}

Instalments

An instalment is a MIT scenario where an amount is paid in multiple payments.

Initial transaction

Flagging the initial instalment transaction looks very familiar to an MIT transaction. Additionally, an instalment transaction requires the maximum number of authorisations (i.e. payments) a merchant will execute as part of the agreement with the customer.

Example API Request

{
  "amount" : 15.99,
  "currency" : "eur",
  "method" : "card",
  "returnUrl" : "https://shop.merchant.com/return?order=123458",
  "merchantOrderReference" : "123458",
  "language" : "nld",
  "sequenceInfo": {
    "type": "INSTALMENT",
    "mode": "INITIAL",
    "source": "CIT",
    "instalmentMaxAuthorisations": "12"
  },
  "storeInVault": "yes"
}

Subsequent transactions

There is no need to pass on the instalment information in subsequent transactions.

Example API Request

{
  "amount" : 10.99,
  "currency" : "eur",
  "method" : "card",
  "merchantOrderReference" : "123456",
  "language" : "nld",
  "sequenceInfo": {
    "type": "INSTALMENT",
    "mode": "SUBSEQUENT",
    "source": "MIT",
    "initialTransactionId": "INITIAL_TX_ID_1"
  },
  "details": {
    "vaultAccessToken": "VAT_1"
  }
}

MOTO

In order to flag a payment as moto, an new input parameter is added to the API.

Name Type Size Format Inclusion Description
moto string Possible Values:
mail
telephone
Optional Indicate if the payment is initiated via a mail or telephone order

Example API Request

{
    "amount" : 10.99,
    "currency" : "eur",
    "method" : "card",
    "returnUrl" : "https://shop.merchant.com/return?order=123456",
    "merchantOrderReference" : "123456",
    "description" : "Order 123456",
    "language" : "nld",
    "details": {
        "moto": "mail"
    }
}

Early adaptor migration

Some integrators required changes from CCV Pay before completion of the API. As a result, CCV Pay opted to use default values to apply for an MIT exemption if possible. These changes are only applicable to them who use our vault to provide the card data.

We strongly encourage everyone to migrate to the new API as the application of default values will be terminated in 2021.

Initial Customer Initiated Transaction

Before migration: no additional input was required. CCV Pay stored the initial transaction along with the vault access token.

After migration: flag the transaction as a CIT

{
  "sequenceInfo": {
    "type": "UNSCHEDULED",
    "mode": "INITIAL",
    "source": "CIT"
  }
}

First Subsequent Merchant Initiated Transactions

Before migration: only the vault access token was required

After migration: flag the transaction as an MIT

No initialTransactionId is available so CCV Pay will use the id as stored in the vault access token.

{
  "sequenceInfo": {
    "type": "UNSCHEDULED",
    "mode": "SUBSEQUENT",
    "source": "MIT"
  },
  "details": {
    "vaultAccessToken": "VAT_1"
  }
}

As a result of this MIT, the API response contains the initialTransactionId to be used in subsequent transactions.

{
  "details": {
    "initialTransactionId": "INITIAL_TX_ID_1"
  }
}

All the following Subsequent Merchant Initiated Transactions

Before migration: only the vault access token was required

After migration: flag the transaction as an MIT and include the initialTransactionId

Use the initialTransactionId of the previous transaction in the sequence chain.

{
  "sequenceInfo": {
    "type": "UNSCHEDULED",
    "mode": "SUBSEQUENT",
    "source": "MIT",
    "initialTransactionId": "INITIAL_TX_ID_1"
  },
  "details": {
    "vaultAccessToken": "VAT_1"
  }
}

Go to

Home
Documentation




Cookies Privacy Statement