Cycle Logo

Merchant Management

Guides for creating and managing merchants (clients) via the REST API.

Creating a Merchant (Client)

Endpoint

POST /api/v1/merchant/create

Merchant Request Body

Field NameTypeMandatoryDescription
NameStringYesMerchant name
PhoneStringYesPhone (e.g., +27821234567)
FInstIDIntegerYesFinancial institution ID
AddressDeFactoStringYesActual address
ClientManagerJsonObjectYesClient Manager object
UserNameStringYesManager's name
UserEmailStringYesManager's email
UserPhoneStringYesManager's phone number
LocationJsonObjectYesLocation object
LatitudeIntegerYesLatitude
LongitudeIntegerYesLongitude
CountryStringYesCountry
CountryCodeStringYesCountry code
DeviceInfoJsonObjectYesDevice object
PhoneManufacturerStringYesManufacturer
PhoneModelStringYesModel
DeviceIDStringYesDevice ID
DeviceTypeStringYesDevice type
AppFrameworkStringYesApplication framework
OSStringYesOperating system
OSVersionStringYesSystem version
AppIDStringYesApplication ID
BuildNumberStringYesBuild number
GMTIntegerYesTime zone
AppFrameworkStringYesFramework applications
IPStringYesIP address from where the request is made
LangStringYesLanguage
AddressDeJureStringNoLegal Address
DescriptionStringNoBrief description
WebStringNoWeb site
StateIntegerNoStatus (0 - blocked, 1 active)
SendWelcomeEmailBooleanNoSend a welcome invitation
ClientSourceStringNoClient source or channel
TaxSystemIDIntegerNoTax System ID
SupportCuratorIDIntegerNoSupport curator ID
HunterIDIntegerNoSales agent ID
TaxIDStringNoTax ID (e.g. VAT number)
OriginCuratorIDIntegerNoPrimary curator ID
CashRegisterCuratorIDIntegerNoCash solution curator
ProductSolutionIDIntegerNoProduct solution type
ContractTypeIDIntegerNoContract type ID
ClientModeIntegerNoClient mode
MobileSettingsJsonObjectNoMobile settings object
ClientImportanceIntegerNoImportance of the merchant
ClientTypeIntegerNoMerchant type
ImageAvatarJsonObjectNoClient logo/avatar
SbpJsonObjectNoSBP Settings object
CurrentAccountIDIntegerNoID of the user making the request

Value Dictionaries

ClientType

TypeDescription
1Common
2WE
4MultiMerchant

ClientMode

TypeDescription
1Normal
2Third Party

ClientImportance

TypeDescription
10Normal
100Important
500Budget-forming

Configuration IDs

ProductSolutionID, ContractTypeID and TaxSystemID values are provided by your account manager.

Example: Create Merchant Request

{
  "Name": "Cycle Demo Pty Ltd",
  "Phone": "+27821234567",
  "FInstID": 3012,
  "AddressDeFacto": "123 Sample Street, Sandton, 2196",
  "AddressDeJure": "123 Sample Street, Sandton, 2196",
  "Description": "Retail Goods",
  "Web": "https://cycledemo.co.za/",
  "State": 1,
  "SendWelcomeEmail": true,
  "TaxSystemID": 1,
  "TaxID": "4123456789",
  "ProductSolutionID": 0,
  "ContractTypeID": 3,
  "ClientMode": 2,
  "ClientImportance": 10,
  "ClientType": 2,
  "MobileSettings": {
    "Features": {
      "AcceptCards": true,
      "AcceptCash": true,
      "AcceptPrepaid": true,
      "AcceptCredit": true,
      "AcceptOuterCard": true,
      "ShowInventory": true,
      "RegularPayments": true,
      "Offline": true,
      "AsyncCashProcessing": true,
      "InternalUpdate": true,
      "AutoLogin": true,
      "Inherited": true,
      "ChangeClientLogo": true
    },
    "MobHomeURL": "https://cycledemo.co.za/home",
    "MobHomeURLNull": false,
    "MobQRUrlNull": true,
    "AllowLinkedCards": 1,
    "BoxplatPayDashboard": false,
    "BoxplatPayDashboardNull": true,
    "AllowCreditVoucherReverses": 0,
    "MobileAppPasswordStore": true,
    "BarcodeScanner": true,
    "BarcodeScannerNull": true
  },
  "ClientManager": {
    "UserName": "Admin User",
    "UserEmail": "admin@cycledemo.co.za",
    "UserPhone": "+27821234568"
  },
  "CurrentAccountID": 21041,
  "Location": {
    "Latitude": -26.1076,
    "Longitude": 28.0567
  },
  "Country": "South Africa",
  "CountryCode": "ZA",
  "DeviceInfo": {
    "PhoneManufacturer": "Generic",
    "PhoneModel": "Windows_RestAPI",
    "DeviceID": "",
    "DeviceType": "1",
    "AppFramework": "java",
    "OS": "Windows",
    "OSVersion": "10",
    "AppID": "RestAPI",
    "BuildNumber": "2.4.390248"
  },
  "GMT": 2,
  "AppFramework": "java",
  "Lang": "en",
  "IP": "102.132.95.88"
}

