Skip to content

Integration guide

Use our Server-to-Server APIs to receive payments directly from your backend and have full control over your checkout experience.

This integration model lets you collect payment data on your side and submit it securely to SIBS Gateway for processing.
Follow the steps below to start accepting payments efficiently and safely.

Step 1: Create an order

When your shopper is ready to pay, you start by creating an order. This triggers a transaction in the system and defines the shopper, merchant, and transaction information needed for payment processing.

The available endpoint destination URL:

EnvironmentURLOperation Method & EndpointOperation Description
PRODapi.sibsgateway.comPOST api/version-id/paymentsCreates a transaction and prepares it for payment processing.
TESTstargate.qly.site[1|2].sibs.ptPOST api/version-id/paymentsCreates a transaction in test environment.
Notification

Important – Test credentials

If a merchant intends to integrate in TEST environment, dedicated TEST credentials must be requested.
Production credentials must not be used in TEST environments.

The order creation process requires three main actions:

Action 1: Define the header, add merchant and customer information
Action 2: Add transaction information to your order
Action 3: Complete your order with additional and optional configuration
Action 1: Define the header, add merchant and customer information

In this action, you define the headers required for authentication and provide the merchant and shopper information needed to initiate the transaction.

This ensures the API can correctly identify the merchant, validate permissions, and associate the shopper with the order.
Check below the full description of the required data to start creating your order.

Header parameters
FieldTypeRequiredDescriptionExample
Content-TypestringMandatoryDefines the content type of the request.application/json
AuthorizationstringMandatoryBearer token for authentication.Bearer xxxxxxxx
x-ibm-client-idstringMandatoryToken identifying the client organization, provided during onboarding.123456789
Request parameters

Below are the core objects required for a standard server-to-server checkout integration. Each object is shown with its main fields, and nested subfields are presented using dot notation for clarity. Optional metadata is grouped together to avoid repetition.

Notification

All examples shown in this documentation are illustrative.

Merchants must provide valid data according to their local regulatory, banking, and tax requirements.

Field validation rules may vary depending on:

  • Merchant country
  • Acquirer configuration
  • Payment method
  • Regulatory obligations (e.g., PSD2/SCA)

FieldTypeConditionDescription
merchantobjectMandatoryMerchant details. Optional element to query transaction status.
customerobjectMandatoryCustomer details.
transactionobjectMandatoryTransaction details (amount, method, timestamp).
infoobjectMandatoryCustomer device and additional info.
extendedInfoarray of key-valueOptionalKey-value tuples for extra merchant info.
customerinfoArrayOptionalAdditional customer metadata in key-value format.
1. Merchant (object) – Mandatory

Merchant details are required to identify and process the transaction.

FieldTypeConditionDescriptionExample
merchantobjectMandatoryMerchant object container.
merchant.terminalIDnumeric (≤10)MandatoryMerchant Terminal Identification24
merchant.channelstringMandatoryMerchant channelWeb
merchant.merchantTransactionIDstring (≤1000)MandatoryUnique transaction IDOrder_20260219_001
merchant.transactionDescriptionString (≤4000)OptionalDescription of transactionPayment for order #001
merchant.shopURLstringOptionalMerchant website URL used for transaction-related redirectshttps://myshop.pl
2. Customer (object) – Mandatory

Customer details include personal, billing, and shipping information.

FieldTypeConditionDescriptionExample
customerobjectMandatoryCustomer object container
customer.customerInfoobjectMandatoryPredefined customer information
customer.shippingAddressobjectOptionalCustomer shipping address
customer.shippingAddressobjectOptionalCustomer billing address
customer.billingAddressSameAsShippingAddressbooleanOptionalFlag indicating if billing address is same as shippingTrue
2.1 Customer Info (subobject) – Mandatory
FieldTypeConditionDescriptionExample
customer.customerInfo.customerNamestringMandatoryShopper’s full nameJan Kowalski
customer.customerInfo.customerEmailstringMandatoryShopper’s emailjan.kowalski@example.pl
customer.customerInfo.customerPhonestringConditionalPhone number in E.164 format, must start with “+” and maximum 15 digits.
Mandatory if paymentMethod is:
“MBWY” – “MB Way”. Otherwise, optional for remaining methods.
+48500123456
customer.customerInfo.customerLanguagestring (ISO 639-1)ConditionalMandatory if paymentMethod is:
“BNCT” – “Bancontact”;
“IDEL” – “iDEAL”;”BIZM”-“Bizum”.
Otherwise, optional for remaining methods.
PL
customer.customerInfo.shippingAddressAddressMandatoryCustomer shipping address when applicable
customer.customerInfo.billingAddressAddressMandatoryCustomer billing address
customer.customerInfo.billingAddressSameAsAddressBooleanOptionalTrue if billing address equals shippingTrue
2.2 Shipping Address (subobject) – Mandatory when applicable

