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_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_less 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 expand_more
      • 3D-Secure 2 expand_more
        • 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
      • 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

  • Klarna
    • Introduction
    • Guidelines
    • Supported Transaction Types
      • Transactions for goods that can be delivered instantly
      • Transactions for goods that cannot be delivered instantly
    • Method API details
      • Authorise an order
      • Capture an order
      • Refund a captured order
      • Cancel / Reverse an open Klarna order
      • Cancel a pending authorise payment
Online Payments / Payment Methods / Klarna

Klarna

Shopper Country Sale Refund Authorise / Capture Void Token Vault Mandates
Selected few ✓ ✓

Klarna is limited to the following countries: Germany, United Kingdom, Canada, Spain, Australia, Romenia, Czech Republic, Greece, Italy, Finland, France, Poland, Sweden, United States, Norway, Austria, Netherlands, Switserland, Belgium, Denmark, Portugal, Ireland

Introduction

Klarna is a payment method available in Belgium and the Netherlands. It’s a payment method where the customer buys now and can pay later. Klarna allows customers to buy items with different types of payment options. Payments options include buy now, pay later or split payments in which the customer can pay for the item in future periods. Meanwhile, the merchants receives their/her money for the item once they ship it to the customer, regardless of the payment option chosen by the customer.

Guidelines

Once a customer selects to pay for their item with Klarna, an order in the Klarna system will be created by the CCV processing host. Once the order has been placed, the merchant will need to (partially) capture this order in order to receive money for that order.

Klarna indicates that a merchant is only allowed to capture an order after some or all the items are shipped to the customer.

Klarna requires order lines so that they know what the contents of an order are for their risk analysis and better customer experience. For merchants implementing the Klarna method with CCV, they will have to include order lines in their payment request, see Order Line.

Supported Transaction Types

Klarna defines two types of transactions:

  • Transactions for digital goods that can be delivered instantly to the customer. For these transactions, an order can be automatically captured once placed.
  • Transactions for physical goods that cannot be delivered instantly to the customer. When the transaction is finished, the merchant needs to process the order and ship some physical goods to the customer. Usually, there is a delay between the order of the item and the actual shipment of the item. For instance, if the item ordered is back-ordered, or it needs to be processed by a warehouse, etc. For these transactions, the merchant has to manually capture the order once the items are shipped to the customer.

CCV has implemented these different kind of transactions using different transaction types in the payment request.

Transactions for goods that can be delivered instantly

When a merchant creates a payment for a transaction with goods that can be delivered instantly, they must use the transaction type sale. When the transaction is completed successfully, the Klarna order is automatically captured.

Transactions for goods that cannot be delivered instantly

When a merchant creates a payment for a transaction with goods that cannot be delivered instantly, they must use the transaction type authorise. When the transaction is completed successfully, the Klarna order is created but not captured. The merchant must send a capture request to CCV, to initiate a capture with Klarna. The merchant is allowed to send (multiple) partial captures for the same order as long as the initial order amount isn’t exceeded. The merchant can optionally send a list of order lines with the capture to indicate which items (if not all) have been shipped to the customer.

If the merchant needs to cancel the order from Klarna a Reversal request must be sent. CCV will then cancel the outstanding Klarna order.

Method API details

Authorise an order

A Klarna payment may contain order lines per purchase item. A payment is not complete until it is captured. You must send a capture request to complete they payment and receive your money.

Klarna advices to include the billing and shipping information for their risk assessment.

Request

The following request will send an authorise request for 99.80 EUR, including 4 pieces of Wine Glass Large at 24,95/glass.

curl --request POST \
--url https://api.psp.ccv.eu/api/v1/payment \
--user X: \
--header 'Content-Type: application/json' \
-d '{
  "transactionType": "authorise",
  "currency": "eur",
  "amount": 99.80,
  "method": "klarna",
   "returnUrl": "http://shop/return?order=123456",
   "merchantOrderReference": "1234567890",
   "description": "Order 123456",
   "language": "nld",
   "billingState" : "Gelderland",
   "billingAddress": "Westervoortsedijk",
   "billingCity": "Arnhem",
   "billingPostalCode" : "6827AT",
   "billingCountry" : "NLD",
   "billingEmail": "dirk.teur@ccvlab.eu",
   "billingPhoneNumber" : "0882289849",
   "billingFirstName": "Dirk",
   "billingLastName" : "Teur",
   "billingHouseNumber" : "55",
   "billingHouseExtension" : "A",
   "shippingState" : "Overijssel",
   "shippingAddress": "Diamantstraat",
   "shippingCity": "Hengelo",
   "shippingPostalCode" : "7554TA",
   "shippingCountry" : "NLD",
   "shippingEmail": "ccv.shop@ccvlab.eu",
   "shippingPhoneNumber" : "0889907700",
   "shippingFirstName": "CCV",
   "shippingLastName" : "Shop",
   "shippingHouseNumber" : "3",
   "shippingHouseExtension" : "B",
   "orderLines": [
   {
           "type":"PHYSICAL",
            "name": "Wine Glass Large",
            "quantity": 4,
            "unit": "pcs",
            "totalPrice": 99.80,
            "unitPrice": 24.95
    }]
 }'

Response

Klarna provides the ability to show a QR code to the customer. The content of the QR code can be found in the response field details.qrCode.