Merchant Response Body

Field NameTypeDescription
MerchantobjectMerchant object
IDIntegerThe merchant ID
StateIntegerStatus (0 - blocked, 1 active)
FInstIDIntegerFinancial institution ID
NameStringMerchant name
LegalNameStringLegal name of the merchant
EmailStringEmail
PhoneStringTelephone
DescriptionStringBrief description
AvatarBooleanIndicates if avatar is present
AddressDeJureStringLegal address
AddressDeFactoStringActual address
ClientNameStringClient name (can differ from merchant name)
AvatarUrlStringImage link
HasAvatarBooleanIndicates if an avatar exists
ProductDescCountIntegerNumber of products
ProductDescActiveCountIntegerNumber of active products
DeletedBooleanIndicates if deleted
FInstNameStringFinancial institution name
ClientImportanceIntegerImportance of the merchant
SbpJsonObjectSBP Settings
ErrorCodeIntegerExecution result code
ErrorMessageStringExecution result message

Example: Create Merchant Response

{
  "Merchant": {
    "ID": 26991,
    "State": 1,
    "AccountTypeID": 10,
    "AccountType": 10,
    "ClientID": 26991,
    "BranchID": 3012,
    "FInstID": 3012,
    "Name": "Cycle Demo Pty Ltd",
    "LegalName": null,
    "Email": null,
    "Web": "https://cycledemo.co.za/",
    "TerminalID": null,
    "CurrencyID": "ZAR",
    "LanguageID": "en",
    "CountryID": "ZA",
    "Phone": "+27(82)123-45-67",
    "Description": "Retail Goods",
    "Avatar": false,
    "AddressDeJure": "123 Sample Street, Sandton, 2196",
    "AddressDeFacto": "123 Sample Street, Sandton, 2196",
    "ClientName": null,
    "AvatarUrl": "/i/x.png",
    "HasAvatar": false,
    "ProductDescCount": 0,
    "ProductDescActiveCount": 0,
    "ProductDescActiveAcceptPaymentCount": 0,
    "ProductDescActiveScheduleCount": 0,
    "Deleted": false,
    "FInstName": "Demo Finst",
    "ReceiptSkipHeader": false,
    "ClientImportance": 10
  },
  "ErrorCode": 0,
  "ErrorMessage": null,
  "Validations": null
}

Editing a Merchant (Client)

Endpoint

POST /api/v1/merchant/{merchantId}/update

Edit Merchant Request Body

Field NameTypeMandatoryDescription
NameStringYesMerchant name
PhoneStringYesPhone (e.g., +27821234567)
AddressDeFactoStringYesActual address
AddressDeJureStringNoLegal Address
DescriptionStringNoBrief description
WebStringNoWeb site
StateIntegerNoStatus (0 - blocked, 1 active)
ClientSourceStringNoReceipt channel
TaxSystemIDIntegerNoTax System ID
SupportCuratorIDIntegerNoCurator in support
OriginCuratorIDIntegerNoPrimary curator
CashRegisterCuratorIDIntegerNoCash solution/application
ProductSolutionIDIntegerNoSolution
ContractTypeIDIntegerNoCustomer type
ClientModeIntegerNoClient mode
ClientImportanceIntegerNoImportance of the customer
BarcodeScannerBooleanNoScanner barcode
ImageJsonObjectNoClient logo
CurrentAccountIDIntegerNoID of the user making the request
LocationJsonObjectYesLocation object
CountryStringYesCountry
CountryCodeStringYesCountry code
DeviceInfoJsonObjectYesDevice object
GMTIntegerYesTime zone
AppFrameworkStringYesFramework applications
IPStringYesIP address from where the request is made
LangStringYesLanguage

