Products

Products are reusable billable items you can attach to invoices, payment links, and checkout flows.

Endpoints

MethodPathPurpose
POST/organization/productsCreate a product
GET/organization/productsList products
GET/organization/products/:idFetch a product
PATCH/organization/products/:idUpdate a product
DELETE/organization/products/:idArchive a product

Create a product

curl --request POST \
  --url $baseUrl/organization/products \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Premium Plan",
    "description": "string",
    "sku": "string",
    "type": "RECURRING",
    "price": 120,
    "currency": "USD",
    "billingPeriod": "monthly",
    "status": "ACTIVE"
  }'
FieldRequiredDescription
nameYesProduct name
typeYesRECURRING or ONE_TIME
priceYesPrice in whole units (converted internally)
currencyYese.g. USD
billingPeriodIf RECURRINGe.g. monthly
sku, description, imageNo
statusNoACTIVE, ARCHIVED, or DRAFT — defaults to ACTIVE

Response:

{
  "success": true,
  "statusCode": 201,
  "message": "Product created successfully",
  "data": {
    "id": "prod_01hw3x7k2r4p5q6m8n9v",
    "name": "Annual Subscription",
    "description": "Access to all premium features for 12 months.",
    "currency": "NGN",
    "price": 120000,
    "isActive": true,
    "environment": "live",
    "createdAt": "2024-07-01T10:00:00.000Z"
  }
}

Best practices

  • Keep product identifiers stable once referenced by invoices or payment links
  • Archive, don't delete, once a product has historical usage — this preserves past transaction records
  • Use products as the source of truth for recurring billing metadata

Call this next



Did this page help you?