Sold as and channel
Every transaction says whether it was one of Routegate's plans or your own, and which route served it.
Two fields on every transaction, in the API and in every transaction.* webhook, answer the two questions a support ticket starts with: what was sold, and what sent it.
{
"reference": "txn_01a0d8dfa6b87d10a3e54c2b9f86d1e4",
"product_code": "vendor:mtn-500mb-weekly",
"sold_as": "vendor_only",
"vendor_only_plan": {
"id": "01a0d8e2-3c41-7d58-9a06-2f4b7e1c8d93",
"code": "vendor:mtn-500mb-weekly",
"name": "MTN 500MB Weekly"
},
"channel": "vendor",
"vendor_account_id": "01a0d8e1-77b2-7e0c-8f3a-5d9c2b6e4a10"
}sold_as
| Value | Meaning |
|---|---|
plan | One of Routegate's plans, by its code or plan number. |
vendor_only | One of your vendor-only plans, by its vendor: code. |
vendor_only_plan is the plan as it was when sold, {id, code, name}, and null for one of Routegate's plans. Its id goes null if you delete the plan later; the code and name stay.
channel
The route that served the latest attempt. The dashboard shows it as Route.
| Value | Route | What served it |
|---|---|---|
sim | Line | One of your own lines. |
stock | Reserve | A line in Routegate Reserve. |
vendor | Vendor | One of your vendor links. vendor_account_id names it. |
test | Test | The test-mode mock. |
channel is null until the first attempt, so a queued transaction has none. A sale that failed over from a line to a vendor shows vendor: the field follows the latest attempt.
Filtering
List transactions filters by both: ?sold_as=vendor_only, ?channel=vendor. Any other value is 400 VALIDATION_FAILED.
Channels
List channels shows what your sales go out through: with a live key, your own lines and vendor links, with a line's last read airtime and their success rate over your attempts in the last 24 hours; with a test key, the mock. It reads only; nothing is called to answer it.