Used when physical goods are involved.

FieldTypeConditionDescriptionExample
customer.shippingAddress.street1string (≤70)MandatoryStreet line 1ul. Marszałkowska 10
customer.shippingAddress.street2string (≤70)OptionalStreet line 2Apartment 5
customer.shippingAddress.citystring (≤35)MandatoryCity / townWarszawa
customer.shippingAddress.postcodestring (≤16)MandatoryPostal code00-001
customer.shippingAddress.countrySubDivisionstring (≤35, ISO 3166-1 Alpha 2)OptionalState / Province codePL
customer.shippingAddress.countrystring (ISO 3166-1 Alpha 2)MandatoryCountry codePL
2.3 Billing Address (subobject) – Optional
FieldTypeConditionDescriptionExample
customer.billingAddress.street1string (≤70)MandatoryStreet line 1ul. Marszałkowska 10
customer.billingAddress.street2string (≤70)OptionalStreet line 2
customer.billingAddress.citystring (≤35)MandatoryCity / townWarszawa
customer.billingAddress.postcodestring (≤16)MandatoryPostal code00-001
customer.billingAddress.countrySubDivisionstring (≤35, ISO 3166-1 Alpha 2)OptionalState / Province codePL
customer.billingAddress.countrystringConditionalBilling country code (ISO 3166-1 Alpha 2)PL
3. Info (object) – Mandatory

Additional contextual information about the transaction, including device data.

FieldTypeConditionDescriptionExample
infoobjectMandatoryAdditional contextual information about the transaction.
info.deviceInfoobjectMandatoryCustomer device information.
3.1 Device Info (subobject) – Mandatory
FieldTypeConditionDescriptionExample
info.deviceInfo.browserAcceptHeaderstringOptionalBrowser Accept Headertext/html
info.deviceInfo.browserJavaEnabledstringOptionalBrowser Java EnabledTrue
info.deviceInfo.browserJavascriptEnabledstringOptionalBrowser Javascript EnabledTrue
info.deviceInfo.browserLanguagestringOptionalBrowser Languageen-US
info.deviceInfo.browserColorDepthstringOptionalBrowser Color Depth24
info.deviceInfo.browserScreenHeightstringOptionalBrowser Screen Height1080
info.deviceInfo.browserScreenWidthstringOptionalBrowser Screen Width1920
info.deviceInfo.browserTZstringOptionalBrowser Time ZoneGMT+1
info.deviceInfo.browserUserAgentstringOptionalBrowser User AgentMozilla/5.0
info.deviceInfo.systemFamilystringOptionalSystem FamilyWindows
info.deviceInfo.systemVersionstringOptionalSystem Version10
info.deviceInfo.systemArchitecturestringOptionalSystem Architecturex64
info.deviceInfo.deviceManufacturerstringOptionalDevice ManufacturerDell
info.deviceInfo.deviceModelstringOptionalDevice ModelXPS 15
info.deviceInfo.deviceIDstringOptionalDevice Unique ID12345-6789
info.deviceInfo.applicationNamestringOptionalApplication Name
Note: Form must fill this field with “Form:applcationName”.
Form:Edge
info.deviceInfo.applicationVersionstringOptionalApplication Version
Note: Form must fill this field with “formVersion:applicationVersion”.
2.0:130
info.deviceInfo.geoLocalizationstringOptionalGeolocation52.2297,21.0122
info.deviceInfo.ipAddressstringOptionalIP Address192.168.1.1
Optional Generic Extension Fields

