Skip to content

Products & Prices

Products are the catalog items you sell in your SMBcrm account. Each product can have one or more prices, which set how much it costs and how it’s billed, one-time or recurring.

Base URL: https://services.smbcrm.com · Version header: v3 · Scopes: products.readonly / products.write for products, products/prices.readonly / products/prices.write for prices. See Scopes.

GET/products/

List the products in your account, paginated.

scope products.readonlyauth Location token or PIT

locationId is required. Use limit and offset to page through results, or search to filter by name.

Terminal window
curl "https://services.smbcrm.com/products/?locationId=<location_id>&limit=20&offset=0" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"products": [
{
"_id": "<product_id>",
"locationId": "<location_id>",
"name": "1-Hour Consultation",
"productType": "SERVICE",
"description": "A single 60-minute strategy session.",
"availableInStore": true,
"createdAt": "2026-06-01T12:00:00.000Z"
}
],
"total": [{ "total": 1 }]
}
GET/products/{productId}

Fetch a single product by ID.

scope products.readonlyauth Location token or PIT
Terminal window
curl "https://services.smbcrm.com/products/<product_id>?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"_id": "<product_id>",
"locationId": "<location_id>",
"name": "1-Hour Consultation",
"productType": "SERVICE",
"description": "A single 60-minute strategy session.",
"availableInStore": true,
"createdAt": "2026-06-01T12:00:00.000Z",
"updatedAt": "2026-06-01T12:00:00.000Z"
}
POST/products/

Create a product in your account's catalog.

scope products.writeauth Location token or PIT

locationId, name, and productType (DIGITAL, PHYSICAL, SERVICE, or PHYSICAL/DIGITAL) are required.

Terminal window
curl -X POST https://services.smbcrm.com/products/ \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{
"locationId": "<location_id>",
"name": "1-Hour Consultation",
"productType": "SERVICE",
"description": "A single 60-minute strategy session."
}'
201 Created
{
"_id": "<product_id>",
"locationId": "<location_id>",
"name": "1-Hour Consultation",
"productType": "SERVICE",
"description": "A single 60-minute strategy session.",
"availableInStore": false,
"createdAt": "2026-07-08T15:04:00.000Z",
"updatedAt": "2026-07-08T15:04:00.000Z"
}
PUT/products/{productId}

Update fields on an existing product.

scope products.writeauth Location token or PIT

PUT replaces the product, so name, locationId, and productType are required even if you’re only changing one field.

Terminal window
curl -X PUT https://services.smbcrm.com/products/<product_id> \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{
"name": "60-Minute Consultation",
"locationId": "<location_id>",
"productType": "SERVICE",
"description": "Updated description."
}'
DELETE/products/{productId}

Permanently delete a product.

scope products.writeauth Location token or PIT
Terminal window
curl -X DELETE "https://services.smbcrm.com/products/<product_id>?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
GET/products/{productId}/price

List the prices attached to a product.

scope products/prices.readonlyauth Location token or PIT

locationId is required.

Terminal window
curl "https://services.smbcrm.com/products/<product_id>/price?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"prices": [
{
"_id": "<price_id>",
"product": "<product_id>",
"name": "Standard rate",
"type": "one_time",
"amount": 149,
"currency": "USD"
}
],
"total": 1
}
GET/products/{productId}/price/{priceId}

Fetch a single price by ID.

scope products/prices.readonlyauth Location token or PIT
Terminal window
curl "https://services.smbcrm.com/products/<product_id>/price/<price_id>?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"_id": "<price_id>",
"product": "<product_id>",
"name": "Standard rate",
"type": "one_time",
"amount": 149,
"currency": "USD"
}
POST/products/{productId}/price

Create a price for a product.

scope products/prices.writeauth Location token or PIT

name, type (one_time or recurring), amount, currency, and locationId are required. For a recurring price, also include a recurring object with interval (day, week, month, or year) and intervalCount.

Terminal window
curl -X POST https://services.smbcrm.com/products/<product_id>/price \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{
"name": "Standard rate",
"type": "one_time",
"amount": 149,
"currency": "USD",
"locationId": "<location_id>"
}'
201 Created
{
"_id": "<price_id>",
"product": "<product_id>",
"locationId": "<location_id>",
"name": "Standard rate",
"type": "one_time",
"amount": 149,
"currency": "USD",
"createdAt": "2026-07-08T15:04:00.000Z"
}
PUT/products/{productId}/price/{priceId}

Update an existing price.

scope products/prices.writeauth Location token or PIT

PUT replaces the price, so name, type, currency, amount, and locationId are required even if you’re only changing one field.

Terminal window
curl -X PUT https://services.smbcrm.com/products/<product_id>/price/<price_id> \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{
"name": "Promo rate",
"type": "one_time",
"amount": 99,
"currency": "USD",
"locationId": "<location_id>"
}'
DELETE/products/{productId}/price/{priceId}

Permanently delete a price.

scope products/prices.writeauth Location token or PIT
Terminal window
curl -X DELETE "https://services.smbcrm.com/products/<product_id>/price/<price_id>?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
  • Payments — orders, transactions, subscriptions, and invoices built on top of your product catalog.
  • Subscriptions — recurring billing tied to a price.
  • Invoices & Estimates — add a price as a line item on an invoice or estimate.
  • Scopes — request only the product/price scopes your integration needs.