Skip to content

Public APIs for Registration form (RF)

Programmatically manage wholesale registration workflows: retrieve form schemas, create registrants, filter applicants, and manage approval status.

These REST APIs let you work with your wholesale registration flow: fetch form definitions, create wholesalers, filter registrants, and change approval status.

Requirements

  • Install the BSS B2B Solution Shopify app
  • Get your Access Key from the app (see below)

  1. Get your API Key. If you don’t have one yet, please follow this document to generate it.
  2. All endpoints on this page are v1: include the key either as accessKey in the request body, or as a header:
x-bss-b2b-api-key: <accessKey>

⚠️ Not the same header as v2 (x-api-key, used only by the Volume Pricing v2 endpoint): check the Authentication table if you’re integrating multiple API groups.


Get a form by ID

Purpose
Fetch form data only. Validation logic used on the storefront is not returned.

GET

https://b2b-solution-public-api.bsscommerce.com/api/v1/rf/form/:id

Path Params

  • :id – Form ID

Query Params

  • domain – your myshopify domain

Headers

  • x-bss-b2b-api-key – your access key

Example Request

Terminal window
curl --request GET \
--url "https://b2b-solution-public-api.bsscommerce.com/api/v1/rf/form/1?domain=abc.myshopify.com" \
--header "x-bss-b2b-api-key: xxx"

Response (example)

{
"success": true,
"data": {
"formId": 1,
"formFields": [
{
"id": "header-field-aa4914b46678e",
"label": "Primary details",
"type": "header",
"required": false,
"field": "custom",
"heading_type": "h4",
"width": "100%"
},
{
"id": "first_name",
"label": "First name",
"type": "text",
"required": true,
"help_text": "",
"placeholder": "",
"default_value": "",
"max_character": "",
"width": "100%"
},
{
"id": "last_name",
"label": "Last name",
"type": "text",
"required": false,
"help_text": "",
"placeholder": "",
"default_value": "",
"max_character": "",
"width": "100%"
}
]
}
}

</details>


Create wholesaler

POST

https://b2b-solution-public-api.bsscommerce.com/api/v1/rf/wholesaler/register

Body

name is the field ID in the form.
value is the submitted customer information.

{
"formId": 1,
"formData": [
{ "name": "first_name", "value": "TEST" },
{ "name": "last_name", "value": "BSS" },
{ "name": "email", "value": "[email protected]" },
{ "name": "password", "value": "testbss" }
]
}

Response

{
"success": true,
"message": "Created wholesaler successfully",
"wholesalerId": 3
}

POST

https://b2b-solution-public-api.bsscommerce.com/api/v1/rf/wholesaler/filter

Request Body Params

  • domain – your myshopify domain
  • accessKey – your access key
  • status – status to filter (example below)
  • start_date – start date (YYYY-MM-DD)
  • end_date – end date (YYYY-MM-DD)

Example Request

{
"domain": "abc.myshopify.com",
"accessKey": "xxx",
"status": "pending",
"start_date": "2025-03-01",
"end_date": "2025-03-15"
}

Response (example)

{
"success": true,
"message": "Success",
"data": [
{
"id": 34408,
"form_id": 1,
"status": "PENDING",
"fields": [
{ "name": "First name", "value": "TEST" },
{ "name": "Last name", "value": "CUSTOMER" },
{ "name": "Email", "value": "[email protected]" },
{ "name": "Company", "value": "BSS Commerce" },
{ "name": "Phone", "value": "+84123456789" },
{ "name": "Address", "value": "123 Main St" },
{ "name": "City", "value": "Hanoi" },
{ "name": "Country", "value": "VN" },
{ "name": "State", "value": "" },
{ "name": "Zip code", "value": "123456" },
{ "name": "Apartment/suite/etc.", "value": "Apartment 123" },
{ "name": "Subscribe to our newsletter", "value": "yes" },
{ "name": "EU VAT Validation", "value": "AT1234567" },
{ "name": "Dropdown selection(s)", "value": "option-1" },
{ "name": "UK Validation", "value": "AT1234567" },
{ "name": "US EIN Validation", "value": "AT1234567" },
{ "name": "ABN Validation", "value": "AT1234567" },
{ "name": "India GST Validation", "value": "AT1234567" },
{ "name": "Multiple checkbox", "value": "option-1,option-2" },
{ "name": "Radio options", "value": "option-1" },
{ "name": "Text field", "value": "Test Content" },
{
"name": "Text area",
"value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper, diam et bibendum congue"
},
{ "name": "Number", "value": "1234567890" },
{ "name": "Date field", "value": "1/1/2025" },
{
"name": "File upload",
"value": "https://cdn.shopify.com/s/files/1/0647/8964/3514/files/customers_template_20_2824_29-1741832223649.csv?v=1741832226"
}
]
}
]
}

Response (no results)

{ "success": false, "data": [] }

POST

https://b2b-solution-public-api.bsscommerce.com/api/v1/rf/wholesaler/:action

Action Path Param

  • Replace :action with approve or reject

Important

  • You can only change status for accounts currently in PENDING status.

Request Body Params

  • domain – your myshopify domain
  • accessKey – your access key
  • emails – array of customer emails to update

Example Request

{
"domain": "abc.myshopify.com",
"accessKey": "xxx",
"emails": [
]
}

Response (approve with partial errors)

{
"success": true,
"message": "Success",
"approved": ["[email protected]"],
"errors": {
"email": "Email is not exist"
}
}
}

Response (reject)

{
"success": true,
"rejected": [
]
}

Response (no results)

{ "success": false, "data": [] }

  • Form fetch returns the schema/fields only; it does not include storefront validation logic.
  • Status change endpoints operate only on PENDING accounts.
  • Some endpoints require domain and accessKey in the request body (see examples above).
  • Multi-step (version 3) forms ignore any submitted password value and always require email, even if the form’s schema doesn’t list them explicitly.