🔗Public APIs for Registration form (RF)
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 B2B/Wholesale Solution Shopify app
Get your Access Key from the app (see below)
🔑 Get the Access Key
Open the B2B/Wholesale Solution app in Shopify.
Go to Public API.
Click Copy to copy your accessKey.
Include it in the request body for endpoints that require it.
📄 Form Endpoints
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
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>
🧑💼 Wholesaler Endpoints
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 domainaccessKey
– your access keystatus
– 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
withapprove
orreject
Important
You can only change status for accounts currently in PENDING status.
Request Body Params
domain
– your myshopify domainaccessKey
– your access keyemails
– array of customer emails to update
Example Request
{
"domain": "abc.myshopify.com",
"accessKey": "xxx",
"emails": [
"[email protected]",
"[email protected]"
]
}
Response (approve with partial errors)
{
"success": true,
"message": "Success",
"approved": ["[email protected]"],
"errors": {
"[email protected]": {
"email": "Email is not exist"
}
}
}
Response (reject)
{
"success": true,
"rejected": [
"[email protected]",
"[email protected]"
]
}
Response (no results)
{ "success": false, "data": [] }
⚙️ Notes & Behavior
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
andaccessKey
in the request body (see examples above).
Last updated
Was this helpful?