slikair
slikair APIV2

Slikair API DOC - V2

JSON in, JSON out. Authenticate every call with a merchant-token header and send a unique Idempotency-Key on create calls.

Version 2.0support@slikair.com

Introduction

Environments

Sandbox

https://sandbox.slikair.online/api/

Mirrors live behaviour for testing with the Demo provider. Note that sandbox does not support payouts.

Live

Provided by the slikair team

Your live account and base URL are provided by the slikair team when you are ready to go live.

Introduction

Authentication

  • All requests and responses are JSON.
  • Standard HTTP verbs and status codes are used.
  • Authenticate every call with a merchant-token header.
  • Create calls require a unique Idempotency-Key header per payment attempt.
SchemeTypeWhere to find it
merchant-tokenapiKey in headerAuthenticates API requests. Found in My Account > Integration settings.
merchant_idapiKey-style credential identifierProvided by slikair. Found in My Account > Integration settings.
merchant_site_idapiKey-style site identifierProvided by slikair. Found in My Account > Integration settings.

Introduction

Merchant JWT

  • The tokenization endpoints /payment/create/tokenization and /payment/create/token require a merchant_jwt.
  • The JWT is a standard header.payload.signature string.
  • The payload is read for card data or the stored token reference.
  • The signature is verified downstream by the payment gateway and the Card Data Vault.
  • JWTs are signed with EdDSA (Ed25519); include kid in the header for the key id.
  • The signing key is provisioned during onboarding; contact support@slikair.com to enable tokenization and obtain it.
  • iat must be within 120 seconds of server time.

Tokenize (op = tokenize)

jtiUnique JWT id
optokenize
submerchant_id
iatIssued-at, within 120 seconds of server time
cardholder_numberCard number
cardholder_nameCardholder name
cardholder_exp_monthExpiry month
cardholder_exp_yearExpiry year

Pay with token (op = decrypt)

jtiUnique JWT id
opdecrypt
submerchant_id
iatIssued-at, within 120 seconds of server time
tokenStored card token reference

API

Payments

Create a customer payment and read its current state.

POST/payment/create

Create Payment

operationId: createPaymentV2

Initiates a payment transaction. The request structure varies by payment_method.

Required headers

merchant-tokenContent-TypeIdempotency-Key

Request body

Example variants

credit_cardcryptoopen_bankingblikgooglepayapplepayinterac

Responses

200Payment create response
400Error response
401Error response
500Error response
Example: credit_card
curl -X POST https://devsilo.xyz/api/v2/payment/create \
  -H "merchant-token: $SLIKAIR_MERCHANT_TOKEN" \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "merchant_id": "9e07802d51264b02b4b3ef09dfb94219",
    "merchant_site_id": "1234",
    "payment_method": "credit_card",
    "device_ip": "203.0.113.10",
    "amount": 99.99,
    "currency": "EUR",
    "email": "john.doe@example.com",
    "request_id": "order-1001",
    "country": "NLD",
    "first_name": "John",
    "last_name": "Doe",
    "notification_link": "https://example.com/webhook",
    "success_url": "https://example.com/success",
    "pending_url": "https://example.com/pending",
    "fail_url": "https://example.com/fail",
    "back_url": "https://example.com/cart",
    "mobile": "+31600000000",
    "address": "Main Street 1",
    "city": "Amsterdam",
    "zipCode": "1011AB",
    "state": "NH",
    "birthDate": "1990-01-01",
    "cardNum": "4111111111111111",
    "cardHolder": "John Doe",
    "cardExpireMonth": "12",
    "cardExpireYear": "2030",
    "cardCvv": "123"
  }'
POST/payment/get-status

Get Payment Status

operationId: getPaymentStatusV2

Retrieves the current status of a payment transaction.

Required headers

merchant-tokenContent-Type

Request body

Responses

200Payment status response
400Error responseValidation error
401Error responseUnauthorized
Example request
{
  "merchant_id": "9e07802d51264b02b4b3ef09dfb94219",
  "payin_id": "b0f8f0f4-1f5d-4d1a-8f0e-9c1d2e3f4a5b"
}

API

Tokenization

Vault card data with a merchant-signed JWT, then charge the stored token.

POST/payment/create/tokenization

Create Payment Tokenization

operationId: createTokenization

Initiates a credit-card payment and vaults the card for later use with /payment/create/token. The tokenization result arrives asynchronously at tokenization_notification_url. Credit cards only, consent must be true, and card data is supplied inside merchant_jwt.

Required headers

merchant-tokenContent-TypeIdempotency-Key

Request body

Example variants

credit_card_tokenize

Responses

200Payment create response
400Error response
401Error response
500Error response
Example: tokenization JWT payload
{
  "jti": "e0f0a2f4-6f1e-4a5b-9a0e-1f2c3d4e5f60",
  "op": "tokenize",
  "sub": "9e07802d51264b02b4b3ef09dfb94219",
  "iat": 1735689600,
  "cardholder_number": "4111111111111111",
  "cardholder_name": "John Doe",
  "cardholder_exp_month": "12",
  "cardholder_exp_year": "2030"
}
POST/payment/create/token

Create Payment with Token

operationId: createWithToken

Charges a vaulted card by redeeming the token inside merchant_jwt. No PAN, cardholder name or expiry is sent; CVV is collected on every charge. The merchant_jwt payload uses op=decrypt, sub and token.

Required headers

merchant-tokenContent-TypeIdempotency-Key

Request body

Example variants

pay_with_token

Responses