{
    "currency": "eur",
    "details": {
        "qrCode": "https://pay.playground.klarna.com/eu/payments/e03495fa-2b33-9e15-981b-b6ba4b6e80e4/qr",
        "transactionId": "e03495fa-2b33-9e15-981b-b6ba4b6e80e4"
    },
    "paidout": "no",
    "lastUpdate": 1621427446205,
    "amount": 99.80,
    "returnUrl": "http://shop/return?order=123456",
    "reference": "K210519143046189CB87E190.1",
    "billingFirstName": "Dirk",
    "billingLastName": "Teur",
    "billingHouseNumber": "55",
    "billingHouseExtension": "A",
    "billingAddress": "Westervoortsedijk",
    "billingCity": "Arnhem",
    "billingState": "Gelderland",
    "billingPostalCode": "6827AT",
    "billingCountry": "NLD",
    "billingEmail": "dirk.teur@ccvlab.eu",
    "billingPhoneNumber": "0882289849",
    "shippingFirstName": "CCV",
    "shippingLastName": "Shop",
    "shippingHouseNumber": "3",
    "shippingHouseExtension": "B",
    "shippingAddress": "Diamantstraat",
    "shippingCity": "Hengelo",
    "shippingState": "Overijssel",
    "shippingPostalCode": "7554TA",
    "shippingCountry": "NLD",
    "shippingEmail": "ccv.shop@ccvlab.eu",
    "shippingPhoneNumber": "0889907700",
    "payUrl": "https://pay.playground.klarna.com/eu/9TBoO16",
    "cancelUrl": "https://api.psp.ccv.eu/api/v1/cancel?reference=K210519143046189CB87E190.1",
    "merchantOrderReference": "1234567890",
    "created": 1621427446205,
    "language": "nld",
    "method": "klarna",
    "type": "authorise",
    "description": "Order 123456",
    "status": "pending"
}

Klarna Payment Details

Name Description
transactionId The ID of the Hosted Payment Page Session of Klarna.
qrCode Contains the QR code that should be shown to the customer.

Capture an order

Request

If you decide to partially ship to order, you’ll need to send will send a partial capture request. Otherwise you may omit the field orderLines.

Note that in the following example the amount, 49.90, does not match the amount of the initial payment, 99.80. It is exactly the amount of the sum of all order lines and per order line the total of the quantity multiplied by the total price.

curl --request POST \
--url https://api.psp.ccv.eu/api/v1/capture \
--user X: \
--header 'Content-Type: application/json' \
-d '{
   "reference": "Reference of Auth",
   "amount" : 49.90,
   "orderLines": [
       {
           "type":"PHYSICAL",
            "name": "Wine Glass Large",
            "quantity": 2,
            "unit": "pcs",
            "totalPrice": 49.90,
            "unitPrice": 24.95
       }
   ]
}'

Response

{
  "currency": "eur",
  "details": {
    "expiryDate": 1623542400000,
    "orderId": "c3b799da-1704-30f1-95e5-e7a263bcd300"
  },
  "methodTransactionId": "c3b799da-1704-30f1-95e5-e7a263bcd300",
  "lastUpdate": 1621427752154,
  "amount": 49.90,
  "reference": "K210519143552140CB87E191.1",
  "merchantOrderReference": "1234567890",
  "created": 1621427752154,
  "language": "nld",
  "method": "klarna",
  "type": "capture",
  "status": "pending"
}

Klarna Capture Details

Name Description
orderId The ID of the order of Klarna. This matches the order available at Klarna.
expiryDate The date when the order expires at Klarna. All captures should be done before this date

Refund a captured order

Request

If the customer requested a refund, you will need send a (partial/full) refund request for the capture.

curl --request POST \
--url https://api.psp.ccv.eu/api/v1/refund \
--user X: \
--header 'Content-Type: application/json' \
-d '{
   "reference": "Reference of capture",
   "amount" : 49.90,
   "orderLines": [
       {
           "type":"PHYSICAL",
            "name": "Wine Glass Large",
            "quantity": 2,
            "unit": "pcs",
            "totalPrice": 49.90,
            "unitPrice": 24.95
       }
   ]
}'

Response

{
    "currency": "eur",
    "details": {
        "expiryDate": 1623542400000,
        "orderId": "c3b799da-1704-30f1-95e5-e7a263bcd300"
    },
    "methodTransactionId": "c3b799da-1704-30f1-95e5-e7a263bcd300",
    "lastUpdate": 1621427869660,
    "amount": 49.90,
    "reference": "K210519143749627CB87E196.1",
    "merchantOrderReference": "1234567890",
    "created": 1621427869660,
    "language": "nld",
    "method": "klarna",
    "type": "refund",
    "status": "pending"
}

Cancel / Reverse an open Klarna order

Request

If the merchant needs to cancel an open Klarna order a reversal request for the authorisation must be sent.

curl --request POST \
--url https://api.psp.ccv.eu/api/v1/reversal \
--user X: \
--header 'Content-Type: application/json' \
-d '{
   "reference": "Reference of auth"
}'

Response

{
  "currency": "eur",
  "details": {
    "expiryDate": 1623542400000,
    "orderId": "23bd73b0-a695-3648-a498-4c5607d7f968"
  },
  "methodTransactionId": "23bd73b0-a695-3648-a498-4c5607d7f968",
  "lastUpdate": 1621428125106,
  "amount": 99.80,
  "reference": "K210519144205088CB87E194.1",
  "merchantOrderReference": "1234567890",
  "created": 1621428125106,
  "language": "nld",
  "method": "klarna",
  "type": "reversal",
  "status": "pending"
}

Cancel a pending authorise payment

Request

When the customer is still in the middle of processing the payment with Klarna, you have the option to cancel the transaction before the order is created at Klarna. You will need to send a cancel request for the pending authorisation using the cancelUrl returned in the authorisation response.

curl --request POST \
--url https://api.psp.ccv.eu/api/v1/cancel?reference=ReferenceOfAuth \
--user X:

Response

An empty HTTP 200 OK.

Go to

Home
Documentation




Cookies Privacy Statement