Products
Create
API call to create new products.
Path
POST /products/create
Request Body
{
"records": [{
"name": "Generic Wooden Ball",
"description": "Good For Training And Recreational Purposes",
"code": "PRD-606075",
"unit_label": "each",
"price_excl": "2409.86",
"is_tax": false,
"pricing_type": "RECURRING",
"billing_period": "MONTHLY",
"custom_period": null,
"custom_interval": null
}]
}
Response Body
The response follows the same format as the list response
{
"status": true,
"results": [{
"id": "prd_9SUJa861SBeZJeDB8SgcH",
...
}, ...]
}
Parameters
Field | Required | Type | Description | Example |
|---|---|---|---|---|
| *.name | Y | String(128) | Name of the product | Generic Wooden Ball |
| *.description | N | String | Description of the product | Good For Training And Recreational Purposes |
| *.code | N | String(64) | Product code | PRD-606075 |
| *.unit_label | N | String(64) | Product units | each |
| *.price_excl | Y | Decimal | Price of the product (Excl. VAT) | 2408.86 |
| *.is_tax | N | Boolean | Is the product taxable. Defaults to false. | false |
| *.pricing_type | Y | ENUM | (RECURRING, ONE_TIME) | RECURRING |
| *.billing_period | Y | ENUM | (DAILY, WEEKLY, MONTHLY, YEARLY, EVERY_3_MONTHS, EVERY_6_MONTHS, CUSTOM) | MONTHLY |
| *.custom_period | C | ENUM | Required if billing period is CUSTOM. (DAYS,WEEKS,MONTHS,YEARS) | MONTHS |
| *.custom_interval | C | Integer | Required if billing period is CUSTOM. Custom product interval. | 2 |
Update
API call to update existing products.
Path
POST /products/update
Request Body
Only include fields you wish to change (besides id used to find the record).
{
"records": [{
"id": "pro_jnhEH8XwIGOFJ2haCAg0Z",
"name": "Generic Wooden Ball",
"description": "Good For Training And Recreational Purposes",
"code": "PRD-606075",
"unit_label": "each",
"price_excl": "2409.86",
"is_tax": false,
"product_status": "ACTIVE",
"pricing_type": "RECURRING",
"billing_period": "MONTHLY",
"custom_period": null,
"custom_interval": null
}]
}
Response Body
The response follows the same format as the list response
{
"status": true,
"results": [{
"id": "prd_9SUJa861SBeZJeDB8SgcH",
...
}, ...]
}
Parameters
Field | Required | Type | Description | Example |
|---|---|---|---|---|
| id | Y | String(32) | Record id to update | pro_jnhEH8XwIGOFJ2haCAg0Z |
| *.name | N | String(128) | Name of the product | Generic Wooden Ball |
| *.description | N | String | Description of the product | Good For Training And Recreational Purposes |
| *.code | N | String(64) | Product code | PRD-606075 |
| *.unit_label | N | String(64) | Product units | each |
| *.price_excl | N | Decimal | Price of the product (Excl. VAT) | 2408.86 |
| *.is_tax | N | Boolean | Is the product taxable. Defaults to false. | false |
| *.product_status | N | ENUM | (DISABLED, ACTIVE, ARCHIVED, DELETED) | ACTIVE |
| *.pricing_type | N | ENUM | (RECURRING, ONE_TIME) | RECURRING |
| *.billing_period | N | ENUM | (DAILY, WEEKLY, MONTHLY, YEARLY, EVERY_3_MONTHS, EVERY_6_MONTHS, CUSTOM) | MONTHLY |
| *.custom_period | N | ENUM | (DAYS,WEEKS,MONTHS,YEARS) | MONTHS |
| *.custom_interval | N | Integer | Custom product interval. | 2 |
List
List all active products available on the platform.
Path
GET /products
Response Body
{
"status": true,
"records": [{
"id": "prd_9SUJa861SBeZJeDB8SgcH",
"created_at": "2026-01-01",
"updated_at": null,
"deleted_at": null,
"archived_at": "2027-04-03",
"name": "Generic Wooden Ball",
"description": "Good For Training And Recreational Purposes",
"code": "PRD-606075",
"unit_label": "each",
"price_excl": "2409.86",
"is_tax": false,
"product_status": "ACTIVE",
"pricing_type": "RECURRING",
"billing_period": "MONTHLY",
"custom_period": null,
"custom_interval": null,
"picture_default": null,
"pictures": {...}
}, {
...
}]
}
Response Parameters
| Field | Type | Description | Example |
|---|---|---|---|
| status | Boolean | true - success, false - error | true |
| records | Array of objects | ||
| *.id | String(32) | Unique ID of the product | prd_9SUJa861SBeZJeDB8SgcH |
| *.created_at | Date(YYYY-MM-DD) | When the product was created | 2026-01-01 |
| *.updated_at | Date(YYYY-MM-DD) | When the product was last updated | 2026-01-03 |
| *.deleted_at | Date(YYYY-MM-DD) | When the product was deleted | 2026-02-12 |
| *.archived_at | Date(YYYY-MM-DD) | When the product was archived | 2027-04-03 |
| *.name | String(128) | Name of the product | Generic Wooden Ball |
| *.description | String | Description of the product | Good For Training And Recreational Purposes |
| *.code | String(64) | Product code | PRD-606075 |
| *.unit_label | String(64) | Product units | each |
| *.price_excl | Decimal | Price of the product (Excl. VAT) | 2408.86 |
| *.is_tax | Boolean | Is the product taxable | false |
| *.product_status | ENUM | (DISABLED, ACTIVE, ARCHIVED, DELETED) | ACTIVE |
| *.pricing_type | ENUM | (RECURRING, ONE_TIME) | RECURRING |
| *.billing_period | ENUM | (DAILY, WEEKLY, MONTHLY, YEARLY, EVERY_3_MONTHS, EVERY_6_MONTHS, CUSTOM) | MONTHLY |
| *.custom_period | ENUM | (DAYS,WEEKS,MONTHS,YEARS) | MONTHS |
| *.custom_interval | Integer | Custom product interval. Required if billing period is custom. | 2 |
| *.picture_default | String | Default picture | |
| *.pictures | Object | Pictures list |
Mandates
Create and manage mandates for collections including DebiCheck and Registered Mandates. Handle mandate creation, authentication, status updates, and cancellation with full SARB compliance.
Transactions
Retrieve and monitor transaction records including payment attempts, status changes, and settlement details. Access comprehensive transaction history with filtering, pagination, and detailed status information for reporting and reconciliation.