The following fields allow merchants to provide additional contextual or custom metadata not covered by the core schema. These fields are optional and may be used to extend transaction or customer information in a flexible key-value structure.

extendedInfo (object) – Optional

Generic key-value data related to the transaction.

FieldTypeConditionDescriptionExample
extendedInfoArray of key-valueOptionalContainer for additional merchant information.extendedInfo
extendedInfo.keystringMandatoryExtension property key.loyaltyId
extendedInfo.valuestringMandatoryExtension property value.LTY-998877
customerInfo (subobject) – Optional

Additional customer metadata provided as key-value pairs.

FieldTypeConditionDescriptionExample
customerInfoArray of key-valueOptionalContainer for additional customer metadata.
customerInfo.keystringMandatoryCustomer metadata key.internalSegment
customerInfo .valuestringMandatoryCustomer metadata value.VIP
Action 2: Add Transaction Information

This action defines the transaction itself, including the amount, payment method, timestamp, and other attributes necessary to process the payment correctly.
Now it is time to include your transaction information based on the payment methods you want to render in your paywall.

transaction (object) – Mandatory
FieldTypeConditionDescriptionExample
transactionobjectMandatoryTransaction details (amount, method, timestamp).
transaction.transactionTimeStampISODateTimeMandatoryTransaction creation timestamp2026-02-19T15:00:00.000Z
transaction.descriptionstring (<=70)MandatoryTransaction short descriptionPayment for Order #20260220
transaction.motobooleanMandatoryIndicates whether the transaction is a Mail Order / Telephone Order (MOTO) transaction.False
transaction.paymentTypestringMandatoryType of payment. allowed values:
“PURS”– Purchase
“AUTH”– Authorization
PURS (Purchase)
transaction.paymentMethodarrayMandatoryPossible values are:
“CARD” – Card
“TOKEN” – Token “PAY_BY_LINK”- Pay by Link “BLIK” – BLIK
“XPAY” – xPay
“IDEL” – Ideal
“BNCT” – Bancontact “SPDD” – SEPA Direct Debit “CRTB” – Cartes Bancaires “MBWY” – “MB WAY” “BIZM” – “Bizum”
[“CARD”,”BLIK”,”TOKEN”]
transaction.amountobjectMandatoryAmount object containing transaction value and currency
Amount (object) – Mandatory
FieldTypeConditionDescriptionExample
transaction.amountobjectMandatoryTransaction amount and currency
transaction.amount.valuedoubleMandatoryAmount of transaction50.5
transaction.amount.currencystringMandatoryCurrency ISO 4217PLN
Notification

Check how to perform one-time purchase or a pre-authorized capture.

Action 3: Additional Configuration

In this step, we show you that there is plenty of optional information that you add to complete your order creation. Please check below the additional information based on some use cases:

Here is an example of how to create an order:

Request body:
</> JSON
{
  "merchant": {
    "terminalId": 47215,
    "channel": "web",
    "merchantTransactionId": "ORDER_20260309_001",
    "transactionDescription": "Payment for order #1001",
    "shopURL": "https://myshop.com"
  },
  "customer": {
    "customerInfo": {
      "customerName": "Jan Kowalski",
      "customerEmail": "jan.kowalski@example.com",
      "customerPhone": "+48500123456",
      "customerLanguage": "PL"
    },
    "shippingAddress": {
      "street1": "Marszalkowska 10",
      "street2": "Apartment 5",
      "city": "Warsaw",
      "postcode": "00-001",
      "countrySubDivision": "PL",
      "country": "PL"
    },
    "billingAddressSameAsShippingAddress": true
  },
  "transaction": {
    "transactionTimestamp": "2026-03-09T14:30:00.000Z",
    "description": "Order payment",
    "moto": false,
    "paymentType": "PURS",
    "paymentMethod": [
      "CARD",
      "BLIK"
    ],
    "amount": {
      "value": 50.50,
      "currency": "EUR"
    }
  },
  "info": {
    "deviceInfo": {
      "browserAcceptHeader": "text/html",
      "browserJavaEnabled": "true",
      "browserJavascriptEnabled": "true",
      "browserLanguage": "en-US",
      "browserColorDepth": "24",
      "browserScreenHeight": "1080",
      "browserScreenWidth": "1920",
      "browserTZ": "GMT+1",
      "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
      "systemFamily": "Windows",
      "systemVersion": "10",
      "systemArchitecture": "x64",
      "deviceManufacturer": "Dell",
      "deviceModel": "XPS 15",
      "deviceID": "12345-67890",
      "applicationName": "MyShopCheckout",
      "applicationVersion": "1.0",
      "geoLocalization": "52.2297,21.0122",
      "ipAddress": "192.168.1.10"
    }
  },
  "extendedInfo": [
    {
      "key": "loyaltyId",
      "value": "LTY-998877"
    }
  ]
}

