Card Link (v1)

Download OpenAPI specification:Download

Card Link is the concept of resolving a payment method to a non-sensitive 3rd party id.

Card Link may be used in multiple use-cases, for example

  1. Loyalty member id lookup A card is enrolled with a member id
  2. Company card identification A card enrolled with a company id
  3. Group splitting Cards are enrolled with a group id which can be used to e.g. tell groups apart

The basic idea in Card Link is that when the card is used, the payment terminal returns a card token or PAR value, which can then be used to look up a previously defined id for that card. The id (userId) is set at enrolment of the payment card, and could be e.g. a loyalty member id or any other desired reference.

UserId for a card cannot be updated at a later date.

Introduction

Features

Provides Card Link lookups using the card token and card manipulation such as enrolment via cardframe, list, delete, etc. via Storebox Card API.

Extending Basic Card Link functionality via terminals running Viking and OnePA. This allows in-store card enrolment and card lookups through Baxi commands.

API based card enrolment

Via a dedicated PCI compliant API cards can be enrolled programmatically. Please note that adding cards programmatically carries extensive security requirements and may even require PCI-DSS certification on integrator side.

Data exchange

All data exchange is in JSON and is UTF-8 encoded. To ensure forward compatibility, client implementations must be resilient to new elements being added to the API responses in the future.

Rate limiting

The API has the following rate limiting to ensure performant operation:

Operation Limit
Add card 1 per second
List/delete card 10 per second
Lookup card 1000 per second

If higher rates are required, Storebox must be contacted in advance to avoid automatic blacklisting.

Environments

The table below describes the two environments that are available.

Environment Description
Test All development should be done using this environment. The implementation is end-to-end testable using test equipment, for example test terminals. Note that this environment also acts as internal test environment, so there may be short outages.
Production Live environment that works with production terminal

Getting Started

To start using Card Link you must first get an API key from Storebox.

Card manipulation using Card API

Handling of card life-cycle management like, add, delete and list is done through Card API. After a card has been added it is available for card link lookups thus it is strongly recommended to implement card manipulation, or at least adding, before card lookup.

Interaction with Card API is server to server. For card enrolment, the generated CardFrame URL is supplied to the client.

Cards enrolled via Card API CardFrame are based on user interaction and are immediately active.

Cards enrolled as part of Terminal Card Link (in-store via terminal) must be activated in order to become available for lookups.

Card lookup

Card lookup is typically done by the ECR before a transaction, so that e.g. the amount can be adjusted according to a discount level or likewise. The lookup may, of course, be done at any favorable point in the payment process.

Using Basic Card Link the ECR fetches the card token from the terminal and calls Card Link lookup.

The result will either be a 404 Not Found if the card is unknown, otherwise the user id and a card id is returned.

Terminology

Term Description
Token A token is a non-sensitive representation of the payment card, and cannot be used for payment nor any other actions with fiscal impact. The value may change at random for the same payment card. Tokens are not standard and thus implementation highly depends on the terminal Payment Application (PA).
cardRef A token as described above. Available via Viking and OnePA.
Funding PAN (FPAN) The card number on the physical payment card
Token PAN (TPAN) A virtual card number that is issued when a payment card is added to a wallet like Apple Pay or Google Pay. A TPAN is issued per device.
PAR Payment Account Reference (PAR) is a standard specified by EMVCo which is static value for cross referencing the FPAN and any derived TPANs. One can think of a PAR value as a shared token across the physical and any virtual cards derived hereof.

Typical flow description

  1. Card Lookup
  2. Card Enrolment
  3. Card Activation
  4. Online card enrolment and management
  5. Short path to receipt delivery Typical Flow - open separately to zoom

Card lookup via terminal

Check if a card is known and which userId is registered on a known card using the terminal operation getAsset.

Lookup happens towards Storebox Card Link API from the terminal instead of via integration to Storebox CardLink API.

Baxi structure is defined by Nets. Currently the response from Storebox is contained as payload under da.dam2ra.getasset.asset.attributes. Card Link API responses are contained within the cardlinkapi object under the root object payload from Storebox' systems.

Besides structural differences, the response via getAsset is the same as Card Lookup in Basic Card Link.

Example of succesful card lookup response via Baxi

{
    "payload": {
        "cardlinkapi": {
            "users": [
                {
                    "userId": "511618771",
                    "externalCardId": "ha0u3xb395c4lps1hbfajrdbotq3f4h7"
                },
                {
                    "userId": "797745330",
                    "externalCardId": "x83is6m0uf3c55icykcihhraizfsnaj3"
                }
            ]
        }
    }
}

Card enrolment via terminal

Available via the Baxi insertAsset operation and delivers the card to Storebox in a 'pending verification' state. Card awaits activation call.

Example of succesful card enrolment response via Baxi

{  
    "payload": {
        "id": "800unxobgxyrguqqv11ankz0vsuy2p5w",
        "posapi": {
            "userId": [
                {
                    "type": "pan",
                    "value": "f37388e0-0a1f-11eb-b596-5c4242535400"
                }
            ]
        },
        "cardlinkapi": {
            "activationCode": "969fc04a-d102-4c2e-b04f-808d0b9ea5d6"
        }
    }
}

Baxi status codes and documentation

Status codes and messages are Baxi specific. Documentation must be provided by Nets. For complete documentation of getAsset and insertAsset in a Baxi context, please refer to NETS documentation.

For a quick'n'dirty flow introduction you may consult our getting started guide to Viking, but please note that it is NOT usable as direct copy/paste reference as Baxi action codes etc. may have changed and thus Nets Baxi documentation must be consulted.