200Payment create response
400Error response
401Error response
500Error response
Example: pay-with-token JWT payload
{
  "jti": "b71c9f0a-2c33-4d7e-8f61-52a0d9c7e311",
  "op": "decrypt",
  "sub": "9e07802d51264b02b4b3ef09dfb94219",
  "iat": 1735689600,
  "token": "tok_9f8c1b2a3d4e"
}

API

Payouts

Send funds to the consumer and track the payout state.

POST/payouts/create

Create payout

operationId: createPayoutV2

Creates a payout withdrawal with multiple methods and modes. Sandbox does not support payouts.

Required headers

merchant-tokenContent-TypeIdempotency-Key

Request body

Example variants

credit_cardcryptoopen_bankingfps

Responses

200Payout create response
400Payout create error response
401Payout error response
500Payout error response
Example: credit_card payout
{
  "merchant_id": "9e07802d51264b02b4b3ef09dfb94219",
  "site_id": "1234",
  "method": "credit_card",
  "mode": "direct",
  "amount": 50.00,
  "currency": "EUR",
  "merchantReference": "payout-2001",
  "country": "NLD",
  "notificationUrl": "https://example.com/payout-webhook",
  "customer": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com",
    "phone": "+31600000000"
  },
  "paymentDetails": {
    "method": "credit_card",
    "cardNum": "4111111111111111",
    "cardHolder": "John Doe",
    "cardExpireMonth": "12",
    "cardExpireYear": "2030"
  }
}
POST/payouts/get-status

Get Payout Status

operationId: getPayoutStatusV2

Retrieves the payout status by payout ID.

Required headers

merchant-tokenContent-Type

Request body

Responses

200Payout status response
400Payout error response
500Payout error response

API

Direct Merchant Notifications

Server-to-server notifications delivered to your notification URL. Respond 2xx quickly and process asynchronously.

EVENTv2_payin_notification

PayIn Notification (DMN)

Server-to-server notification with the final pay-in result.

BodyPay-in notification body200 acknowledges receipt
EVENTv2_tokenization_notification

Tokenization Result Notification

Delivered to tokenization_notification_url with the vaulted token and card metadata.

BodyTokenization notification body200 acknowledges receipt
EVENTv2_payout_notification

Payout notification

Server-to-server notification with the payout result.

BodyPayout notification body200 acknowledges receipt

Reference

Schemas

Reference

Payment methods

Accepted payment_method values.

credit_cardcredit_card_ftdopen_bankingcryptoblikgooglepayapplepayinterac

Reference

Payout methods

Accepted method values on payouts.

credit_cardopen_bankingcryptofps

Reference

Status codes

Payment status codes

100Pending redirect
101Pending
200Success
301User has deposit in progress, please wait 60 seconds
302Declined due to risk decision
303Customer reached daily deposit limit for this method
304KYC rejected
305User error
306Customer reached daily decline limit for this method
317Invalid CVV - CVV should be between 3 or 4 digits long
318Invalid expiration date - card date must be valid and not expired
319Invalid cardholder name - card holder should be a minimum of one words
320BIN block enforced
401Unsupported country
402Unsupported currency
500Provider declined
501System error
502Unauthorized
503No amount in the request
504Amount is not a valid value
505Wrong site id
506Missing payment method
507Wrong payment method for this provider
508Wrong payment method
509Payment method not enabled for site
510Missing params
511Invalid checksum
512Invalid params values
513User exceeded daily deposit limit by provider
514Merchant not active - contact support team
515An unexpected error occurred. Please try again in a few moments.
516Transaction could not be processed at this time.
517Credit card failed Luhn validation.
518There was an issue with this transaction, please try again.

Payout status codes

P100Payout initiated
P101Payout processing
P200Payout succeeded
C402Invalid or missing required fields in the request
C403Merchant payout wallet is missing
C404Currency not supported for payout
C405Insufficient balance in the wallet for payout
C501General gateway declined

Reference

Reason codes

INVALID_REQUESTINVALID_OR_EXPIRED_TOKENINVALID_MERCHANT_JWTINVALID_CHECKSUMINVALID_PARAMSMISSING_PARAMSSYSTEM_ERRORTRANSIENT_ERRORNO_ROUTE_AVAILABLEINVALID_SITEPAYMENT_METHOD_NOT_ENABLEDMERCHANT_INACTIVEUNSUPPORTED_COUNTRYUNSUPPORTED_CURRENCYMISSING_PAYMENT_METHODINVALID_PAYMENT_METHODINVALID_PAYMENT_METHOD_FOR_PROVIDERINVALID_CARD_DATAINVALID_CVVINVALID_CARD_NUMBERINVALID_EXPIRYINVALID_CARDHOLDER_NAMEINVALID_ADDRESSINVALID_PHONETHREE_DS_FAILEDUSER_ABANDONEDMISSING_AMOUNTINVALID_AMOUNTAMOUNT_BELOW_MINIMUMINSUFFICIENT_FUNDSRISK_BLOCKEDBLACKLISTED_BLOCKEDBIN_BLACKLISTEDEXPIRED_CARDDO_NOT_HONORAUTHENTICATION_FAILEDGENERIC_DECLINEDAILY_LIMIT_EXCEEDEDISSUER_DECLINED_NO_INFORESTRICTED_CARDLOST_OR_STOLEN_CARDCARD_LIMIT_EXCEEDEDCANCELLED_BY_BANKDECLINE_LIMIT_EXCEEDEDGATEWAY_UNAVAILABLEGATEWAY_TIMEOUT

Need something that is not covered here? Talk to an integration engineer.