Create Cards

Cards serve as versatile solutions for various business needs, such as facilitating payments, issuing refunds, providing discounts, or granting access to services. This page will guide you through creating a card with Lynx API and how to verify it in Nayax Core.

Card Types

Nayax offers several types of cards, each designed for a distinct purpose:

  • Prepaid Card: Preloaded with funds, prepaid cards are ideal for controlled spending. They are commonly used for gift cards, employee stipends, or consumer transactions and offer convenience and security. This
  • Technician Card: Issued to service technicians or employees, these cards facilitate access to specific systems or authorize work-related transactions, ensuring secure operations in the field.
  • Refund Card: Designed to process refunds, these cards efficiently return funds to customers, simplifying financial workflows and enhancing customer satisfaction.
  • Discount Card: Used in loyalty programs or promotional campaigns, discount cards offer exclusive benefits like reduced prices or special offers, encouraging customer retention and engagement.

In this guide we will be showing API request creating a prepaid card, but all of them can be created in the same way.

Card Creation

To create a new virtual credit card with Lynx API you can use the POST method on two different endpoints:

🚧

Authentication

Refer to the Security & Token page of this documentation to learn how to access your tokens, and how to properly use it to authenticate your API requests.

The sections below will guide you through creating a card using any of these options through Lynx API.

V1 endpoint

The V1 option is more straightforward, with only the essential fields for basic card creation and minimal optional fields. To create the card, send a POST request to the Create Virtual Card endpoint, filling in the card details in the body parameters. See the example in the code block below:

curl --request POST \
     --url https://qa-lynx.nayax.com/operational/v1/cards \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "ActorID": 2001492652,
  "CardDisplayNumber": "1234-5678-9012",
  "CardUniqueIdentifier": "UNIQUE-CARD-12345",
  "CardHolderName": "John Doe",
  "CardStatus": 1,
  "CardType": 33,
  "CardUserIdentity": "USER12345",
  "CountryID": 840,
  "Currency": 1,
  "MobileNumber": "0505555555",
  "MemberType": 801,
  "CardActivationDate": "2024-11-14T09:00:00Z",
  "CardPhysicalType": 30000529,
  "CardImageUrl": "https://example.com/image.png",
  "CardExpirationDate": "2025-11-14T09:00:00Z",
  "CardNote": "Prepaid card for internal use",
  "wd_limits_money": 5000.00,
  "use_wd_limit": true,
  "wd_limits_trans": 100
}'

These are the mandatory fields when using the V1 option:

  • ActorID: Operator ID tracks the card issuer.
  • CardUniqueIdentifier: A unique identifier for the card.
  • CardStatus: Card's status (1 = Active, 2 = Inactive).
  • CardType: Type of card.
    • Prepaid Card: 33
    • Technician Card: 31
    • Refund Card: 34
    • Discount Card: 30000616
  • CountryID: Country code based on ISO standards (viewable in the "Lookups" section).
  • Currency: Currency code.
  • CardPhysicalType: The physical type of the card, options are:
    • 0000528: Swipe Card
    • 30000529: Contact Card
    • 30000530: Contactless Card
    • 30000531: Contactless Sticker
    • 30000532: Monyx App Virtual ID
    • 30000533: Custom 3rd Party ID
    • 30000534: Dual Card Contact + Contactless
    • 30000535: Dual Card Swipe + Contactless
    • 30000601: Monyx Virtual Card
    • 943237560: QR Code

A successful request will return a JSON object containing the details of the newly created card.

V2 endpoint

The V2 option provides extended functionality, including additional fields for detailed customization. This version lets you specify card type, physical type, membership level, activation and expiration dates, and group limits.
To create the card, send a POST request to the Create New Card endpoint, filling in the card details in the body parameters. See the example in the code block below:

curl --request POST \
     --url https://qa-lynx.nayax.com/operational/v2/cards \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "CardDetails": {
    "ActorID": 2001492652,
    "CardUniqueIdentifier": "UNIQUE-CARD-67890",
    "CardDisplayNumber": "9876-5432-1234",
    "CardTypeID": 31,
    "PhysicalTypeID": 30000528,
    "Notes": "Technician card with custom limits",
    "Status": 1,
    "ExternalApplicationUserID": "EXT-USER-56789"
  },
  "CardHolderDetails": {
    "CardHolderName": "Alice Doe",
    "UserIdentity": "USER-56789",
    "CountryID": 840,
    "MobileNumber": "1234567890",
    "Email": "[email protected]",
    "MemberTypeID": 801
  },
  "CardCreditAttributes": {
    "CurrencyID": 1,
    "Credit": 100,
    "RevalueCredit": 50,
    "CreditTypeMoneyBit": true,
    "CreditAccumulateBit": true,
    "CreditSingleUseBit": false,
    "RevalueCashBit": true,
    "RevalueCreditCardBit": true,
    "AmountMonthlyReload": 200,
    "TransactionsMonthlyReload": 20,
    "DiscountTypeBit": 1,
    "DiscountValue": 10
  },
  "CardCreditLimits": {
    "AmountDailyLimit": 500,
    "AmountWeeklyLimit": 2000,
    "TransactionsDailyLimit": 10,
    "TransactionsWeeklyLimit": 50,
    "AmountMonthlyLimit": 10000,
    "TransactionsMonthlyLimit": 200,
    "DiscountTransactionsTotalLimit": 100,
    "MaxRevalueAmountLimit": 1000,
    "WeekDayLimitEnabledBit": true,
    "WeekDayAmountLimit": "100,200,300,400,500,600,700",
    "WeekDayTransactionLimit": "10,20,30,40,50,60,70"
  },
  "CardDateRules": {
    "ActivationDate": "2024-11-14T09:00:00Z",
    "ExpirationDate": "2025-11-14T09:00:00Z",
    "RevalueExpirationDate": "2025-10-10T09:00:00Z",
    "SetSingleUseDate": "2024-12-01T09:00:00Z",
    "RemoveSingleUseDate": "2024-12-15T09:00:00Z"
  },
  "CardRevalueRewardRules": [
    {
      "RuleID": 1,
      "RewardActorID": 123456,
      "Status": true,
      "RevalueAmount": 100,
      "RewardValueTypeBit": true,
      "RewardValue": 5
    }
  ],
  "GroupLocationLimits": [
    {
      "CardGroupEnabledBit": true,
      "GroupName": "Group A",
      "CardGroupId": 123,
      "GroupDailyLimit": 1000
    }
  ]
}'

These are the mandatory fields when using the V2 option:

  • CardDetails
    • ActorID: Operator ID.
    • CardUniqueIdentifier: Unique card identifier.
    • CardTypeID: Type of card.
    • PhysicalTypeID: Physical card type.
    • Status: 1 for Active.
  • CardHolderDetails
    • CardHolderName: Name of the cardholder.
    • CountryID: ISO country code.
    • MemberTypeID: Membership type.
  • CardCreditAttributes
    • CurrencyID: Currency code.

A successful request will return a JSON object with the details of the created card, providing flexibility and control over card features.

Verifying the card in Nayax Core

Once you send the request to create the card using any endpoints mentioned above, you can go to Nayax Core and check if the card is present in the Card Management screen. Follow the steps below to do so.

  1. Access your Nayax Core Dashboard

  2. On the top menu, navigate to Consumers > Card Management

  3. Now, you can search for the created card and select it from the list.

The card created through the Lynx API is available in the Nayax Core, confirming it was successfully created.

📘

the ExternalApplicationUserID field won't appear in Nayax Core, but it would appear when using the GET method of the cards endpoint.