Environments
Live and test keys, and how to discover which features your account can use.
TeePay keys belong to one environment, shown by their prefix.
| Key prefix | Environment | Use it for |
|---|---|---|
tp_live_ | live | Real payments and payouts. |
tp_test_ | sandbox | Checking authentication, scopes and your error handling. |
Money moves in live only
Mobile money push, checkout sessions, Control Numbers and payouts currently run in the live
environment only. Use test keys to verify authentication and capability discovery, then test money
flows in live with small amounts. GET /v1/capabilities always tells you what the current key can do.
Check what is enabled
curl https://api.teepay.me/v1/capabilities \
-H "Authorization: Bearer $TEEPAY_API_KEY"{
"api_version": "2026-10-18",
"environment": "live",
"release_stage": "owned_collections",
"features": {
"integration_read": true,
"collection_read": true,
"collection_create": true,
"checkout_sessions": true,
"checkout_session_read": true,
"control_number_read": true,
"control_number_create": false,
"disbursement_read": true,
"disbursement_create": false,
"payouts": false,
"payments": true,
"payment_links": false,
"payment_pages": false,
"invoice_payments": false,
"beneficiaries": false,
"balances": false,
"refunds": false,
"webhook_endpoints": false
},
"supported_countries": ["TZ"],
"supported_currencies": ["TZS"]
}A feature is true only when the key has the scope, your account has the permission and TeePay has
enabled the feature for you. Features that are not part of the public API yet (balances, refunds,
beneficiaries, managing webhook endpoints through the API) are always false.
supported_countries and supported_currencies list the markets your key can create collections in
right now. They are empty when collection_create is false, and grow when TeePay enables new
countries for your account. See Countries and currencies.
Call capabilities when your application starts and hide options your account cannot use, instead of
waiting for a 403.