Step 2: Get the response

After submitting the POST /api/{version-id}/payments request, SIBS Gateway returns a structured JSON response containing the transaction status, technical execution details, available payment methods and security elements.

At this stage, your backend should:

  • Validate the processing status
  • Validate the transactionSignature
  • Store the transaction identifiers
  • Prepare the frontend checkout experience according to the returned data
Response Parameters

The following table describes the main fields returned in the API response.

FieldTypeConditionDescriptionExample
returnStatusObjectMandatoryObject that defines the status of the processed transaction.
transactionIDstring (<=36)ConditionalUnique identifier assigned to the transaction by SIBS Gateway.42f59038f3f14e618d091da8bf3b717e9999
transactionSignaturestringConditionalDigital signature of the transaction response. You must validate this signature in your backend to ensure response integrity and authenticity.eyJ0eElkIjoiZzB6Q…
amountObjectConditionalObject that defines the transaction amount and currency.
merchantObjectConditionalObject that contains the merchant identification and transaction configuration data required for payment processing.
actionResponseObjectOptionalObject returned when additional action is required before payment completion.
paymentMethodListArray of stringMandatoryList of available payment methods for this order.
Possible values are:
“CARD” – Card
“TOKEN” – Token
“PAY_BY_LINK”- Pay by Link
“BLIK” – BLIK
“XPAY” – xPay
“IDEL” – Ideal
“BNCT” – Bancontact;
“SPDD” – SEPA Direct Debit
“CRTB” – Cartes Bancaires
“MBWY” – “MB WAY”
“BIZM” – “Bizum”
[“CARD”,”BLIK”]
tokenListArray of ObjectConditionalList of payment tokens available for the shopper.
expirystring (ISODateTime)MandatoryExpiration date and time of the order.2026-02-19T20:30:00Z
executionObjectMandatoryContains technical timestamps related to the processing of the request.
regulationListArray of ObjectMandatoryList of regulations and legal information applied to the service.
actionResponseObjectOptionalReturned only when an additional action is required to complete the transaction.
returnStatus (Object) – Mandatory

This object provides the result of the processed transaction.

FieldTypeConditionDescriptionExample
returnStatusObjectMandatoryObject that defines the status of the processed transaction.
returnStatus.statusCodestringMandatoryTransaction status code. “000” indicates success. Any other value represents an error.000
returnStatus.statusMsgstringMandatoryMessage of the processed transaction status.Success
returnStatus.statusDescriptionstringMandatoryDescription of the processed transaction status.Transaction created successfully
amount (object) – Conditional

Returned when the transaction amount information is available in the response.

FieldTypeConditionDescriptionExample
amountobjectConditionalObject that defines the transaction amount and currency.
amount.valuenumber (double)MandatoryTransaction amount value.50.5
amount.currencystring (ISO 4217 Alpha-3)MandatoryCurrency used in the transaction.PLN
merchant (object) – Conditional

This object contains merchant identification and configuration details related to the transaction.

FieldTypeConditionDescriptionExample
merchantobjectConditionalObject that contains the merchant identification and transaction configuration data required for payment processing.
merchant.terminalIdstring (<=10)MandatoryMerchant terminal identification.47215
merchant.channelstringMandatoryMerchant ChannelWeb
merchant.merchantTransactionIdstring (<=36)MandatoryUnique transaction identifier used and provided by the merchant.Order_20260219_001
merchant.websiteAddressstringMandatoryMerchant website URL. Merchant website address configured during onboarding (Acceptor configuration). This value is static and does not change per transaction.myshop.pl
merchant.shopURLstringOptionalMerchant URL used for redirects during the transaction flow. If returned, it reflects the value originally provided in the request.https://myshop.pl/status
execution (object) – Mandatory