Example: Edit Merchant Request

{
  "ID": "18349",
  "Name": "Jabu's Innovations Pty Ltd",
  "Phone": "+27111111111",
  "AddressDeFacto": "456 Sample Ave, Pretoria, 0002",
  "AddressDeJure": "789 Main Road, Cape Town, 8001",
  "Web": "jabu-innovations.co.za",
  "BarcodeScanner": false,
  "MobileSettings": {
    "AllowLinkedCards": 0
  },
  "Location": {
    "Latitude": -25.7479,
    "Longitude": 28.2293
  },
  "Country": "South Africa",
  "CountryCode": "ZA",
  "DeviceInfo": {
    "PhoneManufacturer": "Generic",
    "PhoneModel": "Windows_RestAPI",
    "DeviceID": "",
    "DeviceType": "1",
    "AppFramework": "java",
    "OS": "Windows",
    "OSVersion": "10",
    "AppID": "RestAPI",
    "BuildNumber": "2.4.390248"
  },
  "GMT": 2,
  "AppFramework": "java",
  "Lang": "en",
  "IP": "102.132.95.88"
}

Edit Merchant Response Body

Field NameTypeDescription
MerchantobjectMerchant object
IDIntegerThe merchant ID
StateIntegerStatus (0 - blocked, 1 active)
FInstIDIntegerFinancial institution ID
NameStringMerchant name
LegalNameStringLegal name of the merchant
EmailStringEmail
PhoneStringTelephone
DescriptionStringBrief description
AvatarBooleanIndicates if avatar is present
AddressDeJureStringLegal address
AddressDeFactoStringActual address
ClientNameStringClient name (can differ from merchant name)
AvatarUrlStringImage link
HasAvatarBooleanIndicates if an avatar exists
ProductDescCountIntegerNumber of products
ProductDescActiveCountIntegerNumber of active products
DeletedBooleanIndicates if deleted
FInstNameStringFinancial institution name
ClientImportanceIntegerImportance of the merchant
SbpJsonObjectSBP Settings
ErrorCodeIntegerExecution result code
ErrorMessageStringExecution result message

Example: Edit Merchant Response

{
  "Merchant": {
    "ID": 18349,
    "State": 1,
    "AccountTypeID": 10,
    "AccountType": 10,
    "ClientID": 18349,
    "BranchID": 3012,
    "FInstID": 3012,
    "Name": "Jabu's Innovations Pty Ltd",
    "LegalName": "Jabu's Innovations (Pty) Ltd",
    "Email": null,
    "Web": "jabu-innovations.co.za",
    "TerminalID": null,
    "CurrencyID": "ZAR",
    "LanguageID": "en",
    "CountryID": "ZA",
    "Phone": "+27(11)111-1111",
    "Description": "",
    "Avatar": false,
    "AddressDeJure": "789 Main Road, Cape Town, 8001",
    "AddressDeFacto": "456 Sample Ave, Pretoria, 0002",
    "ClientName": null,
    "AvatarUrl": "https://static-demo.cardport.net/item.aspx?ft=user&fid=3012&cid=18349&aid=18349&uft=avatar&stamp=2020-09-04T08%3a15%3a34.87&",
    "HasAvatar": true,
    "ProductDescCount": 5,
    "ProductDescActiveCount": 0,
    "ProductDescActiveAcceptPaymentCount": 0,
    "ProductDescActiveScheduleCount": 0,
    "Deleted": false,
    "FInstName": "Demo Finst",
    "ReceiptSkipHeader": false,
    "ClientImportance": 10
  },
  "ErrorCode": 0,
  "ErrorMessage": null,
  "Validations": null
}