{"info":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","description":"<html><head></head><body><h1 id=\"unify-public-api\">Unify Public API</h1>\n<p>Professional REST API for third-party integrators to purchase airtime, data, bills, and pins, and to reconcile transactions programmatically.</p>\n<p><strong>Base URL:</strong> <code>https://api.unifyxpress.com/api/v1/public</code></p>\n<p>This collection covers <strong>only</strong> the public, versioned integrator surface (<code>/api/v1/public/*</code>). The mobile app's authenticated endpoints and internal endpoints are intentionally not documented here.</p>\n<hr>\n<h2 id=\"authentication\">Authentication</h2>\n<p>Every request must include your API key as a Bearer token:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer &lt;your_api_key&gt;\n</code></pre><p>Keys are issued from the dashboard (Settings → API Keys). The plaintext value is shown <strong>once</strong> at creation time — only its SHA-256 hash is stored, so it cannot be retrieved again. If lost, revoke it and create a new one.</p>\n<p>Each account has a default full-access (<code>*</code>) key and may create additional named, scoped keys.</p>\n<h3 id=\"scopes\">Scopes</h3>\n<p>A key's <code>scopes</code> array may contain literal route names or named groups:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Group</th>\n<th>Grants</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>read</code></td>\n<td>balance, transactions, all catalog endpoints</td>\n</tr>\n<tr>\n<td><code>airtime</code></td>\n<td><code>POST /services/airtime</code></td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td><code>POST /services/data</code></td>\n</tr>\n<tr>\n<td><code>bills</code></td>\n<td>electricity &amp; cable verify/purchase</td>\n</tr>\n<tr>\n<td><code>exam-pins</code></td>\n<td><code>POST /services/exam-pins</code></td>\n</tr>\n<tr>\n<td><code>recharge-pins</code></td>\n<td><code>POST /services/recharge-pins</code></td>\n</tr>\n<tr>\n<td><code>*</code></td>\n<td>every route</td>\n</tr>\n</tbody>\n</table>\n</div><p>A key with no explicit scopes is read-only (GET endpoints only).</p>\n<hr>\n<h2 id=\"rate-limits\">Rate limits</h2>\n<p>Throttled per API key by tier:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tier</th>\n<th>Limit</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>standard (default)</td>\n<td>60 req/min</td>\n</tr>\n<tr>\n<td>premium</td>\n<td>300 req/min</td>\n</tr>\n<tr>\n<td>enterprise</td>\n<td>1000 req/min</td>\n</tr>\n</tbody>\n</table>\n</div><p>Exceeding the limit returns <code>429</code> with standard <code>X-RateLimit-*</code> headers.</p>\n<hr>\n<h2 id=\"response-envelope\">Response envelope</h2>\n<p><strong>Success</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Operation successful\",\n  \"data\": { },\n  \"meta\": { \"timestamp\": \"2026-06-27T10:00:00+00:00\", \"request_id\": \"...\" }\n}\n</code></pre>\n<p><strong>Error</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"message\": \"Human-readable description\",\n  \"error_code\": \"MACHINE_READABLE_CODE\",\n  \"errors\": { \"field\": [\"Validation message\"] },\n  \"meta\": { \"timestamp\": \"...\", \"request_id\": \"...\" }\n}\n</code></pre>\n<p><code>errors</code> is only present on <code>422 VALIDATION_ERROR</code> responses.</p>\n<h3 id=\"error-codes\">Error codes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>HTTP</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>INVALID_API_KEY</code></td>\n<td>401</td>\n<td>Missing or unrecognized <code>Authorization</code> header</td>\n</tr>\n<tr>\n<td><code>EXPIRED_API_KEY</code></td>\n<td>401</td>\n<td>Key's <code>expires_at</code> has passed</td>\n</tr>\n<tr>\n<td><code>REVOKED_API_KEY</code></td>\n<td>401</td>\n<td>Key has been revoked</td>\n</tr>\n<tr>\n<td><code>ACCOUNT_NOT_FOUND</code></td>\n<td>401</td>\n<td>Owning account no longer exists</td>\n</tr>\n<tr>\n<td><code>INSUFFICIENT_PERMISSIONS</code></td>\n<td>403</td>\n<td>Key scopes don't cover this route</td>\n</tr>\n<tr>\n<td><code>VALIDATION_ERROR</code></td>\n<td>422</td>\n<td>Request body failed validation — see <code>errors</code></td>\n</tr>\n<tr>\n<td><code>IDEMPOTENCY_CONFLICT</code></td>\n<td>409</td>\n<td>Same idempotency key reused with a different payload</td>\n</tr>\n<tr>\n<td><code>IDEMPOTENCY_KEY_COLLISION</code></td>\n<td>409</td>\n<td>Same idempotency key still processing</td>\n</tr>\n<tr>\n<td><code>INVALID_PLAN</code> / <code>INVALID_EXAM_TYPE</code></td>\n<td>400</td>\n<td>Catalog lookup failed</td>\n</tr>\n<tr>\n<td><code>VERIFICATION_FAILED</code></td>\n<td>400</td>\n<td>Meter/smartcard verification failed upstream</td>\n</tr>\n<tr>\n<td><code>TRANSACTION_FAILED</code></td>\n<td>400</td>\n<td>Purchase failed upstream (debit auto-refunded)</td>\n</tr>\n<tr>\n<td><code>TRANSACTION_NOT_FOUND</code></td>\n<td>404</td>\n<td>No transaction matches the reference for this account</td>\n</tr>\n<tr>\n<td><code>INTERNAL_ERROR</code></td>\n<td>500</td>\n<td>Unexpected server error</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h2 id=\"idempotency\">Idempotency</h2>\n<p>Every purchase endpoint is idempotent on a client-supplied key, so retried requests never double-charge.</p>\n<p>Preferred — a header (up to 128 chars of <code>[A-Za-z0-9_\\-.:]</code>):</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Idempotency-Key: order-48213\n</code></pre><p><code>X-Idempotency-Key</code> is also accepted. If neither header is present, the body field <code>ref</code> is used instead. <code>ref</code> is required on every purchase endpoint regardless, for backward compatibility.</p>\n<p>Replaying the same key with an identical payload returns the original result. Replaying it with a different payload returns <code>409 IDEMPOTENCY_CONFLICT</code>.</p>\n<hr>\n<h2 id=\"completion-webhooks\">Completion webhooks</h2>\n<p>A key with a configured <code>webhook_url</code> receives an HTTP <code>POST</code> whenever one of its transactions resolves.</p>\n<p><strong>Headers</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>X-Webhook-Timestamp: 1735000000\nX-Webhook-Signature: &lt;hex hmac-sha256&gt;\n</code></pre><p>The signature is <code>HMAC-SHA256(\"{timestamp}.{raw_json_body}\", webhook_secret)</code>. Verify it before trusting the payload.</p>\n<p><strong>Payload</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"transaction.success\",\n  \"transaction_reference\": \"TXN-ABC123\",\n  \"status\": \"SUCCESS\",\n  \"status_label\": \"Successful\",\n  \"amount_kobo\": 100000,\n  \"amount_naira\": 1000,\n  \"service_name\": \"Airtime\",\n  \"external_reference\": \"EXT-1\",\n  \"timestamp\": \"2026-06-27T10:00:00+00:00\"\n}\n</code></pre>\n<p><code>event</code> is <code>transaction.success</code> or <code>transaction.failed</code>. Delivery is retried up to 5 times with backoff on any non-2xx/timeout. Your endpoint must be idempotent on <code>transaction_reference</code>.</p>\n<hr>\n<h2 id=\"getting-started-in-postman\">Getting started in Postman</h2>\n<ol>\n<li>Set the <code>base_url</code> collection variable (defaults to <code>https://api.unify.com/api/v1/public</code>).</li>\n<li>Set the <code>api_key</code> collection variable to your key from the dashboard.</li>\n<li>Start with <strong>Catalog → Get Networks</strong> and <strong>Account → Get Balance</strong> to confirm auth works.</li>\n</ol>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Unify Public API","slug":"unify-public-api"}],"owner":"42472303","collectionId":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","publishedId":"2sBY4LQ23t","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-07-09T09:43:54.000Z"},"item":[{"name":"Account & Balance","item":[{"name":"Get Balance","id":"8b64eb2f-e65e-4e41-a532-0b88c543d9e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/balance","description":"<p>Returns the current wallet balance for the account that owns the API key.</p>\n<p><strong>Scope:</strong> <code>read</code> (or any key).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["balance"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"cb8d008d-7813-4097-b57d-91b1b2edf496","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Balance retrieved successfully\",\n  \"data\": {\n    \"wallet_balance\": \"5230.50\",\n    \"referral_balance\": \"120.00\",\n    \"currency\": \"NGN\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000001\"\n  }\n}"}],"_postman_id":"8b64eb2f-e65e-4e41-a532-0b88c543d9e2"}],"id":"7350829f-0839-4fa6-9d7d-f47df2c6915a","description":"<p>Read your account's wallet balance.</p>\n","_postman_id":"7350829f-0839-4fa6-9d7d-f47df2c6915a","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}}},{"name":"Transactions","item":[{"name":"List Transactions","id":"69d3cb91-e686-4ba1-8f2b-d4ffbab1ec81","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/transactions?per_page=15&page=1","description":"<p>Paginated list of the account's transactions. Response <code>meta.pagination</code> carries <code>current_page</code>, <code>last_page</code>, <code>per_page</code>, and <code>total</code>.</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["transactions"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[{"description":{"content":"<p>Items per page (1–100, default 15).</p>\n","type":"text/plain"},"key":"per_page","value":"15"},{"description":{"content":"<p>Page number (default 1).</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Filter by numeric transaction status.</p>\n","type":"text/plain"},"key":"status","value":""},{"disabled":true,"description":{"content":"<p>Filter by service name (e.g. Airtime, Data). Max 100 chars.</p>\n","type":"text/plain"},"key":"service","value":""},{"disabled":true,"description":{"content":"<p>Include transactions on/after this date (YYYY-MM-DD).</p>\n","type":"text/plain"},"key":"date_from","value":""},{"disabled":true,"description":{"content":"<p>Include transactions on/before this date (YYYY-MM-DD). Must be &gt;= date_from.</p>\n","type":"text/plain"},"key":"date_to","value":""}],"variable":[]}},"response":[{"id":"ef9a2008-3ba4-4c77-a5e0-ce69c96b7fbc","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.unifyxpress.com/api/v1/public/transactions?per_page=15&page=1","host":["https://api.unifyxpress.com/api/v1/public"],"path":["transactions"],"query":[{"key":"per_page","value":"15"},{"key":"page","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transactions retrieved successfully\",\n  \"data\": [\n    {\n      \"transaction_reference\": \"TXN-ABC123\",\n      \"customer_reference\": \"CUST-001\",\n      \"external_reference\": \"EXT-1\",\n      \"service_name\": \"Airtime\",\n      \"service_description\": \"1 Airtime purchase of N100 for phone number 08012345678\",\n      \"amount\": \"100.00\",\n      \"status\": 1,\n      \"status_label\": \"Successful\",\n      \"date\": \"2026-07-09T09:45:00+00:00\"\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000002\",\n    \"pagination\": {\n      \"current_page\": 1,\n      \"last_page\": 4,\n      \"per_page\": 15,\n      \"total\": 52\n    }\n  }\n}"}],"_postman_id":"69d3cb91-e686-4ba1-8f2b-d4ffbab1ec81"},{"name":"Get Transaction Details","id":"b60d7799-67f7-4202-b61a-5ea4262c882e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/transactions/:transref","description":"<p>Full details for a single transaction owned by your account. Returns <code>404 TRANSACTION_NOT_FOUND</code> if the reference does not belong to your account.</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["transactions",":transref"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[{"id":"bf8b01c7-b255-474d-8940-fb2726749b91","description":{"content":"<p>The transaction reference returned by a purchase.</p>\n","type":"text/plain"},"type":"any","value":"TXN-ABC123","key":"transref"}]}},"response":[{"id":"db00877b-3b47-4be8-8b4d-3a1c7125e2f1","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/transactions/TXN-ABC123"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction details retrieved successfully\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-ABC123\",\n    \"customer_reference\": \"CUST-001\",\n    \"external_reference\": \"EXT-1\",\n    \"service_name\": \"Airtime\",\n    \"service_description\": \"1 Airtime purchase of N100 for phone number 08012345678\",\n    \"amount\": \"100.00\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"date\": \"2026-07-09T09:45:00+00:00\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000003\"\n  }\n}"},{"id":"cd523b93-bbfe-48f3-a992-7eca1512f223","name":"Not Found","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/transactions/TXN-UNKNOWN"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Transaction not found or access denied\",\n  \"error_code\": \"TRANSACTION_NOT_FOUND\",\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000004\"\n  }\n}"}],"_postman_id":"b60d7799-67f7-4202-b61a-5ea4262c882e"},{"name":"Get Transaction Status","id":"98206212-3f40-42df-9bda-5bb7ed03ab35","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/transactions/:transref/status","description":"<p>Lightweight status lookup — returns <code>transaction_reference</code>, numeric <code>status</code>, <code>status_label</code>, and <code>date</code>. Use this to poll pending purchases.</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["transactions",":transref","status"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[{"id":"ff09abb7-3ba8-439c-9992-88f9c3376f62","description":{"content":"<p>The transaction reference to poll.</p>\n","type":"text/plain"},"type":"any","value":"TXN-ABC123","key":"transref"}]}},"response":[{"id":"6c0fd54f-488a-4483-b155-1822baf28591","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/transactions/TXN-ABC123/status"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction status retrieved successfully\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-ABC123\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"date\": \"2026-07-09T09:45:00+00:00\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000005\"\n  }\n}"}],"_postman_id":"98206212-3f40-42df-9bda-5bb7ed03ab35"}],"id":"2f368a9a-3b30-4384-b473-e70700af48e5","description":"<p>List and inspect transactions belonging to your account.</p>\n","_postman_id":"2f368a9a-3b30-4384-b473-e70700af48e5","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}}},{"name":"Service Purchases","item":[{"name":"Purchase Airtime","id":"2ba65980-435d-4be1-be74-89e0cfdcdab6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Idempotency-Key","value":"order-1792751144","description":"<p>Unique key to make this purchase safely retryable.</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"network\": \"1\",\n  \"amount\": 100,\n  \"phone\": \"08012345678\",\n  \"airtime_type\": \"VTU\",\n  \"ref\": \"order-1\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/airtime","description":"<p>Purchase airtime top-up.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>network</code></td>\n<td>string</td>\n<td>Network ID (see Catalog → Get Networks).</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>number</td>\n<td>Amount in Naira.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Recipient phone number.</td>\n</tr>\n<tr>\n<td><code>airtime_type</code></td>\n<td>string</td>\n<td><code>VTU</code> | <code>Share And Sell</code> | <code>Momo</code> | <code>Awoof</code>.</td>\n</tr>\n<tr>\n<td><code>ref</code></td>\n<td>string</td>\n<td>Idempotency fallback (required).</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Scope:</strong> <code>airtime</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","airtime"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"b482d6c4-81df-42d2-a527-5e5f9a8a5a4c","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"network\": \"1\",\n  \"amount\": 100,\n  \"phone\": \"08012345678\",\n  \"airtime_type\": \"VTU\",\n  \"ref\": \"order-1\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/airtime"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction successful\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-ABC123\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"amount_kobo\": 10000,\n    \"amount_naira\": \"100.00\",\n    \"service_name\": \"Airtime\",\n    \"external_reference\": \"EXT-1\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000006\"\n  }\n}"},{"id":"b0a7ff5c-27f8-4497-a7c9-94eb94f33242","name":"Validation Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"network\": \"1\",\n  \"amount\": 100,\n  \"phone\": \"0801234\",\n  \"airtime_type\": \"VTU\",\n  \"ref\": \"order-1\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/airtime"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Invalid input data\",\n  \"error_code\": \"VALIDATION_ERROR\",\n  \"errors\": {\n    \"phone\": [\"Please enter a valid 11 digit phone number\"]\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000007\"\n  }\n}"}],"_postman_id":"2ba65980-435d-4be1-be74-89e0cfdcdab6"},{"name":"Purchase Data","id":"7382f9d8-cc00-4737-b917-8e80f05edc75","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Idempotency-Key","value":"order-1792751144","description":"<p>Unique key to make this purchase safely retryable.</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"network\": \"1\",\n  \"data_plan\": 12,\n  \"phone\": \"08012345678\",\n  \"ref\": \"order-2\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/data","description":"<p>Purchase a data bundle. The plan's price is resolved server-side from your account's pricing.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>network</code></td>\n<td>string</td>\n<td>Network ID (see Catalog → Get Networks).</td>\n</tr>\n<tr>\n<td><code>data_plan</code></td>\n<td>integer</td>\n<td>Plan ID (see Catalog → Get Data Plans).</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Recipient phone number.</td>\n</tr>\n<tr>\n<td><code>ref</code></td>\n<td>string</td>\n<td>Idempotency fallback (required).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Returns <code>400 INVALID_PLAN</code> if the plan/network combination is unknown.</p>\n<p><strong>Scope:</strong> <code>data</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","data"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"df2a584c-5768-4d10-b49b-aa30f74ee7e4","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"network\": \"1\",\n  \"data_plan\": 12,\n  \"phone\": \"08012345678\",\n  \"ref\": \"order-2\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/data"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction successful\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-DEF456\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"amount_kobo\": 50000,\n    \"amount_naira\": \"500.00\",\n    \"service_name\": \"Data\",\n    \"external_reference\": \"EXT-2\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000008\"\n  }\n}"},{"id":"f365e6c2-feb9-4c73-b8ea-29f58fad9b37","name":"Invalid Plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"network\": \"1\",\n  \"data_plan\": 999999,\n  \"phone\": \"08012345678\",\n  \"ref\": \"order-2\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/data"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Invalid Data Plan ID: 999999\",\n  \"error_code\": \"INVALID_PLAN\",\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000009\"\n  }\n}"}],"_postman_id":"7382f9d8-cc00-4737-b917-8e80f05edc75"},{"name":"Purchase Exam Pins","id":"325ad331-622d-497b-bf6c-db5c16d9ded8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Idempotency-Key","value":"order-1792751144","description":"<p>Unique key to make this purchase safely retryable.</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"exam_type\": \"waec\",\n  \"quantity\": 1,\n  \"amount\": 1500,\n  \"ref\": \"order-3\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/exam-pins","description":"<p>Purchase exam result-checker pins. Total charged is unit price × quantity, resolved server-side.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>exam_type</code></td>\n<td>string</td>\n<td><code>waec</code> | <code>neco</code> | <code>nabteb</code> (see Catalog → Get Exam Types).</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Number of pins.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>number</td>\n<td>Reference amount.</td>\n</tr>\n<tr>\n<td><code>ref</code></td>\n<td>string</td>\n<td>Idempotency fallback (required).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Returns <code>400 INVALID_EXAM_TYPE</code> for unknown exam types.</p>\n<p><strong>Scope:</strong> <code>exam-pins</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","exam-pins"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"3bc958bc-b323-4327-987c-811ac75bedba","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"exam_type\": \"waec\",\n  \"quantity\": 1,\n  \"amount\": 1500,\n  \"ref\": \"order-3\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/exam-pins"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction successful\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-GHI789\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"amount_kobo\": 150000,\n    \"amount_naira\": \"1500.00\",\n    \"service_name\": \"Exam Pins\",\n    \"external_reference\": \"EXT-3\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-00000000000a\"\n  }\n}"},{"id":"1aefc770-081c-458b-b499-71d2932e54ee","name":"Invalid Exam Type","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"exam_type\": \"unknown\",\n  \"quantity\": 1,\n  \"amount\": 1500,\n  \"ref\": \"order-3\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/exam-pins"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Invalid Exam Type: unknown\",\n  \"error_code\": \"INVALID_EXAM_TYPE\",\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-00000000000b\"\n  }\n}"}],"_postman_id":"325ad331-622d-497b-bf6c-db5c16d9ded8"},{"name":"Purchase Recharge Pins","id":"ba82abb0-7312-42ba-bf54-c9c5a6459af4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Idempotency-Key","value":"order-1792751144","description":"<p>Unique key to make this purchase safely retryable.</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"network\": 1,\n  \"amount\": 100,\n  \"quantity\": 5,\n  \"card_name\": \"MTN\",\n  \"ref\": \"order-4\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/recharge-pins","description":"<p>Generate printable recharge-card pins.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>network</code></td>\n<td>integer</td>\n<td>Network ID (see Catalog → Get Networks).</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>number</td>\n<td>Denomination per pin (Naira).</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Number of pins.</td>\n</tr>\n<tr>\n<td><code>card_name</code></td>\n<td>string</td>\n<td>Optional label printed on the pins.</td>\n</tr>\n<tr>\n<td><code>ref</code></td>\n<td>string</td>\n<td>Idempotency fallback (required).</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Scope:</strong> <code>recharge-pins</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","recharge-pins"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"354d760a-fad1-49cd-8d31-1cff9280b6a5","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"network\": 1,\n  \"amount\": 100,\n  \"quantity\": 5,\n  \"card_name\": \"MTN\",\n  \"ref\": \"order-4\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/recharge-pins"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction successful\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-JKL012\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"amount_kobo\": 50000,\n    \"amount_naira\": \"500.00\",\n    \"service_name\": \"Recharge Pins\",\n    \"external_reference\": \"EXT-4\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-00000000000c\"\n  }\n}"}],"_postman_id":"ba82abb0-7312-42ba-bf54-c9c5a6459af4"}],"id":"3b20cd2e-57de-44d9-ad88-63302feeb3bf","description":"<p>Purchase airtime, data, exam pins, and recharge pins.</p>\n<p>No transaction PIN is required on the public API — the API key alone authorizes purchases. Every purchase requires a <code>ref</code> (legacy idempotency fallback); prefer the <code>Idempotency-Key</code> header.</p>\n","_postman_id":"3b20cd2e-57de-44d9-ad88-63302feeb3bf","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}}},{"name":"Bills","item":[{"name":"Verify Electricity Meter","id":"aa63656a-e1b4-47b2-989c-179f93e32cec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"disco\": \"ikeja\",\n  \"meter_number\": \"1234567890\",\n  \"meter_type\": \"prepaid\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/electricity/verify","description":"<p>Validate a meter number and return the customer name before purchase.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>disco</code></td>\n<td>string</td>\n<td>Distribution company (see Catalog → Get Discos).</td>\n</tr>\n<tr>\n<td><code>meter_number</code></td>\n<td>string</td>\n<td>Meter number to verify.</td>\n</tr>\n<tr>\n<td><code>meter_type</code></td>\n<td>string</td>\n<td><code>prepaid</code> | <code>postpaid</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Returns <code>400 VERIFICATION_FAILED</code> if the meter is invalid upstream.</p>\n<p><strong>Scope:</strong> <code>bills</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","electricity","verify"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"81e9f93f-121c-4258-8dec-add77fde17f5","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"disco\": \"ikeja\",\n  \"meter_number\": \"1234567890\",\n  \"meter_type\": \"prepaid\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/electricity/verify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Meter verified successfully\",\n  \"data\": {\n    \"customer_name\": \"JOHN DOE\",\n    \"meter_number\": \"1234567890\",\n    \"disco\": \"ikeja\",\n    \"meter_type\": \"prepaid\",\n    \"address\": \"12 Allen Avenue, Ikeja\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-00000000000d\"\n  }\n}"},{"id":"672e9740-2ded-401c-8e26-b25a28d108c9","name":"Verification Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"disco\": \"ikeja\",\n  \"meter_number\": \"0000000000\",\n  \"meter_type\": \"prepaid\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/electricity/verify"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Meter verification failed\",\n  \"error_code\": \"VERIFICATION_FAILED\",\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-00000000000e\"\n  }\n}"}],"_postman_id":"aa63656a-e1b4-47b2-989c-179f93e32cec"},{"name":"Purchase Electricity Token","id":"2abe55f9-6507-45f0-abca-ceb3ffb86b99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Idempotency-Key","value":"order-1792751144","description":"<p>Unique key to make this purchase safely retryable.</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"disco\": \"ikeja\",\n  \"meter_number\": \"1234567890\",\n  \"meter_type\": \"prepaid\",\n  \"amount\": 1000,\n  \"ref\": \"order-5\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/electricity/purchase","description":"<p>Pay an electricity bill and receive a token (for prepaid meters).</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>disco</code></td>\n<td>string</td>\n<td>Distribution company (see Catalog → Get Discos).</td>\n</tr>\n<tr>\n<td><code>meter_number</code></td>\n<td>string</td>\n<td>Meter number (verify first).</td>\n</tr>\n<tr>\n<td><code>meter_type</code></td>\n<td>string</td>\n<td><code>prepaid</code> | <code>postpaid</code>.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>number</td>\n<td>Amount in Naira.</td>\n</tr>\n<tr>\n<td><code>ref</code></td>\n<td>string</td>\n<td>Idempotency fallback (required).</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Scope:</strong> <code>bills</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","electricity","purchase"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"33cfe3a8-77ef-4dd2-8423-c3c4beb70577","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"disco\": \"ikeja\",\n  \"meter_number\": \"1234567890\",\n  \"meter_type\": \"prepaid\",\n  \"amount\": 1000,\n  \"ref\": \"order-5\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/electricity/purchase"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction successful\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-MNO345\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"amount_kobo\": 100000,\n    \"amount_naira\": \"1000.00\",\n    \"service_name\": \"Electricity\",\n    \"external_reference\": \"EXT-5\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-00000000000f\"\n  }\n}"}],"_postman_id":"2abe55f9-6507-45f0-abca-ceb3ffb86b99"},{"name":"Verify Smartcard / IUC","id":"9eaaa9cb-4b33-4ea8-bbff-55fd9e305b32","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"dstv\",\n  \"smartcard_number\": \"1234567890\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/cable/verify","description":"<p>Validate a smartcard/IUC number and return the customer name before purchase.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>provider</code></td>\n<td>string</td>\n<td><code>dstv</code> | <code>gotv</code> | <code>startimes</code>.</td>\n</tr>\n<tr>\n<td><code>smartcard_number</code></td>\n<td>string</td>\n<td>Smartcard / IUC number.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Returns <code>400 VERIFICATION_FAILED</code> if the smartcard is invalid upstream.</p>\n<p><strong>Scope:</strong> <code>bills</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","cable","verify"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"0d870bf4-13ec-4bf3-9408-7736f9ff96ef","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"dstv\",\n  \"smartcard_number\": \"1234567890\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/cable/verify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Smartcard verified successfully\",\n  \"data\": {\n    \"customer_name\": \"JOHN DOE\",\n    \"smartcard_number\": \"1234567890\",\n    \"provider\": \"dstv\",\n    \"current_bouquet\": \"DStv Padi\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000010\"\n  }\n}"},{"id":"289ab26a-6d61-4d49-b296-6889b66dcb68","name":"Verification Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"dstv\",\n  \"smartcard_number\": \"0000000000\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/cable/verify"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Smartcard verification failed\",\n  \"error_code\": \"VERIFICATION_FAILED\",\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000011\"\n  }\n}"}],"_postman_id":"9eaaa9cb-4b33-4ea8-bbff-55fd9e305b32"},{"name":"Purchase Cable Subscription","id":"fb2c5d84-2345-4c65-82d8-49169de6bc0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Idempotency-Key","value":"order-1792751144","description":"<p>Unique key to make this purchase safely retryable.</p>\n"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"dstv\",\n  \"smartcard_number\": \"1234567890\",\n  \"package_code\": \"dstv-padi\",\n  \"ref\": \"order-6\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.unifyxpress.com/api/v1/public/services/cable/purchase","description":"<p>Renew or change a cable/TV subscription.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>provider</code></td>\n<td>string</td>\n<td><code>dstv</code> | <code>gotv</code> | <code>startimes</code>.</td>\n</tr>\n<tr>\n<td><code>smartcard_number</code></td>\n<td>string</td>\n<td>Smartcard / IUC number (verify first).</td>\n</tr>\n<tr>\n<td><code>package_code</code></td>\n<td>string</td>\n<td>Bouquet code (see Catalog → Get Cable Plans).</td>\n</tr>\n<tr>\n<td><code>ref</code></td>\n<td>string</td>\n<td>Idempotency fallback (required).</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>amount</code> is accepted but ignored — the package's own price is always charged.</p>\n<p><strong>Scope:</strong> <code>bills</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["services","cable","purchase"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"8482e9d9-0c7f-47a3-954b-5f080f35a564","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"dstv\",\n  \"smartcard_number\": \"1234567890\",\n  \"package_code\": \"dstv-padi\",\n  \"ref\": \"order-6\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/cable/purchase"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Transaction successful\",\n  \"data\": {\n    \"transaction_reference\": \"TXN-PQR678\",\n    \"status\": 1,\n    \"status_label\": \"Successful\",\n    \"amount_kobo\": 320000,\n    \"amount_naira\": \"3200.00\",\n    \"service_name\": \"Cable\",\n    \"external_reference\": \"EXT-6\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000012\"\n  }\n}"},{"id":"5883dd22-3fbc-4bcf-bde6-1d063f6dc488","name":"Invalid Plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"dstv\",\n  \"smartcard_number\": \"1234567890\",\n  \"package_code\": \"unknown-code\",\n  \"ref\": \"order-6\"\n}"},"url":"https://api.unifyxpress.com/api/v1/public/services/cable/purchase"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"message\": \"Invalid cable plan: unknown-code\",\n  \"error_code\": \"INVALID_PLAN\",\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000013\"\n  }\n}"}],"_postman_id":"fb2c5d84-2345-4c65-82d8-49169de6bc0b"}],"id":"2fea61ff-b9c7-4077-96fb-2fe63f7cd5fc","description":"<p>Verify and pay electricity and cable/TV bills. Always verify the meter/smartcard before purchasing.</p>\n","_postman_id":"2fea61ff-b9c7-4077-96fb-2fe63f7cd5fc","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}}},{"name":"Catalog","item":[{"name":"Get Networks","id":"835eed15-4070-46af-83e1-5ba9db994672","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/networks","description":"<p>List supported mobile networks and their IDs (used by airtime, data, and recharge-pin purchases).</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["catalog","networks"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"f624ea79-808d-4555-b883-f859ca74d486","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/networks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Networks retrieved successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"name\": \"MTN\",\n      \"status\": \"active\",\n      \"service_statuses\": {\n        \"vtu\": \"active\",\n        \"sme\": \"active\",\n        \"gifting\": \"active\",\n        \"corporate\": \"inactive\",\n        \"datapin\": \"active\"\n      }\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000014\"\n  }\n}"}],"_postman_id":"835eed15-4070-46af-83e1-5ba9db994672"},{"name":"Get Data Plans","id":"7f1b48c4-fa37-4dde-b93e-d554eb032b63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/data-plans","description":"<p>List available data plans with their IDs, prices, and validity (used by data purchases). Price reflects your account's pricing tier.</p>\n<p><strong>Query params (both optional):</strong></p>\n<ul>\n<li><code>network</code> — filter to a single network ID</li>\n<li><code>type</code> — filter by plan type (e.g. <code>SME</code>, <code>Gifting</code>, <code>Corporate</code>)</li>\n</ul>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["catalog","data-plans"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Filter to plans for this network ID (see Get Networks).</p>\n","type":"text/plain"},"key":"network","value":"1"},{"disabled":true,"description":{"content":"<p>Optional. Filter by plan type, e.g. SME, Gifting, Corporate.</p>\n","type":"text/plain"},"key":"type","value":"SME"}],"variable":[]}},"response":[{"id":"14ee1b74-a096-45b1-b89e-9342995ec1c6","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.unifyxpress.com/api/v1/public/catalog/data-plans?network=1","host":["https://api.unifyxpress.com/api/v1/public"],"path":["catalog","data-plans"],"query":[{"key":"network","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Data plans retrieved successfully\",\n  \"data\": [\n    {\n      \"id\": 12,\n      \"plan_id\": \"12\",\n      \"name\": \"1GB\",\n      \"network_id\": 1,\n      \"network_name\": \"MTN\",\n      \"type\": \"SME\",\n      \"price\": \"350.00\",\n      \"validity_days\": 30\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000015\"\n  }\n}"}],"_postman_id":"7f1b48c4-fa37-4dde-b93e-d554eb032b63"},{"name":"Get Electricity Discos","id":"5cbf28d7-cadc-4bf1-89ba-2b92144521ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/discos","description":"<p>List supported electricity distribution companies (used by electricity verify/purchase).</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["catalog","discos"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"a69f77bc-4a2c-40df-abd5-420720cd0788","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/discos"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Electricity providers (Discos) retrieved successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"name\": \"Ikeja Electric\",\n      \"code\": \"ikeja\"\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000016\"\n  }\n}"}],"_postman_id":"5cbf28d7-cadc-4bf1-89ba-2b92144521ba"},{"name":"Get Cable Providers","id":"a2bc3613-76a4-44a3-ab18-4f2cb8a755e0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/cable-providers","description":"<p>List supported cable/TV providers (used by cable verify/purchase).</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["catalog","cable-providers"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"1456c1ac-e65b-4e52-a664-5d181bb2da32","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/cable-providers"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Cable providers retrieved successfully\",\n  \"data\": [\n    {\n      \"id\": 2,\n      \"name\": \"DStv\",\n      \"code\": \"dstv\"\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000017\"\n  }\n}"}],"_postman_id":"a2bc3613-76a4-44a3-ab18-4f2cb8a755e0"},{"name":"Get Cable Plans","id":"1e8c76fb-84c9-4881-a2e2-1ba2e512fdac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/cable-plans","description":"<p>List cable/TV bouquets with their package codes and prices (used by cable purchases). Price reflects your account's pricing tier.</p>\n<p><strong>Query params (optional):</strong></p>\n<ul>\n<li><code>provider</code> — filter to a single cable provider ID</li>\n</ul>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["catalog","cable-plans"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Filter to plans for this cable provider ID (see Get Cable Providers).</p>\n","type":"text/plain"},"key":"provider","value":"2"}],"variable":[]}},"response":[{"id":"cbe44441-931a-41a8-b167-6eb65e571192","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://api.unifyxpress.com/api/v1/public/catalog/cable-plans?provider=2","host":["https://api.unifyxpress.com/api/v1/public"],"path":["catalog","cable-plans"],"query":[{"key":"provider","value":"2"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Cable plans retrieved successfully\",\n  \"data\": [\n    {\n      \"id\": 5,\n      \"plan_id\": \"5\",\n      \"provider_id\": 2,\n      \"name\": \"DStv Padi\",\n      \"price\": \"3200.00\",\n      \"validity\": \"1 Month\"\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000018\"\n  }\n}"}],"_postman_id":"1e8c76fb-84c9-4881-a2e2-1ba2e512fdac"},{"name":"Get Exam Types","id":"74c30ac4-d5d4-4625-9ae4-e4c3e6f70ff4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/exam-types","description":"<p>List supported exam types and their prices (used by exam-pin purchases).</p>\n<p><strong>Scope:</strong> <code>read</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}},"urlObject":{"path":["catalog","exam-types"],"host":["https://api.unifyxpress.com/api/v1/public"],"query":[],"variable":[]}},"response":[{"id":"71335427-0e65-4296-ba88-46dc7f6eb59a","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://api.unifyxpress.com/api/v1/public/catalog/exam-types"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"message\": \"Exam types retrieved successfully\",\n  \"data\": [\n    {\n      \"id\": 1,\n      \"name\": \"WAEC\",\n      \"code\": \"waec\",\n      \"price\": \"1500.00\"\n    }\n  ],\n  \"meta\": {\n    \"timestamp\": \"2026-07-09T10:00:00+00:00\",\n    \"request_id\": \"b3f1c2a0-1234-4abc-8def-000000000019\"\n  }\n}"}],"_postman_id":"74c30ac4-d5d4-4625-9ae4-e4c3e6f70ff4"}],"id":"3b8ea0cb-d726-4149-ad9e-a60615c5bc71","description":"<p>Read-only reference data for building purchase requests. Cacheable; safe to call with a read-only key.</p>\n","_postman_id":"3b8ea0cb-d726-4149-ad9e-a60615c5bc71","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","id":"9d31f641-fd69-4d0f-ace6-3731ecf1350c","name":"Unify Data Public API (v1)","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"base_url","value":"https://api.unifyxpress.com/api/v1/public"},{"key":"api_key","value":""}]}