Technical timestamps that indicate when the request started and when the response was generated.

FieldTypeConditionDescriptionExample
executionobjectMandatoryContains technical timestamps related to the processing of the request.
execution.startTimestring (ISODateTime)YesTime when the API accepted the request.2026-02-19T13:41:01.626Z
execution.endTimestring (ISODateTime)YesTime when the API responded to the request.2026-02-19T13:41:02.105Z
regulationList (object) – Mandatory

This object contains regulatory and compliance information that must be presented to the shopper depending on the service configuration.

FieldTypeConditionDescriptionExample
regulationListArray of ObjectMandatoryList of regulations and legal information applied to the service.
regulationList.identificationstringMandatoryUnique identifier of the regulatory element as configured for the service.REG_001
regulationList.typestring (RegulationType)MandatoryType of regulatory element. Possible values are:

ACCEPTANCE – Acceptance statement

COMPLAINTS – Complaints information

CERTIFICATIONS – Certifications or compliance references

ACQUIRER_NAME – Acquirer identification

ACCQUIRER_LOGO – Acquirer logo resource

VISA_NETWORK_LOGO – Visa network logo

MASTERCARD_NETWORK_

LOGO – Mastercard network logo
ACCEPTANCE
regulationList.languagestring (ISO 639-1)MandatoryLanguage associated with the regulatory element. Must follow ISO 639-1 format.PL
regulationList.labelstringOptionalInformational text associated with the regulatory element.By proceeding, you accept the terms and conditions.
regulationList.regulationURLstringOptionalTerms and conditions configured for the Service.https://merchant.com/terms
regulationList.logoURLstringOptionalURL of a logo resource associated with the regulatory element.https://gateway.com/logo.png
Response example:
{
  "returnStatus": {
    "statusCode": "000",
    "statusMsg": "SUCCESS",
    "statusDescription": "TRANSACTION CREATED SUCCESSFULLY"
  },
  "transactionID": "42f59038f3f14e618d091da8bf3b717e9999",
  "transactionSignature": "eyJ0eElkIjoiZzB6Q...",
  "amount": {
    "value": 50.50,
    "currency": "EUR"
  },
  "merchant": {
    "terminalId": 47215,
    "channel": "WEB",
    "merchantTransactionId": "ORDER_20260309_001",
    "transactionDescription": "PAYMENT FOR ORDER #1001",
    "websiteAddress": "MYSHOP.COM",
    "shopURL": "HTTPS://MYSHOP.COM/STATUS"
  },
  "paymentMethodList": ["CARD", "BLIK"],
  "tokenList": [],
  "expiry": "2026-03-09T20:30:00Z",
  "execution": {
    "startTime": "2026-03-09T14:30:00.000Z",
    "endTime": "2026-03-09T14:30:01.200Z"
  },
  "regulationList": [
    {
      "identification": "REG_001",
      "type": "ACCEPTANCE",
      "language": "PL",
      "label": "By proceeding, you accept the terms and conditions.",
      "regulationURL": "https://merchant.com/terms",
      "logoURL": "https://gateway.com/logo.png"
    }
  ]
}
actionResponse (object) – Optional

In some payment scenarios, the transaction cannot be completed immediately and requires an additional step before the final result is available.

When this happens, the API returns the actionResponse object. This object contains the information your backend needs to execute the next step required to continue the payment flow.

Until the action described in this object is executed, the transaction will remain in a pending state.

If the action is not performed before the order expiration time, the transaction will expire and will no longer be processed.

FieldTypeConditionDescriptionExample
actionResponseobjectOptionalReturned only when an additional action is required to complete the transaction.
actionResponse.dataobjectMandatoryContainer for additional action details.
actionResponse.data – Optional

This object contains the technical information required to perform the additional step in the payment flow.

