Voice & AFA

Voice bundles and AFA (Agent / registration-related) packages use the same transactions API with product voice or afa.

How to use

  1. GET /products → find type: "voice" or "afa" and their packages.
  2. POST /transactions with product: "voice" or "afa", matching productId / packageId, and the product scope (voice:purchase or afa:purchase).

Voice

Scopes: transactions:create, voice:purchase

FieldNotes
product"voice"
productIdFrom catalog
packageIdWhen packages are listed for the product
beneficiaryMSISDN
amountIf sold by amount

AFA

Scopes: transactions:create, afa:purchase

POSThttps://confident-elephant-309.convex.site/v1/transactions
Request
curl -sS https://confident-elephant-309.convex.site/v1/transactions \  -H "Authorization: Bearer $KEY" \  -H "Content-Type: application/json" \  -d '{    "idempotencyKey": "afa-order-001",    "product": "afa",    "productId": "afa-mtn",    "packageId": "<package-id>",    "beneficiary": "0241234567"  }'
201 Created
{  "transaction": {    "id": "511260",    "reference": "511260",    "status": "pending",    "kind": "purchase",    "environment": "sandbox"  }}

Confirm available packages with Products. Exact AFA fields follow your Ops-configured catalog.