{"info":{"_postman_id":"d58ab25b-a554-4bb2-89be-29485ededd7b","name":"Omni Payment Gateway - Merchant Transaction API","description":"<html><head></head><body><p>Postman collection for Omni Payment Gateway merchant transaction endpoints.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>This collection uses two authentication mechanisms:</p>\n<ol>\n<li><strong>API Key Auth</strong> — Used by initiate, prepare-initiate, process, status, and USSD banks endpoints. Pass your API key via the <code>Api-Public-Key</code> header.</li>\n<li><strong>JWT Bearer Auth</strong> — Used by the get-by-id endpoint. Pass a valid JWT token via <code>Authorization: Bearer &lt;token&gt;</code>.</li>\n</ol>\n<h2 id=\"base-url\">Base URL</h2>\n<p>Default is <code>http://localhost:9081</code>. Override via the <code>base_url</code> collection variable.</p>\n<h2 id=\"flow\">Flow</h2>\n<ol>\n<li><strong>prepare-initiate</strong> — Returns available payment tokens and fee breakdown (does NOT create a transaction).</li>\n<li><strong>initiate</strong> — Creates the transaction and returns channel-specific data (payment link URL for card, USSD string, virtual account for transfer).</li>\n<li><strong>process</strong> — Processes the initiated payment (submit card details + OTP, or confirm USSD/transfer).</li>\n<li><strong>get-by-id / status</strong> — Check transaction details or status.</li>\n</ol>\n<h2 id=\"amounts\">Amounts</h2>\n<p>All amounts are in <strong>kobo</strong> (minor units). Example: NGN 5,000.00 = 500000.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"57037534","collectionId":"d58ab25b-a554-4bb2-89be-29485ededd7b","publishedId":"2sBYAuTWo2","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-08-31T11:46:36.000Z"},"item":[{"name":"1. Prepare Initiate","item":[{"name":"Prepare","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));\npm.test('Response has paymentTokens list', () => {\n  const data = pm.response.json().data;\n  pm.expect(data).to.have.property('paymentTokens').that.is.an('array');\n  pm.expect(data).to.have.property('transactionFees').that.is.an('array');\n  pm.expect(data).to.have.property('feeBearer');\n  pm.expect(data).to.not.have.property('reference');\n  pm.expect(data).to.not.have.property('paymentLinkUrl');\n});"]}}],"id":"f5c9f329-a698-40c7-82a1-03a0dd5b5769","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"amount\": 500000,\n  \"outletId\": \"outlet-001\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/prepare-initiate","urlObject":{"path":["api","v1","merchant","transaction","prepare-initiate"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"775c5968-7e74-4eb5-bbdc-494c02d7ebfc","name":"Success — Fee breakdown returned","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"amount\": 500000,\n  \"outletId\": \"outlet-001\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\"\n}","options":{"raw":{"language":"text"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/prepare-initiate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction prepared successfully\",\n  \"traceId\": \"trace-a1b2c3d4\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"paymentTokens\": [\n      \"WEB_CARD\",\n      \"WEB_USSD\",\n      \"WEB_TRANSFER\"\n    ],\n    \"transactionFees\": [\n      {\n        \"paymentToken\": \"WEB_CARD\",\n        \"transactionFee\": 75.00\n      },\n      {\n        \"paymentToken\": \"WEB_USSD\",\n        \"transactionFee\": 50.00\n      },\n      {\n        \"paymentToken\": \"WEB_TRANSFER\",\n        \"transactionFee\": 25.00\n      }\n    ],\n    \"feeBearer\": \"CUSTOMER\"\n  }\n}"}],"_postman_id":"f5c9f329-a698-40c7-82a1-03a0dd5b5769"}],"id":"f7f6eb50-3310-44e6-b815-f6ff68f42fc4","description":"<p>Returns the list of available payment tokens and per-token fee breakdown. Does NOT create a transaction record. Call this first to show the customer available payment options and fees before they select one.</p>\n","_postman_id":"f7f6eb50-3310-44e6-b815-f6ff68f42fc4"},{"name":"2. Initiate Transaction","item":[{"name":"Initiate Card Payment","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Response has reference and paymentLinkUrl', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('reference');","  pm.expect(data).to.have.property('paymentLinkUrl');","  pm.expect(data).to.have.property('paymentCode');","  pm.expect(data).to.have.property('totalAmountCharge');","  pm.expect(data).to.have.property('transactionFee');","});"],"id":"70968f1f-990f-49be-8526-06e2761264fa"}}],"id":"362cbe0f-586a-46b6-8f2a-26aee9c215f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"amount\": 500000,\n  \"outletId\": \"outlet-001\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\",\n  \"reference\": \"TXN-REF-20260827-001\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/initiate","urlObject":{"path":["api","v1","merchant","transaction","initiate"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"bc93fc8b-371b-40a5-965c-c60c82680fbf","name":"Success — Card transaction created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"amount\": 500000,\n  \"outletId\": \"outlet-001\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\",\n  \"reference\": \"TXN-REF-20260827-001\"\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/initiate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction initiated successfully\",\n  \"traceId\": \"trace-a1b2c3d4\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-001\",\n    \"paymentToken\": \"WEB_CARD\",\n    \"transactionFee\": 75.00,\n    \"totalAmountCharge\": 5075.00,\n    \"feeBearer\": \"CUSTOMER\",\n    \"paymentLinkUrl\": \"https://checkout.afara.com/pay/TXN-REF-20260827-001\",\n    \"paymentCode\": \"PAY-CODE-abc123\"\n  }\n}"}],"_postman_id":"362cbe0f-586a-46b6-8f2a-26aee9c215f0"},{"name":"Initiate USSD Payment","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Response has reference and ussdString', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('reference');","  pm.expect(data).to.have.property('ussdString');","  pm.expect(data.ussdString).to.be.a('string').and.to.not.be.empty;","});"],"id":"fbe005f0-a109-4c34-bf16-a7ca7086b7e1"}}],"id":"d94cbff4-7fc4-45ab-9249-d4123f1e8732","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_USSD\",\n  \"amount\": 1000000,\n  \"outletId\": \"outlet-001\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\",\n  \"bankCode\": \"044\",\n  \"reference\": \"TXN-REF-20260827-002\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/initiate","urlObject":{"path":["api","v1","merchant","transaction","initiate"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"e6f43fa9-82d6-474f-b12a-d26963e3de4e","name":"Success — USSD transaction created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_USSD\",\n  \"amount\": 1000000,\n  \"outletId\": \"outlet-001\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\",\n  \"bankCode\": \"044\",\n  \"reference\": \"TXN-REF-20260827-002\"\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/initiate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction initiated successfully\",\n  \"traceId\": \"trace-e5f6a7b8\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-002\",\n    \"paymentToken\": \"WEB_USSD\",\n    \"transactionFee\": 50.00,\n    \"totalAmountCharge\": 10050.00,\n    \"feeBearer\": \"CUSTOMER\",\n    \"ussdString\": \"*737*500000*0123456#\"\n  }\n}"}],"_postman_id":"d94cbff4-7fc4-45ab-9249-d4123f1e8732"},{"name":"Initiate Transfer Payment","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Response has reference and virtualAccountResponse', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('reference');","  pm.expect(data).to.have.property('virtualAccountResponse');","  pm.expect(data.virtualAccountResponse).to.have.property('accountNumber');","  pm.expect(data.virtualAccountResponse).to.have.property('accountName');","});"],"id":"0f82a44c-0b94-4eef-8a9f-30630f0da3e3"}}],"id":"66caae3e-0559-4422-93d3-235338d21ebe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_TRANSFER\",\n  \"amount\": 2500000,\n  \"outletId\": \"outlet-002\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\",\n  \"reference\": \"TXN-REF-20260827-003\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/initiate","urlObject":{"path":["api","v1","merchant","transaction","initiate"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"13896447-f93f-416d-985c-dff782522d82","name":"Success — Transfer transaction created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_TRANSFER\",\n  \"amount\": 2500000,\n  \"outletId\": \"outlet-002\",\n  \"email\": \"customer@example.com\",\n  \"currency\": \"NGN\",\n  \"reference\": \"TXN-REF-20260827-003\"\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/initiate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction initiated successfully\",\n  \"traceId\": \"trace-i9j0k1l2\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-003\",\n    \"paymentToken\": \"WEB_TRANSFER\",\n    \"transactionFee\": 25.00,\n    \"totalAmountCharge\": 2525.00,\n    \"feeBearer\": \"SELF\",\n    \"virtualAccountResponse\": {\n      \"accountNumber\": \"1234567890\",\n      \"accountName\": \"Sofri/TXN-REF-20260827-003\",\n      \"bankCode\": \"000\",\n      \"bankName\": \"Zenith Bank\",\n      \"provider\": \"ZEST\",\n      \"isStatic\": false,\n      \"expiryDateTime\": \"2026-08-27T18:30:00\",\n      \"amount\": \"2525.00\"\n    }\n  }\n}"}],"_postman_id":"66caae3e-0559-4422-93d3-235338d21ebe"}],"id":"91385c36-497f-4c75-9802-8803fc160b23","description":"<p>Creates the transaction record and returns channel-specific data. Amounts are in kobo (minor units). For card: returns paymentLinkUrl + paymentCode. For USSD: returns ussdString (requires bankCode). For transfer: returns virtualAccountResponse.</p>\n","_postman_id":"91385c36-497f-4c75-9802-8803fc160b23"},{"name":"3. Process Transaction","item":[{"name":"Process Card — Step 1: Submit card (triggers OTP)","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('OTP sent — pending auth, has paymentId', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('success', false);","  pm.expect(data).to.have.property('responseCode');","  pm.expect(data.metadata).to.have.property('paymentId');","  pm.expect(['send_otp', 'T0']).to.include(data.responseCode);","  pm.environment.set('card_paymentId', data.metadata.paymentId);","});"],"id":"a1fa8ffe-084b-4716-859a-2e96de1cdb26"}}],"id":"cfc4d0cd-d0c7-488a-a1af-871987cdaa02","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"reference\": \"TXN-REF-20260827-001\",\n  \"cardRequest\": {\n    \"cardName\": \"John Doe\",\n    \"pan\": \"5061020100000000004\",\n    \"pin\": \"1234\",\n    \"cvv2\": \"123\",\n    \"expiryMonth\": \"09\",\n    \"expiryYear\": \"27\",\n    \"customerId\": \"customer@example.com\",\n    \"cardType\": \"VERVE\"\n  },\n  \"deviceInformation\": {\n    \"httpBrowserLanguage\": \"en-US\",\n    \"httpBrowserJavaEnabled\": false,\n    \"httpBrowserJavaScriptEnabled\": true,\n    \"httpBrowserColorDepth\": 24,\n    \"httpBrowserScreenHeight\": 1080,\n    \"httpBrowserScreenWidth\": 1920,\n    \"httpBrowserTimeDifference\": \"0\",\n    \"userAgentBrowserValue\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/process","urlObject":{"path":["api","v1","merchant","transaction","process"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"078fbe37-9ed2-47cf-90b5-62328b700f1b","name":"OTP sent — paymentId returned for continuation","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"reference\": \"TXN-REF-20260827-001\",\n  \"cardRequest\": {\n    \"cardName\": \"John Doe\",\n    \"pan\": \"5061020100000000004\",\n    \"pin\": \"1234\",\n    \"cvv2\": \"123\",\n    \"expiryMonth\": \"09\",\n    \"expiryYear\": \"27\",\n    \"customerId\": \"customer@example.com\",\n    \"cardType\": \"VERVE\"\n  },\n  \"deviceInformation\": {\n    \"httpBrowserLanguage\": \"en-US\",\n    \"httpBrowserJavaEnabled\": false,\n    \"httpBrowserJavaScriptEnabled\": true,\n    \"httpBrowserColorDepth\": 24,\n    \"httpBrowserScreenHeight\": 1080,\n    \"httpBrowserScreenWidth\": 1920,\n    \"httpBrowserTimeDifference\": \"0\",\n    \"userAgentBrowserValue\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\"\n  }\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/process"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"OTP sent to customer\",\n  \"traceId\": \"trace-h8i9j0k1\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-001\",\n    \"success\": false,\n    \"responseCode\": \"send_otp\",\n    \"narration\": \"OTP has been sent to the registered mobile number\",\n    \"metadata\": {\n      \"paymentId\": \"PAY-98765\",\n      \"provider\": \"INTERSWITCH\"\n    }\n  }\n}"}],"_postman_id":"cfc4d0cd-d0c7-488a-a1af-871987cdaa02"},{"name":"Process Card — Step 2: Submit OTP (success)","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Card payment successful', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('success', true);","  pm.expect(data).to.have.property('responseCode', '00');","});"],"id":"06a343c2-7e9b-4325-b715-03c80d4f7488"}}],"id":"7c8f181f-9d0a-415d-8402-c2ab961da2fb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"reference\": \"TXN-REF-20260827-001\",\n  \"cardRequest\": {\n    \"cardName\": \"John Doe\",\n    \"pan\": \"5061020100000000004\",\n    \"pin\": \"1234\",\n    \"cvv2\": \"123\",\n    \"expiryMonth\": \"09\",\n    \"expiryYear\": \"27\",\n    \"customerId\": \"customer@example.com\",\n    \"paymentId\": \"PAY-98765\",\n    \"otp\": \"123456\",\n    \"cardType\": \"VERVE\"\n  },\n  \"deviceInformation\": {\n    \"httpBrowserLanguage\": \"en-US\",\n    \"httpBrowserJavaEnabled\": false,\n    \"httpBrowserJavaScriptEnabled\": true,\n    \"httpBrowserColorDepth\": 24,\n    \"httpBrowserScreenHeight\": 1080,\n    \"httpBrowserScreenWidth\": 1920,\n    \"httpBrowserTimeDifference\": \"0\",\n    \"userAgentBrowserValue\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/process","urlObject":{"path":["api","v1","merchant","transaction","process"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"e802d3bc-5271-4495-876a-48e8df8c1c1d","name":"Success — Card payment completed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"reference\": \"TXN-REF-20260827-001\",\n  \"cardRequest\": {\n    \"cardName\": \"John Doe\",\n    \"pan\": \"5061020100000000004\",\n    \"pin\": \"1234\",\n    \"cvv2\": \"123\",\n    \"expiryMonth\": \"09\",\n    \"expiryYear\": \"27\",\n    \"customerId\": \"customer@example.com\",\n    \"paymentId\": \"PAY-98765\",\n    \"otp\": \"123456\",\n    \"cardType\": \"VERVE\"\n  },\n  \"deviceInformation\": {\n    \"httpBrowserLanguage\": \"en-US\",\n    \"httpBrowserJavaEnabled\": false,\n    \"httpBrowserJavaScriptEnabled\": true,\n    \"httpBrowserColorDepth\": 24,\n    \"httpBrowserScreenHeight\": 1080,\n    \"httpBrowserScreenWidth\": 1920,\n    \"httpBrowserTimeDifference\": \"0\",\n    \"userAgentBrowserValue\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\"\n  }\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/process"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction processed successfully\",\n  \"traceId\": \"trace-g7h8i9j0\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-001\",\n    \"success\": true,\n    \"responseCode\": \"00\",\n    \"narration\": \"Approved or completed successfully\",\n    \"metadata\": {\n      \"provider\": \"INTERSWITCH\",\n      \"providerRef\": \"IS-REF-98765\"\n    },\n    \"callbackUrl\": \"/api/v1/external-sec/ussd/callback\"\n  }\n}"}],"_postman_id":"7c8f181f-9d0a-415d-8402-c2ab961da2fb"},{"name":"Process Card — Step 2: Submit OTP (failed)","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('OTP validation failed', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('success', false);","  pm.expect(data).to.have.property('responseCode', '51');","});"],"id":"4d16736c-3e8d-4d30-b182-eb96b8ebe84d"}}],"id":"5c9a35b1-8151-4a72-ae18-644059bf2b69","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"reference\": \"TXN-REF-20260827-001\",\n  \"cardRequest\": {\n    \"cardName\": \"John Doe\",\n    \"pan\": \"5061020100000000004\",\n    \"pin\": \"1234\",\n    \"cvv2\": \"123\",\n    \"expiryMonth\": \"09\",\n    \"expiryYear\": \"27\",\n    \"customerId\": \"customer@example.com\",\n    \"paymentId\": \"PAY-98765\",\n    \"otp\": \"000000\",\n    \"cardType\": \"VERVE\"\n  },\n  \"deviceInformation\": {\n    \"httpBrowserLanguage\": \"en-US\",\n    \"httpBrowserJavaEnabled\": false,\n    \"httpBrowserJavaScriptEnabled\": true,\n    \"httpBrowserColorDepth\": 24,\n    \"httpBrowserScreenHeight\": 1080,\n    \"httpBrowserScreenWidth\": 1920,\n    \"httpBrowserTimeDifference\": \"0\",\n    \"userAgentBrowserValue\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/process","urlObject":{"path":["api","v1","merchant","transaction","process"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"3ee20082-de20-448c-9682-4caac1532f2d","name":"Failed — Incorrect OTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_CARD\",\n  \"reference\": \"TXN-REF-20260827-001\",\n  \"cardRequest\": {\n    \"cardName\": \"John Doe\",\n    \"pan\": \"5061020100000000004\",\n    \"pin\": \"1234\",\n    \"cvv2\": \"123\",\n    \"expiryMonth\": \"09\",\n    \"expiryYear\": \"27\",\n    \"customerId\": \"customer@example.com\",\n    \"paymentId\": \"PAY-98765\",\n    \"otp\": \"000000\",\n    \"cardType\": \"VERVE\"\n  },\n  \"deviceInformation\": {\n    \"httpBrowserLanguage\": \"en-US\",\n    \"httpBrowserJavaEnabled\": false,\n    \"httpBrowserJavaScriptEnabled\": true,\n    \"httpBrowserColorDepth\": 24,\n    \"httpBrowserScreenHeight\": 1080,\n    \"httpBrowserScreenWidth\": 1920,\n    \"httpBrowserTimeDifference\": \"0\",\n    \"userAgentBrowserValue\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)\"\n  }\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/process"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"responseMessage\": \"OTP validation failed\",\n  \"traceId\": \"trace-h8i9j0k1\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-001\",\n    \"success\": false,\n    \"responseCode\": \"51\",\n    \"narration\": \"Invalid OTP\",\n    \"metadata\": {\n      \"provider\": \"INTERSWITCH\"\n    }\n  }\n}"}],"_postman_id":"5c9a35b1-8151-4a72-ae18-644059bf2b69"},{"name":"Process USSD — Submit for processing","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('USSD processing — has ussdString in metadata', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('success', true);","  pm.expect(data).to.have.property('metadata');","  pm.expect(data.metadata).to.have.property('ussdString');","});"],"id":"f075a531-b181-4570-b432-822a9fe02a20"}}],"id":"da23588d-3df0-49ff-aec2-677449844c2d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_USSD\",\n  \"reference\": \"TXN-REF-20260827-002\",\n  \"bankCode\": \"044\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/process","urlObject":{"path":["api","v1","merchant","transaction","process"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"7be629bc-c153-4dc9-b525-002240f3b0b0","name":"Note — USSD payment processing","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_USSD\",\n  \"reference\": \"TXN-REF-20260827-002\",\n  \"bankCode\": \"044\"\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/process"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction processing\",\n  \"traceId\": \"trace-i9j0k1l2\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"reference\": \"TXN-REF-20260827-002\",\n    \"success\": true,\n    \"responseCode\": \"090\",\n    \"narration\": \"USSD reference generated: *901*500000*1005000*0123456#\",\n    \"metadata\": {\n      \"ussdString\": \"*901*500000*1005000*0123456#\",\n      \"reference\": \"TXN-REF-20260827-002\",\n      \"coralpayTransactionId\": \"COR-987654\",\n      \"provider\": \"CORALPAY\"\n    }\n  }\n}"}],"_postman_id":"da23588d-3df0-49ff-aec2-677449844c2d"},{"name":"WEB_TRANSFER — Callback-based (no process call)","id":"fc730d97-13bc-4cf4-8d80-bd4c9b2f46b4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_TRANSFER\",\n  \"reference\": \"TXN-REF-20260827-003\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:9081/api/v1/merchant/transaction/process","urlObject":{"path":["api","v1","merchant","transaction","process"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"d7b203c2-8ef4-404f-a805-15b25cfb12a7","name":"Note — Do not call process for WEB_TRANSFER","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"body":{"mode":"raw","raw":"{\n  \"paymentToken\": \"WEB_TRANSFER\",\n  \"reference\": \"TXN-REF-20260827-003\"\n}"},"url":"http://localhost:9081/api/v1/merchant/transaction/process"},"status":"Method Not Allowed","code":405,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"responseMessage\": \"WEB_TRANSFER is confirmed via VA provider callback, not the process endpoint\",\n  \"traceId\": \"trace-note\",\n  \"serviceCode\": \"OMNI_TNX\"\n}"}],"_postman_id":"fc730d97-13bc-4cf4-8d80-bd4c9b2f46b4"}],"id":"81d9be70-d680-4758-a1f9-1dfd7bb8cae8","description":"<p>Processes a previously initiated transaction. Card payments are multi-step: first call submits card details and triggers OTP (returns paymentId in metadata), continuation call submits OTP/3DS with paymentId. USSD is single-step — triggers USSD reference generation and schedules status polling. WEB_TRANSFER does NOT go through the process endpoint — the VA provider confirms via callback after the customer transfers.</p>\n","_postman_id":"81d9be70-d680-4758-a1f9-1dfd7bb8cae8"},{"name":"4. Get Transaction By ID","item":[{"name":"Get Successful Transaction","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Transaction is SUCCESS', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('transactionStatus', 'SUCCESS');","});"],"id":"78308ac4-2e83-44f7-a1d9-59a6d65773f7"}}],"id":"4efe1c33-1902-4aa9-b67c-b184080e08fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_JWT_TOKEN_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/txn-id-abc123","urlObject":{"path":["api","v1","merchant","transaction","txn-id-abc123"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"aad02ac5-3f15-45ff-b383-b1c7b18b32b2","name":"Success — Transaction found","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_JWT_TOKEN_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/txn-id-abc123"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction retrieved successfully\",\n  \"traceId\": \"trace-k1l2m3n4\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"id\": \"txn-id-abc123\",\n    \"transactionReference\": \"TXN-REF-20260827-001\",\n    \"merchantId\": \"merchant-001\",\n    \"merchantName\": \"Acme Corp\",\n    \"outletId\": \"outlet-001\",\n    \"outletName\": \"Lagos Main Branch\",\n    \"amountInMinor\": 500000,\n    \"transactionFee\": 75.00,\n    \"totalAmountCharge\": 5075.00,\n    \"transactionStatus\": \"SUCCESS\",\n    \"paymentStatus\": \"COMPLETED\",\n    \"totalAmountReceived\": 5000.00,\n    \"paymentChannel\": \"WEB\",\n    \"transactionMode\": \"LIVE\",\n    \"currency\": \"NGN\",\n    \"disputeStatus\": \"NOT_DISPUTED\",\n    \"settlementStatus\": \"SETTLED\",\n    \"paymentProcessor\": \"NIBSS\",\n    \"narration\": \"Approved or completed successfully\",\n    \"cardHolderName\": \"John Doe\",\n    \"cardType\": \"VERVE\",\n    \"cardPan\": \"506102*********004\",\n    \"createdAt\": \"2026-08-27T10:15:30+01:00\",\n    \"updatedAt\": \"2026-08-27T10:16:45+01:00\",\n    \"ipAddress\": \"192.168.1.100\",\n    \"paymentToken\": \"WEB_CARD\",\n    \"feeConfigurationId\": \"fee-config-001\",\n    \"settlementId\": \"settlement-001\"\n  }\n}"}],"_postman_id":"4efe1c33-1902-4aa9-b67c-b184080e08fe"},{"name":"Get Pending Transaction","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Transaction is IN_PROGRESS', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('transactionStatus', 'IN_PROGRESS');","});"],"id":"bae50f0c-b3f5-42be-92d6-88876c148d59"}}],"id":"fbcf6a19-23e7-4020-bb1a-71579005e6cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_JWT_TOKEN_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/txn-id-def456","urlObject":{"path":["api","v1","merchant","transaction","txn-id-def456"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"ff974bcd-d737-47aa-be11-9d8eae1ab14e","name":"Success — Transaction pending","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_JWT_TOKEN_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/txn-id-def456"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction retrieved successfully\",\n  \"traceId\": \"trace-l2m3n4o5\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"id\": \"txn-id-def456\",\n    \"transactionReference\": \"TXN-REF-20260827-002\",\n    \"merchantId\": \"merchant-001\",\n    \"merchantName\": \"Acme Corp\",\n    \"outletId\": \"outlet-001\",\n    \"outletName\": \"Lagos Main Branch\",\n    \"amountInMinor\": 1000000,\n    \"transactionFee\": 50.00,\n    \"totalAmountCharge\": 10050.00,\n    \"transactionStatus\": \"IN_PROGRESS\",\n    \"paymentStatus\": \"PENDING\",\n    \"totalAmountReceived\": 0,\n    \"paymentChannel\": \"WEB\",\n    \"transactionMode\": \"LIVE\",\n    \"currency\": \"NGN\",\n    \"disputeStatus\": \"NOT_DISPUTED\",\n    \"settlementStatus\": \"NOT_APPLICABLE\",\n    \"paymentProcessor\": \"CORALPAY\",\n    \"narration\": \"Awaiting USSD payment confirmation\",\n    \"bankProvider\": \"Access Bank\",\n    \"createdAt\": \"2026-08-27T11:20:00+01:00\",\n    \"updatedAt\": \"2026-08-27T11:20:15+01:00\",\n    \"paymentToken\": \"WEB_USSD\",\n    \"feeConfigurationId\": \"fee-config-002\"\n  }\n}"}],"_postman_id":"fbcf6a19-23e7-4020-bb1a-71579005e6cd"},{"name":"Transaction Not Found","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 404 or error', () => {","  pm.expect(pm.response.code).to.be.oneOf([404, 400, 500]);","});"],"id":"95a698e4-f3b4-4b35-b03e-13fe62c4ada6"}}],"id":"7f3e3a95-b61f-4ce5-a99b-bf8f8f753ac4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_JWT_TOKEN_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/non-existent-id","urlObject":{"path":["api","v1","merchant","transaction","non-existent-id"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"d2bf4b46-ce4c-45d3-9adc-749ad8e7c529","name":"Not Found","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_JWT_TOKEN_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/non-existent-id"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"responseMessage\": \"Transaction not found\",\n  \"traceId\": \"trace-m3n4o5p6\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"errors\": [\n    {\n      \"message\": \"No transaction found with the given ID\",\n      \"code\": \"TRANSACTION_NOT_FOUND\"\n    }\n  ]\n}"}],"_postman_id":"7f3e3a95-b61f-4ce5-a99b-bf8f8f753ac4"}],"id":"5a9977ab-6110-44ca-82ba-b4b1129ea56a","description":"<p>Retrieve a single transaction by its ID. Requires JWT authentication with VIEW_TRANSACTION or MANAGE_TRANSACTION permission.</p>\n","_postman_id":"5a9977ab-6110-44ca-82ba-b4b1129ea56a"},{"name":"5. Transaction Status Check","item":[{"name":"Status — Successful","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Transaction is SUCCESS', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('transactionStatus');","});"],"id":"e13bf2f5-feb4-4af8-bdc4-5965a249f9ba"}}],"id":"1e31c2a9-e986-4c7b-9cc0-fe1d03c350fb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/status/TXN-REF-20260827-001","urlObject":{"path":["api","v1","merchant","transaction","status","TXN-REF-20260827-001"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"7173634c-7bf2-4ff8-992e-51b1e922445f","name":"Success — Transaction completed","originalRequest":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/status/TXN-REF-20260827-001"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction status retrieved\",\n  \"traceId\": \"trace-n4o5p6q7\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"id\": \"txn-id-abc123\",\n    \"transactionReference\": \"TXN-REF-20260827-001\",\n    \"transactionStatus\": \"SUCCESS\",\n    \"paymentStatus\": \"COMPLETED\",\n    \"totalAmountCharge\": 5075.00,\n    \"narration\": \"Approved or completed successfully\",\n    \"paymentToken\": \"WEB_CARD\",\n    \"createdAt\": \"2026-08-27T10:15:30+01:00\",\n    \"updatedAt\": \"2026-08-27T10:16:45+01:00\"\n  }\n}"}],"_postman_id":"1e31c2a9-e986-4c7b-9cc0-fe1d03c350fb"},{"name":"Status — Failed","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Transaction is FAILED', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('transactionStatus', 'FAILED');","});"],"id":"6020acab-64fd-46b2-9a72-4b48480be4ad"}}],"id":"474506c4-8f52-4332-978a-d633cf3da2d4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/status/TXN-REF-20260827-099","urlObject":{"path":["api","v1","merchant","transaction","status","TXN-REF-20260827-099"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"e0aa6b27-0a55-4b4f-aebd-be41a385b291","name":"Success — Transaction failed","originalRequest":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/status/TXN-REF-20260827-099"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction status retrieved\",\n  \"traceId\": \"trace-o5p6q7r8\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"id\": \"txn-id-ghi789\",\n    \"transactionReference\": \"TXN-REF-20260827-099\",\n    \"transactionStatus\": \"FAILED\",\n    \"paymentStatus\": \"INCOMPLETE_PAYMENT\",\n    \"totalAmountCharge\": 5075.00,\n    \"narration\": \"Insufficient funds\",\n    \"paymentToken\": \"WEB_CARD\",\n    \"createdAt\": \"2026-08-27T09:30:00+01:00\",\n    \"updatedAt\": \"2026-08-27T09:31:20+01:00\"\n  }\n}"}],"_postman_id":"474506c4-8f52-4332-978a-d633cf3da2d4"},{"name":"Status — Pending","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Transaction is IN_PROGRESS', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.have.property('transactionStatus', 'IN_PROGRESS');","});"],"id":"935a6522-df43-49c7-854d-a8064f0313dc"}}],"id":"2957a76d-dfb5-47dc-968d-d30d6749a6cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/status/TXN-REF-20260827-002","urlObject":{"path":["api","v1","merchant","transaction","status","TXN-REF-20260827-002"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"10ecdf22-0e6f-4455-8c14-8402fdd43a53","name":"Success — Transaction pending","originalRequest":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/transaction/status/TXN-REF-20260827-002"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"Transaction status retrieved\",\n  \"traceId\": \"trace-p6q7r8s9\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": {\n    \"id\": \"txn-id-def456\",\n    \"transactionReference\": \"TXN-REF-20260827-002\",\n    \"transactionStatus\": \"IN_PROGRESS\",\n    \"paymentStatus\": \"PENDING\",\n    \"totalAmountCharge\": 10050.00,\n    \"narration\": \"Awaiting USSD payment confirmation\",\n    \"paymentToken\": \"WEB_USSD\",\n    \"createdAt\": \"2026-08-27T11:20:00+01:00\",\n    \"updatedAt\": \"2026-08-27T11:20:15+01:00\"\n  }\n}"}],"_postman_id":"2957a76d-dfb5-47dc-968d-d30d6749a6cc"}],"id":"67e08e18-4059-4fba-9938-3cb9d920a7a4","description":"<p>Check the status of a transaction by its reference. Uses API key authentication.</p>\n","_postman_id":"67e08e18-4059-4fba-9938-3cb9d920a7a4"},{"name":"6. USSD - Get Supported Banks","item":[{"name":"Get All Supported Banks","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Response is an array of banks', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.be.an('array');","  if (data.length > 0) {","    pm.expect(data[0]).to.have.property('bankName');","    pm.expect(data[0]).to.have.property('bankCode');","    pm.expect(data[0]).to.have.property('ussdString');","  }","});"],"id":"9890733a-66cc-430f-96b4-56b8330bbc03"}}],"id":"d4c39ba3-c39a-4ed8-8f58-f15f02d2e7e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/ussd/banks","urlObject":{"path":["api","v1","merchant","ussd","banks"],"host":["http://localhost:9081"],"query":[],"variable":[]}},"response":[{"id":"669a7cc6-ba6f-4291-bbfc-120ac27850f2","name":"Success — All banks","originalRequest":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/ussd/banks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"USSD banks retrieved successfully\",\n  \"traceId\": \"trace-q7r8s9t0\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": [\n    {\n      \"bankName\": \"Access Bank\",\n      \"bankCode\": \"044\",\n      \"ussdString\": \"*901*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"First Bank of Nigeria\",\n      \"bankCode\": \"011\",\n      \"ussdString\": \"*894*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Guaranty Trust Bank\",\n      \"bankCode\": \"058\",\n      \"ussdString\": \"*737*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"United Bank for Africa\",\n      \"bankCode\": \"033\",\n      \"ussdString\": \"*919*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Zenith Bank\",\n      \"bankCode\": \"057\",\n      \"ussdString\": \"*966*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Stanbic IBTC Bank\",\n      \"bankCode\": \"039\",\n      \"ussdString\": \"*909*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Wema Bank\",\n      \"bankCode\": \"035\",\n      \"ussdString\": \"*945*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Sterling Bank\",\n      \"bankCode\": \"023\",\n      \"ussdString\": \"*822*500000*{amount}*{reference}#\"\n    }\n  ]\n}"}],"_postman_id":"d4c39ba3-c39a-4ed8-8f58-f15f02d2e7e5"},{"name":"Get Banks — Filtered by Provider","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Status is 200', () => pm.response.to.have.status(200));","pm.test('Response is an array', () => {","  const data = pm.response.json().data;","  pm.expect(data).to.be.an('array');","});"],"id":"5d6af2a9-b248-4200-9eea-2b17abd3b577"}}],"id":"23254f9a-46a3-4644-a17d-685140df80e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":"http://localhost:9081/api/v1/merchant/ussd/banks?provider=CoralPay","urlObject":{"path":["api","v1","merchant","ussd","banks"],"host":["http://localhost:9081"],"query":[{"key":"provider","value":"CoralPay"}],"variable":[]}},"response":[{"id":"723e1c46-8c3c-420d-ad89-2515d77d15cb","name":"Success — Filtered by provider","originalRequest":{"method":"GET","header":[{"key":"Api-Public-Key","value":"YOUR_API_KEY_HERE"}],"url":{"raw":"http://localhost:9081/api/v1/merchant/ussd/banks?provider=CoralPay","host":["http://localhost:9081"],"path":["api","v1","merchant","ussd","banks"],"query":[{"key":"provider","value":"CoralPay"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"responseMessage\": \"USSD banks retrieved successfully\",\n  \"traceId\": \"trace-r8s9t0u1\",\n  \"serviceCode\": \"OMNI_TNX\",\n  \"data\": [\n    {\n      \"bankName\": \"Access Bank\",\n      \"bankCode\": \"044\",\n      \"ussdString\": \"*901*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Guaranty GTBank\",\n      \"bankCode\": \"058\",\n      \"ussdString\": \"*737*500000*{amount}*{reference}#\"\n    },\n    {\n      \"bankName\": \"Zenith Bank\",\n      \"bankCode\": \"057\",\n      \"ussdString\": \"*966*500000*{amount}*{reference}#\"\n    }\n  ]\n}"}],"_postman_id":"23254f9a-46a3-4644-a17d-685140df80e4"}],"id":"8abcc97c-2c8c-421e-9257-287448aa554b","description":"<p>Retrieve the list of banks supported for USSD payments. Optionally filter by provider. Uses API key authentication.</p>\n","_postman_id":"8abcc97c-2c8c-421e-9257-287448aa554b"}],"variable":[{"key":"base_url","value":"http://localhost:9081"},{"key":"api_key","value":"YOUR_API_KEY_HERE"},{"key":"jwt_token","value":"YOUR_JWT_TOKEN_HERE"}]}