FieldTypeConditionDescriptionExample
actionResponse.dataobjectOptionalContainer for additional action details.
actionResponse.data.urlstringOptionalEndpoint that must be called to perform the additional step required to complete the payment. The transaction remains pending until this step is successfully executed.
actionResponse.data.paramsArrayOptionalParameters that must be sent when calling the provided endpoint to complete the required additional action.
actionResponse.data.params – Array

If parameters are required to execute the additional action, they will be returned in the params array.

Each element in this array represents a parameter that must be included in the request sent to the provided endpoint.

FieldTypeConditionDescriptionExample
actionResponse.data.paramsArrayOptionalList of parameters required to execute the additional action. Each entry is represented as an object.
actionResponse.data.params.parameterobjectOptionalObject representing a single parameter required for the additional action.
actionResponse.data.params.parameter (object) – Optional

Each parameter object contains the name of the parameter and the value that must be submitted when calling the action endpoint.

FieldTypeConditionDescriptionExample
actionResponse. params.parameter.namestringOptionalParameter name required by the action endpoint.
actionResponse. params.parameter.datastringOptionalValue to be submitted for the parameter defined above. Content depends on the requested action.
actionResponse Example

The following example shows a response that requires an additional action before the payment can continue.

{
  "actionResponse": {
    "url": "https://acs.gateway.com/3ds",
    "params": [
      {
        "name": "PaReq",
        "value": "eJxVUttygjAQ..."
      },
      {
        "name": "TermUrl",
        "value": "https://merchant.com/3ds/callback"
      }
    ]
  }
}
HTTP Status Codes

The API returns standard HTTP status codes together with a structured returnStatus object in the response body.

Merchants must always validate both the HTTP status code and the returnStatus.statusCode before proceeding.

The response contains a statusMsg that can assume different values:

Result codestatusMsgDescriptionAction
HTTP-200SuccessSuccess responsen/a
HTTP-400Bad RequestThe JSON payload does not match the API definition or some mandatory HTTP headers are missing.Please check in API Market for the correct syntax.
HTTP-401UnauthorizedOn the Authorization, Bearer token is invalid/expired or not associated with the Terminal used.Please check in SIBS Backoffice under the Credentials if the token is valid and create a new one if needed.
HTTP-403ForbiddenThe ClientID set on the X-IBM-Client-Id HTTP header is not valid or does not possess a valid subscription to the API.Please check in SIBS Backoffice under the SPG APP 2.0 if the ClientID is correct. If the problem persists, contact SIBS Gateway support for a ClientID reset.
HTTP-405Method Not AllowedThe HTTP Method used does not match any of the API definitions available.Please check in API Market for the correct HTTP Method.
HTTP-429Too Many RequestsThe API calls rate limit has been exceeded.Please check in API Market for information on the rate limits that apply to the API.
HTTP-500Internal Server ErrorThe API call has failed… and its most likely on our side.You should retry the operation, and if the problem persists contact SIBS Gateway support for assistance.
HTTP-503Service UnavailableThe API call is not currently available. Usually we are always on, but short availability issues may occur during scheduled maintenance.You should wait and try again later.

Step 3: Make a payment

After you create and submit the order with the shopper’s payment details, and he chooses to pay with a payment method that requires a redirection, you need to make a payment request to SIBS Gateway.

Check the instruction on how to make payment with each type of payment method:

Payment MethodDescription
CardAccept payments using Visa, Mastercard, and co-branded cards. Suitable for most use cases and supports standard authorization flows.
Pay by LinkAllows customers to complete payments directly through their bank account using a secure redirection flow.
BLIKPopular mobile payment method in Poland, enabling instant payments using a one-time code generated in the banking app.
Apple Pay & Google PayDigital wallet for instant checkout
iDEAL | WeroBank-based payment method widely used in the Netherlands, enabling direct account-to-account transfers.
BancontactLocal payment method in Belgium, commonly used for card-based and bank-linked payments.
SEPA Direct DebitEnables merchants to collect payments directly from a customer’s bank account within the SEPA zone.
Cartes BancairesFrench domestic card scheme, commonly used alongside international card networks.
MB WAYMobile wallet widely used in Portugal, allowing customers to authorize payments through their mobile phone number and app.
BizumInstant mobile payment method in Spain, allowing transfers between bank accounts using a phone number.
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookies

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.