On this page, you will find necessary information to onboard and update a sponsored merchant, as well as how to handle errors and check the webhook status codes.
Merchant onboarding
The API-based onboarding process eliminates the need for manual onboarding by automatically generating sponsored merchants, establishments, pricelists, terminals, and their corresponding credentials.
Please check below the available environment endpoints:
Environment | URL | Operation Method & Endpoint | Operation Description |
---|---|---|---|
PROD | api.sibsgateway.com | POST api/onboarding/version-id/ sponsored-merchant | Performs a request to create the sponsored merchant record. |
TEST | stargate.qly.site1.sibs.pt | POST api/onboarding/version-id/ sponsored-merchant | Performs a request to create the sponsored merchant record. |
To initiate this process, you are required to perform a POST request with the following data:
Header parameters:
Parameter | Type | Condition | Description |
---|---|---|---|
Content-type | String | Mandatory | application/json. |
X-Request-ID | String | Mandatory | ID of the request, unique to the call, as determined by the initiating party. |
x-ibm-client-id | String | Mandatory | Token that identifies a client organization. It is provided during onboarding process and must be used in every call. |
Request parameters:
Data Element | Type Length | Condition | Description |
---|---|---|---|
merchant | Object | Mandatory | Root object for merchant data |
merchant.name | String <=90 | Mandatory | Merchant’s full name |
merchant.phone | String <=16 | Mandatory | Merchant’s phone number. |
merchant.email | String <=55 | Mandatory | Merchant’s email address |
merchant.nip | String 8<11 | Mandatory | Merchant’s tax identification number |
merchant.mcc | Number 4-4 | Mandatory | Merchant Category Code |
merchant.pkd | String 7-7 | Mandatory | Classification of economic activities code (Polish PKD system). The format of this parameter will be as Follows: 00.00.A |
merchant.merchantType | Enum | Mandatory | Merchant type description Allowed value: “Sponsored Merchant” |
merchant.address | object | Mandatory | Merchant’s Address |
merchant.address.street | String <=70 | Mandatory | Street name |
merchant.address.postalCode | String <=25 | Mandatory | Postal Code |
merchant.address.locality | String <=20 | Mandatory | City or locality |
merchant.address.country | Number 3-3 | Mandatory | Country code (Format ISO 3166, Number 3 code — ex: Poland – 616) |
merchant.website | String <=100 | Mandatory | Merchant’s website URL |
merchant.signedAgreements | Enum | Mandatory | Flag indicating if agreements are signed Allowed Value: “False” |
merchant.backofficeEmail | String <=55 | Mandatory | SIBS Backoffice contact email |
merchant.pepStatus | Enum | Mandatory | Politically Exposed Person status Allowed value: “Inactive” |
merchant.owners | Array of objects | Mandatory | List of merchant owners |
merchant.owners[].name | String <=20 | Mandatory | Owner’s full name |
merchant.owners[].phone | String <=16 | Conditional | Owner’s phone number. At least one phone number or email must be provided. |
merchant.owners[].email | String <=55 | Conditional | Owner’s email address At least one phone number or email must be provided. |
merchant.owners[].address | String <=100 | Optional | Owner’s address |
merchant.owners[].tin | String 8<11 | Mandatory | Owner’s tax identification number |
merchant.integrationSupportContact | Object | Optional | Contact person for integration support |
merchant.integrationSupportContact.name | String <=20 | Optional | Name of integration contact person |
merchant.integrationSupportContact.phone | String <=16 | Conditional | Phone number of integration contact At least one phone number or email must be provided. |
merchant.integrationSupportContact.email | String <=55 | Conditional | Email address Contact for integration Support At least one phone number or email must be provided. |
merchant.shop | object | Mandatory | Shop details |
merchant.shop.name | String <=40 | Optional | Shop Name. If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.address | object | Optional | Shop Address |
merchant.shop.street | String | Optional | Shop street If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.postalcode | String <=25 | Optional | Shop postal code If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.locality | String <=20 | Optional | Shop city/locality If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.country | Number 3-3 | Optional | Shop country code (Format ISO 3166, Number 3 code — ex: Poland – 616) If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.email | String <=55 | Optional | Shop email address If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.phoneNumber | String <=16 | Optional | Shop phone number If this field is left empty, the system will default to using the value specified at the Merchant level. |
merchant.shop.type | Enum | Mandatory | Shop Type Allowed values: “Banks”, “Wholesale”, “Supermarket”, “Retail”, “Gas Stations”, “Restaurants”, “Hotels”, “Others”, “Virtual Establishment”, “Foreign”, “Service Provider”, “Service Entity”, “EMV Tolls” |
merchant.shop.mcc | String 4-4 | Mandatory | Shop Merchant Category Code |
merchant.shop.pkd | String 7-7 | Mandatory | Classification of economic activities code (Polish PKD system). The format of this parameter will be as Follows: 00.00.A |
merchant.shop.invoiceIndicator | Enum | Mandatory | Shop Invoice Indicator type Allowed value: “Payment Facilitator” |
merchant.shop.products | Array of objects | Mandatory | List of products |
merchant.shop.product[]productId | String | Mandatory | Payment methods to be activated. Allowed values: “INTP-BLIK-0-0” InterPay-BLIK-Domestic “INTP-BLIK-1-0” – InterPay-BLIK-OneClick “BLMD-PYBL-0-0” BlueMedia-PayByLink-Domestic “MRKP-CRTB-0-0” – Cartes Bancaires “SIBS-MBWY-0-0” – MB WAY “SPDD-BTOB-0-0” – SEPA DD B2B “SPDD-CORE-0-0” – SEPA DD Core “XPAY-APPL-0-0” – ApplePay “XPAY-GGLE-0-0” – GooglePay “MCC-1-C” – Mastercard-Mastercard-Consumer-Credit “MCC-1-D” – Mastercard-Mastercard-Consumer-Debit “MCC-1-P” – Mastercard-Mastercard-Consumer-Prepaid “MCC-2-C” – Mastercard-Mastercard-Commercial-Credit “MCC-2-P” – Mastercard-Mastercard-Commercial-Prepaid “MCC-4-C” – Mastercard-Mastercard-Other-Credit “MCC-4-D” – Mastercard-Mastercard-Other-Debit “MCC-4-P” – Mastercard-Mastercard-Other-Prepaid “MSI-1-D” – Mastercard-Maestro-Consumer-Debit “MSI-1-P” – Mastercard-Maestro-Consumer-Prepaid “MSI-2-D” – Mastercard-Maestro-Commercial-Debit “MSI-2-P” – Mastercard-Maestro-Commercial-Prepaid “VIS-02-C” – VISA-VISA-Commercial-Credit “VIS-02-D” – VISA-VISA-Commercial-Debit “VIS-02-P” – VISA-VISA-Commercial-Prepaid “VIS-01-C” – VISA-VISA-Consumer-Credit “VIS-01-D” – VISA-VISA-Consumer-Debit “VIS-01-P” – VISA-VISA-Consumer-Prepaid “VPY-03-D” – VISA-VPAY-VPAY-Debit “VPY-03-P” – VISA-VPAY-VPAY-Prepaid “VSL-01-C” – VISA-VISA Electron-Consumer-Credit “VSL-01-D” – VISA-VISA Electron-Consumer-Debit “VSL-01-P” – VISA-VISA Electron-Consumer-Prepaid |
merchant.shop.product[]productInvoiceIndicator | Enum | Mandatory | Product Invoice Indicator Allowed Values: “Payment Facilitator” |
merchant.shop.typeOfIntegration | Enum | Mandatory | Merchant type of integration Allowed Values: “S2S” “SDK” “Plugin” Default “S2S” |
merchant.shop.webhookNotification | object | Conditional | Object that defines the webhook configuration details Mandatory if typeOfIntegration is “Plugin”. |
merchant.shop.webhookNotification.type | Enum | Conditional | Type of webhook notifications. Allowed values: “URL” “Email” Mandatory if typeOfIntegration is “Plugin”. If “Plugin”, the value must be “URL” |
merchant.shop.webhookNotification.Value | String | Conditional | A delivery email address (for email type), or an HTTP(S) URL Mandatory if typeOfIntegration is “Plugin” |
merchant.shop.supportEmail | String <=55 | Conditional | An email address to where all failed SPG Webhook calls will be reported by the end-of-day Mandatory if typeOfIntegration is “Plugin” |
merchant.shop.securityKey | String >=32 | Optional | A pseudo-random symmetric key that will be used to cipher the webhook content |
Find below a POST request example:
{
"merchant": {
"name": "Testing Company",
"phone": "501234567",
"email": "merchant@example.pl",
"nip": "1234567890",
"mcc": "5999",
"pkd": "47.91.Z",
"merchantType": "Sponsored Merchant",
"address": {
"street": "UL PRZYKŁADOWA 1",
"postalCode": "00-001",
"locality": "WARSZAWA",
"country": "616"
},
"website": "https://www.testingcompany.pl",
"signedAgreements": false,
"backofficeEmail": "backoffice@example.pl",
"pepStatus": "Inactive",
"owners": [
{
"name": "Jane Doe",
"email": "jane.doe@example.pl",
"tin": "1234567890"
}
],
"shop": {
"name": "Testing Store",
"email": "shop@example.pl",
"phoneNumber": "501234567",
"type": "Retail",
"mcc": "5999",
"pkd": "47.91.Z",
"invoiceIndicator": "Payment Facilitator",
"products": [
{
"productId": "MCC-1-C",
"productInvoiceIndicator": "Payment Facilitator"
},
{
"productId": "MCC-1-D",
"productInvoiceIndicator": "Payment Facilitator"
},
{
"productId": "VIS-01-C",
"productInvoiceIndicator": "Payment Facilitator"
},
{
"productId": "VIS-01-D",
"productInvoiceIndicator": "Payment Facilitator"
}
],
"typeOfIntegration": "S2S"
}
}
}
Upon this action, the API will respond with one of the following two status codes:
Status Code | Message | TransactionStatus |
---|---|---|
000 | Success | “ACTC” (Accepted Technical Validation) |
999 | Unexpected Error | “RJT” (Rejected) |
Here is an example of a successful onboarding response:
{
"transactionStatus": "ACTC",
"returnStatus": {
"statusCode": "000"
"statusMsg": "Success",
"statusDescription": "string"
}
}
You will also receive the onboarding webhook, which includes the following merchant onboarding details and credentials.
Here’s a redacted example of a successful Webhook notification:
{
"NotifyRequest": {
"TrackingId": "00caa675-f811-45ed-aee3-b84c22ac3efc",
"TIN": "000****123",
"MerchantId": "PL-000****123-1",
"ShopId": "SH-PL-000000321",
"TerminalId": "POS000159",
"ErrCode": "CRM000",
"ErrDesc": "Success",
"Agreements": {
"AgreementType": "PLKV"
},
"Credentials": {
"ApiClientId": "2a69a780-****-****-****-1c6308af85f0",
"ApiClientSecret": "K1rK*******************************0uU6",
"TerminalToken": "0277a2c645e93c43f59ce867ee55498293*******5272db028ad9c9fa250edd04d9cac5d42910950e2acb82034093d14830e649c3d6df2cc0f92268f79"
}
}
}
Merchant update
We also provide the capability to update merchant information through our APIs. Please refer to the list of available environment endpoints provided below:
Environment | URL | Operation Method & Endpoint | Operation Description |
---|---|---|---|
PROD | api.sibsgateway.com | PUT /sibs/onboarding/v1/sponsored-merchant/{merchant-id} | Update a merchant resource |
TEST | stargate.qly.site1.sibs.pt | PUT /sibs/onboarding/v1/sponsored-merchant/{merchant-id} | Update a merchant resource |
To initiate this process, you are required to perform a PUT request with the following data:
Parameters
Parameter | Type | Condition | Required | Description |
---|---|---|---|---|
Content-type | String | Mandatory | Header | application/json |
X-Request-ID | String | Mandatory | Header | ID of the request, unique to the call, as determined by the initiating party |
merchant-id | String | Mandatory | Path | ID of Sponsored Merchant |
x-ibm-client-id | String | Mandatory | Header | Token that identifies a client organization. It is provided during onboarding process and must be used in every call |
The following details outline the parameters eligible for modification, including their data types, length constraints, update conditions, and brief descriptions:
Request parameters
Data Element | Type Length | Condition | Description |
---|---|---|---|
merchant | Object | Mandatory | Main object containing merchant details |
merchant.phone | String <=16 | Mandatory | Phone number of the merchant |
merchant.email | String <=55 | Mandatory | Email address of the merchant |
merchant.address | Object | Mandatory | Merchant’s address object |
merchant.address.street | String <=100 | Mandatory | Street name of the merchant’s address |
merchant.address.postalCode | String <=25 | Mandatory | Postal code of the merchant’s address |
merchant.address.locality | String <=20 | Mandatory | City/locality of the merchant’s address |
merchant.website | String <=100 | Mandatory | Merchant’s website URL |
Find below a PUT request example:
{
"merchant": {
"phone": "505102923",
"email": "fds@op.pl",
"address": {
"street": "UL IMAGINARY",
"postalCode": "85-132",
"locality": "BYDGOSZCZ"
},
"website": "www.yolo.pl"
}
}
After the request, the API will respond with one of the two status codes:
Status Code | Message | TransactionStatus |
---|---|---|
000 | Success | “ACTC” (Accepted Technical Validation) |
999 | Unexpected Error | “RJT” (Rejected) |
Error handling
If a rejection occurs on the onboarding process, a synchronous response will be received that include a transactionstatus with the value RJCT (rejected) and a 999 StatusCode.
This response will contain error code and message fields that can assist you in identifying and resolving the issue.
Rejected onboarding response example:
{
"transactionStatus": "RJCT",
"returnStatus": {
"statusCode": "999",
"statusMsg": "Internal Server Error",
"statusDescription": "When invoiceIndicator is Sponsored Merchant invoiceEmail and payout object are mandatory."
}
}
Webhooks Status Codes
Below you can find the range of Status Codes and Messages that you can receive via webhooks.
Status Code | Message | Operations | Details |
---|---|---|---|
CRM000 | Success. | n/a | n/a |
CRM001 | Sponsored Merchant already exists. | Merchant Onboarding Operations | A Sponsored Merchant with the received NIF already exists. |
CRM002 | PKD is invalid. | Merchant Onboarding Operations Merchant Update Operations Create shop Operations Update shop Operations | PKD does not exist in the list of configured PKDs. |
CRM003 | MCC code is invalid. | Merchant Onboarding Operations Merchant Update Operations Create shop Operations Update shop Operations | MCC does not exist in the list of configured MCCs. |
CRM005 | IBAN is invalid. | Merchant Onboarding Operations | IBAN is invalid according to the implemented validation rules. |
CRM006 | Product list doesn’t comply with Payment Facilitator agreement. | Merchant Onboarding Operations Create shop Operations Add payment method Operations | Sent products are not listed among the products enabled for the Payment Facilitator (PF). |
CRM007 | Required field [field_name] missing. | All | A required attribute in the API invocation was not sent. |
CRM008 | Payment Facilitator is invalid. | All | Payment Facilitator ID does not exist in the system. |
CRM009 | Product [product] is duplicated. | Merchant Onboarding Operations Create shop Operations Add payment method Operations Delete payment method Operations | Duplicate products in the API. |
CRM010 | Invoice indicator is invalid. | Merchant Onboarding Operations Create shop Operations Add payment method Operations | The value of the “Invoice Indicator” attribute is not compatible with the PF configuration. |
CRM011 | This Product of Establishment has already been added as an Establishment Product. | Add payment method Operations | The specified product is already among the products of the Establishment. |
CRM012 | Product code [product_code] is invalid. | Merchant Onboarding Operations Create shop Operations Add payment method Operations | Product does not exist in the list of products accepted via API. |
CRM013 | Sponsored Merchant´s Country doesn’t match any Payment Facilitator´s Establishments. | Merchant Onboarding Operations Create shop Operations Update shop Operations | Establishment’s country code does not match the country code of the Payment Facilitator. |
CRM015 | The product [product1] has a dependency on [product2] and this is not part of the products list. | Merchant Onboarding Operations Create shop Operations Add payment method Operations Delete payment method Operations | Failed to validate product compatibility rules. |
CRM016 | The product [product1] is incompatible with [product2] and both are currently on the products list. | Merchant Onboarding Operations Create shop Operations Add payment method Operations Delete payment method Operations | Failed to validate product compatibility rules. |
CRM017 | The product [product1] is mandatory with [product2] and this is not part of the products list. | Merchant Onboarding Operations Create shop Operations Add payment method Operations Delete payment method Operations | Failed to validate product compatibility rules. |
CRM018 | Invalid Type Of Integration. | Merchant Onboarding Operations Create shop Operations Update shop Operations | Integration type in the Webhook is invalid. |
CRM019 | Webhook data is required for given Type Of Integration. | Merchant Onboarding Operations Create shop Operations Update shop Operations | Integration type in the Webhook does not match the submitted data. |
CRM020 | Invalid Webhook Notification for given Type Of Integration. | Merchant Onboarding Operations Create shop Operations Update shop Operations | Notification type defined in the Webhook does not match the Webhook type. |
CRM021 | Invalid Webhook Notification. | Merchant Onboarding Operations Create shop Operations Update shop Operations | Notification type in the Webhook is invalid. |
CRM022 | Webhook Notification Value is not defined for given Webhook Notification. | Merchant Onboarding Operations Create shop Operations Update shop Operations | Notification type defined in the Webhook does not match the Webhook type. |
CRM023 | Webhook Notification Value must be a valid email address. | Merchant Onboarding Operations Create shop Operations Update shop Operations | For the notification type defined in the Webhook, a valid email must be provided. |
CRM024 | Webhook Notification Value must be a valid http(s) url address. | Merchant Onboarding Operations Create shop Operations Update shop Operations | For the notification type defined in the Webhook, a valid URL must be provided. |
CRM025 | Order still in progress for TIN [TIN_value]. | Merchant Onboarding Operations | There is an order in progress/processing for the indicated TIN. |
CRM029 | Establishment ExternalID already exists. | Create shop Operations | The Payment Facilitator is sending a request to create an Establishment that already exists in the system. |
CRM030 | Order still in progress for Establishment [establishment_id]. | Create shop Operations Update shop Operations Create Terminal Operations Add payment method Operations Cancel terminal Operations Delete payment method Operations | There is an order in progress for the indicated Establishment. |
CRM031 | TerminalID already exists. | Create Terminal Operations | The Payment Facilitator is sending a request to create a Terminal that already exists in the system for the indicated Establishment. |
CRM032 | Payment Facilitator is invalid. | Create shop Operations Create Terminal Operations Merchant Update Operations Update shop Operations | During SM creation, the Payment Facilitator’s configuration is not complete. |
CRM033 | Sponsored Merchant is invalid. | Merchant Update Operations Create shop Operations Update shop Operations Create Terminal Operations Cancel shop Operations Cancel terminal Operations Delete payment method Operations | The indicated Sponsored Merchant does not exist or is not in a valid state. |
CRM034 | Establishment is invalid. | Update shop Operations Create Terminal Operations Cancel shop Operations Cancel terminal Operations Delete payment method Operations | The indicated Establishment does not exist or is not in a valid state. |
CRM035 | Terminal is invalid. | Cancel terminal Operations | The indicated Terminal does not exist or is not in a valid state. |
CRM036 | Last Terminal cannot be cancelled. | Cancel terminal Operations | The indicated Terminal is the only one of the Establishment, therefore it cannot be canceled. |
CRM037 | Product is not valid for Establishment. | Delete payment method Operations | The indicated product does not exist in the Establishment or is not in a valid state. |
CRM038 | [PaymentFacilitatorId] is not a Payment Facilitator. | All | The indicated Payment Facilitator is not actually a Payment Facilitator. |
CRM039 | Order still in progress for Merchant [merchant_id]. | Merchant Update Operations | There is an order in progress for the indicated Merchant. |
CRM040 | No Country found for specified [CountryCode]. | Merchant Onboarding Operations Create shop Operations Merchant Update Operations | The specified country code does not exist. |
CRM041 | Transactional Country is invalid. | Create shop Operations | The specified country code does not exist or does not have a currency. |
CRM042 | [terminal_type] is not a valid Terminal Type for the Terminal Channel [terminal_channel]. | Merchant Onboarding Operations Create shop Operations Create Terminal Operations | The Terminal Type does not match the defined Terminal Channel Type. |
CRM043 | [terminal_model] is not a valid Terminal Model for the Terminal Channel [terminal_channel]. | Merchant Onboarding Operations Create shop Operations Create Terminal Operations | The Terminal Model does not match the defined Terminal Channel Type. |
CRM044 | Invalid Terminal Channel Type for this Establishment. | Create Terminal Operations | The terminal type is different from the Establishment’s. |
CRM045 | Sponsored Merchant´s Terminal Channel doesn’t match any Payment Facilitator´s Establishments. | Merchant Onboarding Operations Create shop Operations | The selected Payment Facilitator does not have an active Establishment with the same country and terminal channel as the Sponsored Merchant in the request. |
CRM046 | Sponsored Merchant´s Terminal Type doesn’t match any Payment Facilitator´s Terminals. | Merchant Onboarding Operations Create shop Operations Create Terminal Operations | The selected Payment Facilitator does not have an active Terminal with the terminal type of the Sponsored Merchant in the request. |
CRM999 | Unexpected Error. | All | Unexpected error occurred. |