Billing

Pricing catalog, checkout, and billing history. Checkout is processed via Netcash - see the pricing page on the marketing site for current bundle and plan pricing.

GET/pricing-plans

Active subscription plan catalog. Any logged-in user.

GET/sms-bundles

Active SMS bundle catalog. Any logged-in user.

GET/admin/pricing-plans

Full plan catalog including inactive plans.

Platform-admin only.

POST/admin/pricing-plans

Create a plan.

Platform-admin only.

PATCH/admin/pricing-plans/:id

Update a plan.

Platform-admin only.

DELETE/admin/pricing-plans/:id

Soft-delete a plan (isActive: false).

Platform-admin only.

GET/admin/sms-bundles

Full bundle catalog including inactive bundles.

Platform-admin only.

POST/admin/sms-bundles

Create a bundle.

Platform-admin only.

PATCH/admin/sms-bundles/:id

Update a bundle.

Platform-admin only.

DELETE/admin/sms-bundles/:id

Soft-delete a bundle (isActive: false).

Platform-admin only.

POST/billing/bundles/:bundleId/checkout

Body: {quantity?}. Starts a Pay Now checkout for a bundle purchase - this is also how an account tops up.

POST/billing/subscriptions/checkout

Body: {planId}. Starts a Pay Now checkout for a subscription. The Subscription row is only created once the payment webhook confirms.

GET/billing/summary

Current smsBalance, active subscription, and recent transactions/purchases.

POST/webhooks/netcash/accept

Payment success callback from Netcash.

Public - inbound from the payment provider.

POST/webhooks/netcash/decline

Payment decline callback from Netcash.

Public - inbound from the payment provider.

POST/webhooks/netcash/notify

Server-to-server payment notification from Netcash.

Public - inbound from the payment provider.