{"info":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","description":"<html><head></head><body><p>Variables:<br>[ Testing Env ]</p>\n<p>{{ API_BASE_URL }} : <a href=\"https://testapi.bonum.mn\">https://testapi.bonum.mn</a></p>\n<p>{{ APP_SECRET }}: 1fc53f9389f489ff6e04617bd6338a710e1e7c579cb572aec421f560f363119c0e0039e4b765e53c5339c1e6c77279854b20e998ed4599983a9c9dba12b36e89ce7ee7659043ebffcf77a095587bf694</p>\n<p>{{ DEFAULT_TERMINAL_ID }}: 17171119</p>\n<p>{{ MERCHANT_CHECKSUM_KEY }} : 755753df1f8fb16da1131cc318f1bcec9b5df3e39ae5dee902900cd186e7ece8</p>\n<hr>\n<p>[ Prod Env ]</p>\n<p>{{ API_BASE_URL }} : <a href=\"https://testapi.bonum.mn\">https://apis.bonum.mn</a></p>\n<p>{{ APP_SECRET }}: Ask Bonum</p>\n<p>{{ DEFAULT_TERMINAL_ID }} : Ask Bonum</p>\n<hr>\n<p>Localization:</p>\n<p>Language:<br>Accept-Language: mn | en</p>\n<p>use this header to all requestes to get back localized message.</p>\n<hr>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"6164222","collectionId":"5ef67789-2136-468e-902b-8ee597f847fd","publishedId":"2sB2cYbzu8","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-04-11T02:52:40.000Z"},"item":[{"name":"Authentication","item":[{"name":"Get token","event":[{"listen":"test","script":{"id":"bc0970fa-80d2-4642-bf3d-3d89d0b54c36","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","var jsonData = pm.response.json();","pm.test(\"Token exists\", function () {","    ","    pm.expect(jsonData).to.have.property(\"refreshToken\");","    pm.expect(jsonData).to.have.property(\"accessToken\");","    ","    pm.environment.set(\"accessToken\", jsonData.accessToken);","    pm.environment.set(\"refreshToken\", jsonData.refreshToken);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"da580172-bbf2-4ed3-a31b-0c4c601f9bf6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"AppSecret {{APP_SECRET}}","type":"text"},{"key":"X-TERMINAL-ID","value":"{{DEFAULT_TERMINAL_ID}}","description":"<p>{{DEFAULT_TERMINAL_ID}}</p>\n","type":"text"},{"key":"","value":"","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/auth/create","description":"<ul>\n<li><p>{{ APP_SECRET }}: It is created on the merchant portal</p>\n</li>\n<li><p>{{ DEFAULT_TERMINAL_ID }}: create a terminal on merchant portal and use the terminalId value for this variable</p>\n</li>\n</ul>\n<p>Caution:<br />This endpoint is protected by rate limiting. Excessive or too frequent requests will result in a <strong><code>TOO_MANY_REQUESTS</code></strong> error.</p>\n","urlObject":{"path":["bonum-gateway","ecommerce","auth","create"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"6b38c8b7-2e6d-4061-aa67-3ffc61a535c5","name":"TOO_MANY_REQUEST: Rate Limit Response","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"AppSecret {{APP_SECRET}}","type":"text"},{"key":"X-TERMINAL-ID","value":"{{DEFAULT_TERMINAL_ID}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{AUTH_URL}}/ecommerce/auth/create"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Tue, 06 Jan 2026 07:41:48 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-timezone","value":"Asia/Ulaanbaatar"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"traceId\": \"695cbcbce9d3faa6d491a7a08b388972\",\n    \"errorCode\": null,\n    \"error\": null,\n    \"message\": \"Rate-Limit: Use previous token. Do not get token too frequently,\",\n    \"data\": null,\n    \"detail\": null,\n    \"duration\": 452,\n    \"status\": 429\n}"},{"id":"e8922355-0cfb-4cf8-bd4e-b857f96a2622","name":"Get token Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"AppSecret {{APP_SECRET}}","type":"text"},{"key":"X-TERMINAL-ID","value":"{{DEFAULT_TERMINAL_ID}}","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/auth/create"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Wed, 25 Feb 2026 03:39:18 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-timezone","value":"Asia/Ulaanbaatar"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"x-dur","value":"47"},{"key":"x-trace-id","value":"699e6ee6aae8a46793fdd90e25ad77dc"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"tokenType\": \"Bearer\",\n    \"accessToken\": \"bla bla\",\n    \"expiresIn\": 1800,\n    \"refreshToken\": \"bla bla\",\n    \"refreshExpiresIn\": 2000,\n    \"unit\": \"SECONDS\"\n}"}],"_postman_id":"da580172-bbf2-4ed3-a31b-0c4c601f9bf6"},{"name":"Refresh token","event":[{"listen":"test","script":{"id":"c0488e8e-57c4-4b75-9dc0-2985e5945e25","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","var jsonData = pm.response.json();","pm.test(\"Token exists\", function () {","    console.log('accessToken',jsonData.accessToken);","    pm.expect(jsonData).to.have.property(\"accessToken\");","    pm.environment.set(\"accessToken\", jsonData.accessToken);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"7deae2af-7d1a-4eac-a9cc-4e3b19755e14","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{refreshToken}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/auth/refresh","urlObject":{"path":["bonum-gateway","ecommerce","auth","refresh"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"7deae2af-7d1a-4eac-a9cc-4e3b19755e14"}],"id":"b030b28a-ecb3-4fae-b799-57258002c4ab","_postman_id":"b030b28a-ecb3-4fae-b799-57258002c4ab","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}},{"name":"Web payment / All in one","item":[{"name":"Get Payment Providers","id":"664b6eac-4944-44c9-a7f7-2d17a4a9ed27","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/invoices/payment-providers","description":"<p>This returns the active payment options that can be used for your customers.</p>\n<p>This list can be added/modified.</p>\n<p>for example:</p>\n<ul>\n<li><p>QPAY: QR based payment, every bank, and fin-tech apps supports QPAY payment</p>\n</li>\n<li><p>E_COMMERCE: Online Card Payment</p>\n</li>\n<li><p>WE_CHAT: Chinese customers can use their WeChat wallet app to pay the payment.</p>\n</li>\n<li><p>SONO_SHOP: Buy now, Pay Later. Customer can pay the payment with SonoShop.s loan.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["bonum-gateway","ecommerce","invoices","payment-providers"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"43860978-ddcc-4cc8-a212-8c8b957b7bfc","name":"Get Payment Providers","originalRequest":{"method":"GET","header":[],"url":"{{BASE_URL}}/ecommerce/invoices/payment-providers"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Fri, 06 Feb 2026 08:30:58 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-timezone","value":"Asia/Ulaanbaatar"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"provider\": \"QPAY\",\n        \"enabled\": true\n    },\n    {\n        \"provider\": \"E_COMMERCE\",\n        \"enabled\": true\n    },\n    {\n        \"provider\": \"SONO_SHOP\",\n        \"enabled\": true\n    }\n]"}],"_postman_id":"664b6eac-4944-44c9-a7f7-2d17a4a9ed27"},{"name":"Create Invoice","id":"e0aa2314-cfff-4638-8fb0-cf41178710d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 1,\n    \"callback\" : \"\",\n    \"transactionId\" : \"a123456789\", //\"9087654322\",\n    \"expiresIn\": 23000,  // seconds\n    \"providers\" : [\"QPAY\"], // optional, QPAY,  see \"Get Payment Providers\"\n    \"items\" : [ // optional\n        {\n            \"image\" : \"https://mchat-test-resource.s3.amazonaws.com/merch_img_11_67107315ad5f5adcabe59b433ea363cfpng\",\n            \"title\" : \"Test 1\",\n            \"remark\" : \"Test Remark 1\",\n            \"amount\" : 1,\n            \"count\" : 1\n        }\n    ],\n    \"extras\" : [ //optional\n        {\n            \"placeholder\" : \"jordan24\",\n            \"type\" : \"TEXT\", // NUMBER,PHONE,EMAIL,TEXT, ALL,\n            \"required\" : true\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/invoices","description":"<ol>\n<li><p>It creates an invoice and returns a follow-up link for the invoice.</p>\n</li>\n<li><p>the browser or client must be redirected the follow-up link for the user to proceed the payment</p>\n</li>\n<li><p>Once, the payment is completed successfully or cancelled, A notification will be sent to the callback</p>\n</li>\n</ol>\n<p><strong>callback (webhook)</strong> is a http(s) endpoint that our backend sends a notification to by using <strong>POST</strong> method when the user payment is done or cancelled.</p>\n<p><strong>callback (webhook)</strong> must be provided from your side and pre-configured or pre-defined on our side</p>\n<p>POST body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"amount\" : 1,\n    \"callback\" : \"\",\n    \"transactionId\" : \"a123456789\", // len (min = 1, max = 80)\n    \"expiresIn\": 23000,  // seconds\n    \"providers\" : [\"QPAY\"], // optional, QPAY, WE_CHAT, SONO_SHOP, E_COMMERCE  see \"Get Payment Providers\"\n    \"items\" : [ // optional\n        {\n            \"image\" : \"https://mchat-test-resource.s3.amazonaws.com/merch_img_11_67107315ad5f5adcabe59b433ea363cfpng\",\n            \"title\" : \"Test 1\",\n            \"remark\" : \"Test Remark 1\",\n            \"amount\" : 1,\n            \"count\" : 1\n        }\n    ],\n    \"extras\" : [ //optional\n        {\n            \"placeholder\" : \"jordan24\",\n            \"type\" : \"TEXT\", // NUMBER,PHONE,EMAIL,TEXT, ALL,\n            \"required\" : true\n        }\n    ]\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["bonum-gateway","ecommerce","invoices"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"7916e1bb-6046-409f-b457-ff796c89b092","name":"Create Invoice","originalRequest":{"method":"POST","header":[{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 1,\n    \"callback\" : \"\",\n    \"transactionId\" : \"a123456789\", //\"9087654322\",\n    \"expiresIn\": 23000,  // seconds\n    \"providers\" : [\"QPAY\"], // optional, QPAY, WE_CHAT, SONO_SHOP, E_COMMERCE,  see \"Get Payment Providers\"\n    \"items\" : [ // optional\n        {\n            \"image\" : \"https://mchat-test-resource.s3.amazonaws.com/merch_img_11_67107315ad5f5adcabe59b433ea363cfpng\",\n            \"title\" : \"Test 1\",\n            \"remark\" : \"Test Remark 1\",\n            \"amount\" : 1,\n            \"count\" : 1\n        }\n    ],\n    \"extras\" : [ //optional\n        {\n            \"placeholder\" : \"jordan24\",\n            \"type\" : \"TEXT\", // NUMBER,PHONE,EMAIL,TEXT, ALL,\n            \"required\" : true\n        }\n    ]\n}\n","options":{"raw":{"language":"json"}}},"url":"{{BASE_URL}}/ecommerce/invoices"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"x-timezone","value":"Asia/Ulaanbaatar"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 23 Sep 2025 01:14:19 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"invoiceId\": \"8cf2c49d200f049f2b384f0adf42b981c141b6f269a137ea9616ea93e80c9d4d\",\n    \"followUpLink\": \"https://ecommerce.bonum.mn/ecommerce?invoiceId=c511ea63fbc08e8ea2ca6879b07bf764\"\n}"}],"_postman_id":"e0aa2314-cfff-4638-8fb0-cf41178710d5"},{"name":"Get Invoice Status (Testing)","id":"47f5985e-dab3-49e5-be35-44fbe30fff9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/invoices/22c4f07f9e198b3953dd1fbc7b240af6904bcb221ce1f1b79c57f4812a3ce38e","description":"<p>This service returns the payment status created by the service \"Create Invoice\"</p>\n<p>CAUTION: DO NOT USE THIS SERVICE ON PRODUCTION.</p>\n<p>- To check invoice status, use your local data and webhook message delievery: Invoice record is stored on your side, and once a webhook is received, update the invoice row.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["bonum-gateway","ecommerce","invoices","22c4f07f9e198b3953dd1fbc7b240af6904bcb221ce1f1b79c57f4812a3ce38e"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"47f5985e-dab3-49e5-be35-44fbe30fff9e"},{"name":"Set Invoice To Paid Status (Testing)","id":"c084f13e-d09a-46ac-93e3-979c9a1f14f9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"amount\" : 100,\n    \"transactionId\" : \"abs12345678909876544321\"\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/bonum-gateway/ecommerce/invoices/paid?invoiceId=22c4f07f9e198b3953dd1fbc7b240af6c2529c16437df58e54acfccf1278c98a","description":"<ol>\n<li><p>It creates an invoice and returns a follow-up link for the invoice.</p>\n</li>\n<li><p>the browser or client must be redirected the follow-up link for the user to proceed the payment</p>\n</li>\n<li><p>Once, the payment is completed successfully or cancelled, A notification will be sent to the callback</p>\n</li>\n</ol>\n<p><strong>callback</strong> is a http(s) endpoint that our backend sends a notification to by using <strong>POST</strong> method when the user payment is done or cancelled.</p>\n<p><strong>callback</strong> must be provided from your side and pre-configured or pre-defined on our side</p>\n<p>POST body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"type\" : \"PAYMENT\",\n    \"status\" : \"SUCCESS\", // \"FAILED\"\n    \"body\" : {\n        \"amount\" : 100,\n        \"transactionId\" : \"abs12345678909876544321\",\n        \"invoiceId\" : \"321\"\n    }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["bonum-gateway","ecommerce","invoices","paid"],"host":["{{API_BASE_URL}}"],"query":[{"description":{"content":"<p>createInvoiceResponse.invoiceId</p>\n","type":"text/plain"},"key":"invoiceId","value":"22c4f07f9e198b3953dd1fbc7b240af6c2529c16437df58e54acfccf1278c98a"}],"variable":[]}},"response":[],"_postman_id":"c084f13e-d09a-46ac-93e3-979c9a1f14f9"},{"name":"WebHook - Create Invoice","id":"f1e17bd1-eb6c-48cb-8594-45d188a31768","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"description":"<p>Once after user completes the payment, the webhook message will be sent to the merchant's registered webhook.</p>\n<p>See the examples for detail</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[{"id":"253aea5f-b420-4750-9a10-9d7ded18c66e","name":"WebHook - Create Invoice (Successful)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"type\": \"PAYMENT\",\n    \"status\": \"SUCCESS\",\n    \"message\": \"\",\n    \"body\": {\n        \"amount\": 10000.00,\n        \"currency\": \"MNT\",\n        \"completedAt\": \"2026-01-29 11:20:33\",\n        \"terminalId\": \"17171994\",\n        \"invoiceId\": \"8eff7d69001c03f486f64410f9daa82c\",\n        \"paymentVendor\": \"QPAY\",\n        \"initType\": \"ECOMMERCE\",\n        \"status\": \"PAID\",\n        \"respCode\": \"\",\n        \"transactionId\": \"N998921\",\n        \"extras-inputs\": [],\n        \"extras\": []\n    }\n}"},{"id":"95d540cb-e42f-4638-bac6-2c207ba00913","name":"WebHook - Create Invoice (Failed)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"type\": \"PAYMENT\",\n    \"status\": \"FAILED\",\n    \"message\": \"\",\n    \"body\": {\n        \"transactionId\": \"B347699\",\n        \"amount\": 15000.00,\n        \"currency\": \"MNT\",\n        \"updatedAt\": 1769657291559,\n        \"terminalId\": \"17171994\",\n        \"invoiceStatus\": \"EXPIRED\"\n    }\n}"}],"_postman_id":"f1e17bd1-eb6c-48cb-8594-45d188a31768"}],"id":"3d622736-ab85-4c07-a04d-639d69d321c3","_postman_id":"3d622736-ab85-4c07-a04d-639d69d321c3","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}},{"name":"Card Tokenization","item":[{"name":"Create Card Token","id":"b012ef3f-9b58-462b-9cab-ccd034ac4b6a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"callback\" : \"https://merchant-web/card-token-callback?id=20250512180511001\",\n    \"transactionId\" : \"15za20250512180511006\",\n\n    \"payment\" : { \n        \"amount\" : 101.00\n    },\n\n    \"subscription\" : { \n        \"planId\" : 1,\n        \"cycleValue\" : \"5\",\n        \"cycles\" : 5, \n        \"payNow\" : false, \n        \"custEmail\" : \"test@gmail.com\"\n    },\n\n    \"items\" : [\n        {\n            \"image\" : \"https://www.google.com\",\n            \"title\" : \"Item 6 title\",\n            \"remark\" : \"Item 6 remark\",\n            \"amount\" : 1,\n            \"count\" : 10\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/cards/tokenize/request","description":"<p>It creates credit card tokenization request and returns a follow-up link.</p>\n<p>the follow-up link will take the user throgth steps necessary. once the process is done and token is generated, \"webhook\" (server-to-server) notification (http-post) will be sent the merchant's webhook url which is registered in the merchat portal site</p>\n<ul>\n<li><p><strong>\"callback\"</strong> is the 3rd party's url, user browser will be redirected to this after tokenization process is done.</p>\n</li>\n<li><p><strong>\"transactionId\"</strong> is the 3rd party's unique id for the tokenization request, it will be attached to the tokenization process and will be sent to the 3rd party's web-hook url with the customer credit card token.</p>\n</li>\n<li><p><strong>\"payment\"</strong> is an optional field, when actual payment transaction and token is processed, you can use <strong>payment.amount</strong> field. if no payment.amout is passed, <strong>0.01 MNT</strong> will be processed for verfication.</p>\n</li>\n<li><p><strong>\"subscription\"</strong> is optional, if set, the card token is SUBSCRIBED to the payment plan</p>\n<ul>\n<li><p><strong>\"planId\"</strong> merchant's payment plan Id, can be found \"List of Payment Plans\" service.</p>\n</li>\n<li><p><strong>\"cycleValue\"</strong> possible values based on the given plan</p>\n<ul>\n<li><p>1 - 7 for WEEKLY plan, 1-Mon, ... 7-Sun</p>\n</li>\n<li><p>1 - 31 for MONTHLY plan</p>\n</li>\n<li><p>1 - 366 for YEARLY plan</p>\n</li>\n</ul>\n</li>\n<li><p><strong>\"cycles\"</strong> is optional, how many cycles the subscription runs for. If no value to this, the subscription will be active for good. For example: cycles=10, it means the subscription will be active for 10 cycles. If cycles=null, the subscription will be active until the cancellation request is issued.</p>\n</li>\n<li><p><strong>\"payNow\"</strong> if true, \"cycleValue\" will be ignored, the current date becomes the first billing date, and the next billing date will be calculated with payment plan's recurring type on the current date.</p>\n</li>\n<li><p><strong>\"custEmail\"</strong> is optional, subsription payment notification will be sent to this email.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>\"items\"</strong> is optinal.</p>\n<ul>\n<li><p><strong>\"image\"</strong> item's image url shown on the hosted page.</p>\n</li>\n<li><p><strong>\"title\"</strong> item's title shown on the hosted page.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>NOTE:</strong> If subscription date is the same day of payment plan's cycleValue, then payment transaction is processed upon the subscription. For example: Let take a monthly payment plan, its cycleValue is 1 which means the first day of every month, payment is processed automatically, and if a user subscribes to it on the first day of a month, the payment is immediately processed during the subscription.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","cards","tokenize","request"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"d24e085e-0b96-4d11-b8ba-25f48dad1a86","name":"Create Card Token","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"callback\" : \"https://merchant-web/card-token-callback?id=20250512180511001\",\n    \"transactionId\" : \"ab20250512180511006\",\n\n    \"subscription\" : { //optional\n        \"planId\" : 1,\n        \"cycleValue\" : \"1\",\n        \"cycles\" : 10 // optional\n    },\n\n    \"items\" : [\n        {\n            \"image\" : \"https://www.google.com\",\n            \"title\" : \"Item 6 title\",\n            \"remark\" : \"Item 6 remark\",\n            \"amount\" : 1,\n            \"count\" : 10\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://apis.bonum.mn/mpay-service/merchant/cards/tokenize/request"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 23 Sep 2025 01:15:06 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-timezone","value":"Asia/Ulaanbaatar"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"followUpLink\": \"https://ecommerce.bonum.mn/tokenize?id=73c642ec1df9cabe7fd7d4a2777f4ff18989a79321cea0dbca83bb7aa2d5886b\",\n    \"id\": \"73c642ec1df9cabe7fd7d4a2777f4ff18989a79321cea0dbca83bb7aa2d5886b\"\n}"},{"id":"98f60ee4-50ba-493d-bfc0-108d3181fdf6","name":"Create Card Token + Payment Processing","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"callback\" : \"https://merchant-web/card-token-callback?id=20250512180511001\",\n    \"transactionId\" : \"1bb20250512180511006\",\n\n    \"payment\" : { // optional\n        \"amount\" : 100.00\n    },\n\n    \"subscription\" : { //optional\n        \"planId\" : 1,\n        \"cycleValue\" : \"1\",\n        \"cycles\" : 10 // optional\n    },\n\n    \"items\" : [\n        {\n            \"image\" : \"https://www.google.com\",\n            \"title\" : \"Item 6 title\",\n            \"remark\" : \"Item 6 remark\",\n            \"amount\" : 1,\n            \"count\" : 10\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/cards/tokenize/request"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 10 Oct 2025 05:45:45 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-timezone","value":"Asia/Ulaanbaatar"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"followUpLink\": \"https://testecommerce.bonum.mn/tokenize?id=1fc53f9389f489ff6e04617bd6338a71aef036232a34a77fc92a1a748f40a8c7\",\n    \"id\": \"1fc53f9389f489ff6e04617bd6338a71aef036232a34a77fc92a1a748f40a8c7\"\n}"}],"_postman_id":"b012ef3f-9b58-462b-9cab-ccd034ac4b6a"},{"name":"Create Card Token Web Hook Message","id":"ed120a7c-0393-45f0-9c13-3d677dd281fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\":\"CARD-TOKEN\",\n    \"status\":\"SUCCESS\",\n    \"message\":\"\",\n    \"body\":{\n        \"token\":\"<CARD-TOKEN-VALUE>\",\n        \"mask\":\"5150 23** **** 4778\",\n        \"expiry\":\"2026/11\",\n        \"bank\":{\n            \"id\":19,\n            \"code\":\"150000\",\n            \"name\":\"Голомт банк\",\n            \"icon\":\"https://bonum-prod-resource.s3.us-east-2.amazonaws.com/golomt.png\",\n            \"iBanCode\":\"0015\",\n            \"transferCode\":\"GMT\"\n        },\n        \"transactionId\":\"<merchant transaction id>\",\n        \"completedAt\":\"2026-01-26 12:58:03\",\n        \"amounts\":[\n            {\n                \"amount\":5.00,\n                \"currency\":\"MNT\"\n            }\n        ],\n        \"subscriptions\":[\n            {\n                \"subscriptionId\":1,\n                \"planId\":1,\n                \"nextBillingDate\":\"2026-02-02 00:00:00\"\n            }\n        ]\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"","description":"<p>On a successful card token generation, a webhook message will be sent the merchant's registered webhook message.</p>\n<p>Webhook message fields:</p>\n<ul>\n<li><p><strong>\"token\"</strong> card token string.</p>\n</li>\n<li><p><strong>\"mask\"</strong> masked card number</p>\n</li>\n<li><p><strong>\"expiry\"</strong> card's expire month</p>\n</li>\n<li><p><strong>\"bank\"</strong> card's issuer bank</p>\n</li>\n<li><p><strong>\"transactionId\"</strong> merchant's transaction id used in \"Card Create Token\" request body</p>\n</li>\n<li><p><strong>\"amounts\"</strong> дүнтэй, эсвэл subscription.тай үед төлбөрийн дүн</p>\n</li>\n<li><p><strong>\"subscriptions\"</strong> payment plan руу subscribe хийсэн бол subscription.ны id</p>\n</li>\n</ul>\n<p>Webhook message body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"type\":\"CARD-TOKEN\",\n    \"status\":\"SUCCESS\",\n    \"message\":\"\",\n    \"body\":{\n        \"token\":\"1fc53f9389f489ff6e04617bd6338a710e1e7c579cb572aec421f560f363119c45de074278126f4e9adbc626cccba687513731bc9f8cd1737efed3e58d30dfb9\",\n        \"mask\":\"5150 23** **** 4778\",\n        \"expiry\":\"2026/11\",\n        \"bank\":{\n            \"id\":19,\n            \"code\":\"150000\",\n            \"name\":\"Голомт банк\",\n            \"icon\":\"https://bonum-prod-resource.s3.us-east-2.amazonaws.com/golomt.png\",\n            \"iBanCode\":\"0015\",\n            \"transferCode\":\"GMT\"\n        },\n        \"transactionId\":\"6ab20250512180511006\",\n        \"completedAt\":\"2026-01-26 12:58:03\",\n        \"amounts\":[\n            {\n                \"amount\":5.00,\n                \"currency\":\"MNT\"\n            }\n        ],\n        \"subscriptions\":[\n            {\n                \"subscriptionId\":1,\n                \"planId\":1,\n                \"nextBillingDate\":\"2026-02-02 00:00:00\",\n            }\n        ]\n    }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"ed120a7c-0393-45f0-9c13-3d677dd281fa"},{"name":"Purchase","id":"e0e7a329-2886-4b64-b23d-3fcfc61ed2b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 15,\n    \"currency\" : \"MNT\",\n    \"transactionId\" : \"\" // transactionid\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/transaction/purchase","description":"<p><strong>Make a Payment Using a Card Token</strong></p>\n<p>This endpoint initiates a payment using a previously generated card token.</p>\n<p><strong>Note:</strong></p>\n<p>During periods of high traffic, payment requests may be placed into a processing queue. Queued payments will be executed asynchronously, and the final result will be delivered to the merchant’s configured webhook endpoint.</p>\n<p><strong>Caution:</strong></p>\n<p>Do <strong>not</strong> rely on or expose the <code>response[\"errorCode\"]</code> field. This field is intended for internal use only.</p>\n<p><strong>Additional Information:</strong><br />For detailed behavior and possible outcomes, refer to the sample request and response examples</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","transaction","purchase"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"956205f0-1f4a-4607-ae97-11d8c6d808f2","name":"Амжилттай гүйлгээ","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 15,\n    \"currency\" : \"MNT\",\n    \"transactionId\" : \"\" // transactionid\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/transaction/purchase"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n\n    \"traceId\":\"6965c23f4a88878d6f11b97bd0dc4f57\",\n    \"errorCode\":\"${invalid.bonum.response.00}\",\n    \"error\":null,\n    \"message\":\"Төлбөр амжилттай хийгдлээ (00)\",\n    \"data\":{\n        \"id\":172345,\n        \"completedAt\":\"2026-01-13 11:55:44\",\n        \"status\":\"SUCCESS\",\n        \"description\":\"\",\n        \"cardStatus\":\"ACTIVE\"\n    },\n    \"detail\":null,\n    \"duration\":759,\n    \"status\":200\n\n}"},{"id":"cd3e170a-0aa1-473d-891e-9db9e5fdbf75","name":"Үлдэгдэл хүрэлцэхгүй","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 15,\n    \"currency\" : \"MNT\",\n    \"transactionId\" : \"\" // transactionid\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/transaction/purchase"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null},{"id":"708910af-0d4f-4e94-98ba-1d8deacbab97","name":"Purchase","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 15,\n    \"currency\" : \"MNT\",\n    \"transactionId\" : \"\" // transactionid\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/transaction/purchase"},"status":"Bad Request","code":400,"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n\n    \"traceId\":\"6965b3f57a560ad2d5d7dcd0bccedcfe\",\n    \"errorCode\":\"${invalid.bonum.response.56}\",\n    \"error\":null,\n    \"message\":\"Картаар төлбөр хийх боломжгүй (56)\",\n    \"data\":{\n        \"id\":171044,\n        \"completedAt\":\"2026-01-13 10:54:46\",\n        \"status\":\"FAILED\",\n        \"description\":\"\",\n        \"cardStatus\":\"INACTIVE\"\n    },\n    \"detail\":null,\n    \"duration\":635,\n    \"status\":400\n\n}"},{"id":"79a82857-ab98-4e0c-830e-20a527945840","name":"Async Гүйлгээ","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 15,\n    \"currency\" : \"MNT\",\n    \"transactionId\" : \"\" // transactionid\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/transaction/purchase"},"status":"Created","code":201,"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n\n    \"traceId\":\"697088018770d01b18064d81cef5f504\",\n    \"errorCode\":\"QUEUED\",\n    \"error\":null,\n    \"message\":\"bonum.token.invoice.queued\",\n    \"data\":{\n        \"id\":662,\n        \"completedAt\":\"2026-01-21 16:02:10\",\n        \"status\":\"QUEUED\",\n        \"description\":\"\",\n        \"cardStatus\":null,\n        \"respCode\":null\n    },\n    \"detail\":null,\n    \"duration\":1192,\n    \"status\":201\n\n}"}],"_postman_id":"e0e7a329-2886-4b64-b23d-3fcfc61ed2b0"},{"name":"Purchase Async WebHook","id":"ca10a6b1-fe35-412b-a348-6651cfd9441a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\" : 15,\n    \"currency\" : \"MNT\",\n    \"transactionId\" : \"\" // transactionid\n}","options":{"raw":{"language":"json"}}},"url":"","description":"<p>When purchase is queued, and completed the payment asyncronously, this webhook message will be sent</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"type\":\"TOKEN-PAYMENT\",\n    \"status\":\"SUCCESS\", // SUCCESS | FAILED\n    \"message\":\"\",\n    \"body\":{\n        \"transactionId\":\"6ab20250512180511006\",\n        \"completedAt\":\"2026-01-26 12:58:03\",\n    }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"ca10a6b1-fe35-412b-a348-6651cfd9441a"},{"name":"Rollback Purchase","id":"d8b8ebf4-253b-4354-9ee8-02d0eeb54424","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/transaction/reverse/:transactionId","description":"<p>this service tries to reverse a token payment.</p>\n<ul>\n<li>transactionId pathvariable is the merchant's transactionid value.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","transaction","reverse",":transactionId"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[{"description":{"content":"<p>Merchant's transactionId</p>\n","type":"text/plain"},"type":"any","value":"","key":"transactionId"}]}},"response":[],"_postman_id":"d8b8ebf4-253b-4354-9ee8-02d0eeb54424"}],"id":"b656f08d-e5e5-40c6-bed4-66ad63966bda","description":"<p>Request Headers:</p>\n<p>X-CARD-TOKEN: must be attached to request header, its value is sent to the 3rd party's webhook endpoint once credit card token is generated successfully</p>\n","_postman_id":"b656f08d-e5e5-40c6-bed4-66ad63966bda","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}},{"name":"Subscription plans","item":[{"name":"List Of Payment Plans","id":"f0036f5d-f9b2-4a70-82b4-f8ee55e8b1d3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/values/payment-plans","description":"<ol>\n<li><p>It returns the list of payment plans (subscription plans) of the merchant.</p>\n</li>\n<li><p>Payment plan can be CRUD on merchant portal web</p>\n</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","values","payment-plans"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"7220bab8-94f7-417f-b0c4-a81c436a6dda","name":"List Of Payment Plans","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/values/payment-plans"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"traceId\": \"6960b2d3ec9f9d4a44caf66d5b4a5d26\",\n    \"errorCode\": null,\n    \"error\": null,\n    \"message\": null,\n    \"data\": [\n        {\n            \"planId\": 1,\n            \"name\": \"Test Weekly Plan 1_prod\",\n            \"remark\": \"Remark Test Weekly Plan 1_prod\",\n            \"createdAt\": \"2025-03-20 15:53:51\",\n            \"recurringType\": \"WEEKLY\",\n            \"amount\": 5.00,\n            \"status\": \"ACTIVE\",\n            \"cardCount\": 0,\n            \"retryCount\": 3\n        },\n        {\n            \"planId\": 21,\n            \"name\": \"Monthly\",\n            \"remark\": \"Monhtly Plan\",\n            \"createdAt\": \"2026-01-08 16:21:30\",\n            \"recurringType\": \"MONTHLY\",\n            \"amount\": 9.00,\n            \"status\": \"ACTIVE\",\n            \"cardCount\": 0,\n            \"retryCount\": 3\n        }\n    ],\n    \"detail\": null,\n    \"duration\": 686,\n    \"status\": 200\n}"}],"_postman_id":"f0036f5d-f9b2-4a70-82b4-f8ee55e8b1d3"},{"name":"Subscribe","id":"dc9b7d3b-fb75-425c-85b5-8454beff5182","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"planId\" : 30,\n    \"cycleValue\" : 10,\n    \"cycles\" : 3, \n    \"payNow\" : false,\n    \"custEmail\" : \"1234\"\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions/subscribe","description":"<p>This service subscribes a credit card token to a payment plan, specified \"planId\" field in the request body</p>\n<ul>\n<li><p><strong>\"planId\"</strong> merchant's payment plan Id, can be found \"List of Payment Plans\" service.</p>\n</li>\n<li><p><strong>\"cycleValue\"</strong> possible values based on the given plan</p>\n<ul>\n<li><p>1 - 7 for WEEKLY plan, 1-Mon, ... 7-Sun</p>\n</li>\n<li><p>1 - 31 for MONTHLY plan</p>\n</li>\n<li><p>1 - 366 for YEARLY plan</p>\n</li>\n</ul>\n</li>\n<li><p><strong>\"cycles\"</strong> is optional, how many cycles the subscription runs for. If no value to this, the subscription will be active for good. For example: cycles=10, it means the subscription will be active for 10 cycles. If cycles=null, the subscription will be active until the cancellation request is issued.</p>\n</li>\n<li><p><strong>\"payNow\"</strong> if true, \"cycleValue\" will be ignored, the current data becomes the first billing date, and the next billing date will be calculated with payment plan's recurring type on the current date.</p>\n</li>\n<li><p><strong>\"custEmail\"</strong> is optional, subsription payment notification will be sent to this email.</p>\n</li>\n</ul>\n<p><strong>NOTE:</strong> If subscription date is the same day of payment plan's cycleValue, then payment transaction is processed upon the subscription. For example: Lets take a monthly payment plan with cycleValue = 1 (the first day of every month), payment is processed automatically, and if a user subscribes to it on the first day of a month, the payment will be processed immediately during the subscription.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions","subscribe"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"fe04742b-cb66-424b-a307-fc0f6e6f5811","name":"Multiple Subscription For same card","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"planId\" : 2,\n    \"cycleValue\" : \"5\",\n    \"cycles\" : 5 //(optional)\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/subscriptions/subscribe"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"// if one subscription process is not finished, another subscription for a same card is issued\n{\n    \"traceId\": \"6960ba5dc45779dd37aa757ea2535590\",\n    \"errorCode\": null,\n    \"error\": null,\n    \"message\": \"subscription.process.waiting\",\n    \"data\": null,\n    \"detail\": null,\n    \"duration\": 4035,\n    \"status\": 429\n}"},{"id":"e0b6f5d9-ce5b-456d-adc1-fab7f00fee63","name":"Card Payment Denied","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"planId\" : 2,\n    \"cycleValue\" : \"5\",\n    \"cycles\" : 5 //(optional)\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/subscriptions/subscribe"},"status":"Bad Request","code":400,"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"// card system denies the payment request\n{\n    \"traceId\": \"6960bb4080c62f8734d5c04ac3a97eec\",\n    \"errorCode\": \"${invalid.bonum.response.89}\",\n    \"error\": null,\n    \"message\": \"Төлбөрийг гүйцэтгэх боломжгүй (89)\",\n    \"data\": null,\n    \"detail\": null,\n    \"duration\": 8664,\n    \"status\": 400\n}"},{"id":"55f98f0d-e1e0-4c44-af10-d4a012031bab","name":"Subscribe","originalRequest":{"method":"POST","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"planId\" : 2,\n    \"cycleValue\" : \"5\",\n    \"cycles\" : 5 //(optional)\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/subscriptions/subscribe"},"status":"OK","code":200,"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"traceId\": \"6976ca6cbdfca1fc116f23fe77eb024f\",\n    \"errorCode\": null,\n    \"error\": null,\n    \"message\": \"\",\n    \"data\": {\n        \"subscriptionId\": 41,\n        \"subscribedAt\": \"2026-01-26 09:59:11\",\n        \"cardMask\": \"9496 43** **** 2727\",\n        \"plan\": {\n            \"planId\": 4,\n            \"name\": \"Monthly Last Day Test v1\",\n            \"remark\": \"Monthly Last Day Test v1\",\n            \"createdAt\": \"2025-03-27 11:58:28\",\n            \"recurringType\": \"MONTHLY\",\n            \"amount\": 3,\n            \"status\": \"ACTIVE\",\n            \"cardCount\": 0,\n            \"retryCount\": 3\n        },\n        \"nextBillAt\": \"2026-01-27 00:00:00\",\n        \"lastBilledAt\": \"2026-01-26 09:59:11\",\n        \"status\": \"ACTIVE\"\n    },\n    \"detail\": null,\n    \"duration\": 4594,\n    \"status\": 201\n}"}],"_postman_id":"dc9b7d3b-fb75-425c-85b5-8454beff5182"},{"name":"Change Subscription Token ( Create New Token )","id":"8ffc489d-c7e8-498d-99ee-61b3cbc4c348","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"callback\" : \"https://merchant-web/card-token-callback?id=something\",\n    \"transactionId\" : \"123456000\",\n    \"items\" : [ //(optional)\n        {\n            \"image\" : \"https://www.google.com\",\n            \"title\" : \"Item 8 title\",\n            \"remark\" : \"Item 8 remark\",\n            \"amount\" : 1,\n            \"count\" : 10\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions/:subscriptionId/change/create-new-token","description":"<p>It subscribes the credit card token to the payment plan</p>\n<ul>\n<li>\"planId\" must be valid and created</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions",":subscriptionId","change","create-new-token"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[{"type":"any","value":"","key":"subscriptionId"}]}},"response":[],"_postman_id":"8ffc489d-c7e8-498d-99ee-61b3cbc4c348"},{"name":"Change Subscription Token (Existing Token)","id":"be864da6-509a-49bb-93bf-3dab499b92cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions/:subscriptionId/change","description":"<p>It subscribes the credit card token to the payment plan</p>\n<ul>\n<li>\"planId\" must be valid and created</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions",":subscriptionId","change"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[{"type":"any","value":"","key":"subscriptionId"}]}},"response":[],"_postman_id":"be864da6-509a-49bb-93bf-3dab499b92cf"},{"name":"Get Subscriptions","id":"d59cb03b-6474-40b4-8d8d-6983a7642f71","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions","description":"<p>It returns the subscriptions of the credit card token</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"d59cb03b-6474-40b4-8d8d-6983a7642f71"},{"name":"Unsubscribe","id":"2fadbadc-c704-4a09-b06d-54934998882e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"planId\" : \"\"\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions/:subscriptionId","description":"<p>It deletes the subscription of the credit card token from a payment plan</p>\n<ul>\n<li>the next billing cycle payment will be executed at the next billing date</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions",":subscriptionId"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[{"type":"any","value":"12","key":"subscriptionId"}]}},"response":[],"_postman_id":"2fadbadc-c704-4a09-b06d-54934998882e"},{"name":"Delete Subscription","id":"ade5a4d2-9a9f-47bb-b772-bd74a7a688d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"planId\" : \"\"\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions/:subscriptionId/delete","description":"<p>It deletes the subscription of the credit card token from a payment plan</p>\n<ul>\n<li>no payment is created for the next billing cycle</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions",":subscriptionId","delete"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[{"type":"any","value":"","key":"subscriptionId"}]}},"response":[],"_postman_id":"ade5a4d2-9a9f-47bb-b772-bd74a7a688d8"},{"name":"Request a card token","id":"64652223-3374-47f0-baf4-cccfacc49828","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"","description":"<p>It sends the card token, which was created with \"transactionId\" by the service \"Create Card Token\", to the merchant's web-hook</p>\n<ul>\n<li>\"transactionId\" must be valid and assigned to a card token</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"64652223-3374-47f0-baf4-cccfacc49828"},{"name":"Subscription Automatic Payment WebHook Messages","id":"67686c06-24e5-4714-8e4d-7f9286c9e521","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"","description":"<p>Once card token is subscribed to a Payment plan. The payment process will be issued automatically on the billing date according to the payment plan's recurring type,<br />Then sends a webhook message to merchant's registered webhook url.</p>\n<p>WebHook Message Body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"type\":\"SUBSCRIPTION-PAYMENT\",\n    \"status\":\"SUCCESS\", // SUCCESS | FAILED\n    \"message\":\"\",\n    \"body\":{\n        \"subscriptionId\":41,\n        \"invoiceId\":786,\n        \"planId\":4,\n        \"transactionId\":\"20000007\", // merchant's transaction id for the subscription.\n        \"completedAt\":\"2026-01-27 02:00:08\",\n        \"amount\":3,\n        \"currency\":\"MNT\"\n    }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]}},"response":[{"id":"d4c97af8-57ac-44b1-939a-2b3768466633","name":"[ Success ] Subscription Automatic Payment WebHook Message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n    \"type\":\"SUBSCRIPTION-PAYMENT\",\n    \"status\":\"SUCCESS\",\n    \"message\":\"\",\n    \"body\":{\n        \"subscriptionId\":41,\n        \"invoiceId\":786,\n        \"planId\":4,\n        \"transactionId\":\"20000007\",\n        \"completedAt\":\"2026-01-27 02:00:08\",\n        \"amount\":3,\n        \"currency\":\"MNT\"\n    }\n\n}","options":{"raw":{"language":"json"}}},"url":""},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""},{"id":"293c6b43-b7e5-43d2-9e0f-7716435da9b1","name":"[ Failed ] Subscription Automatic Payment WebHook Message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n    \"type\":\"SUBSCRIPTION-PAYMENT\",\n    \"status\":\"FAILED\",\n    \"message\":\"Картын үлдэгдэл хүрэлцэхгүй байна\",\n    \"body\":{\n        \"subscriptionId\":41,\n        \"invoiceId\":786,\n        \"planId\":4,\n        \"transactionId\":\"20000007\",\n        \"completedAt\":\"2026-01-27 02:00:08\",\n        \"amount\":3,\n        \"currency\":\"MNT\"\n    }\n\n}","options":{"raw":{"language":"json"}}},"url":""},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""},{"id":"6c2c661f-846d-4cae-bdaf-556956a907d2","name":"[ Retry Exhausted ] Subscription Automatic Payment WebHook Message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n    \"type\":\"UNSUBSCRIBED\",\n    \"status\":\"SUCCESS\",\n    \"message\":\"Subscription.ны retry дууссан тул card.н subscription.г цуцлав\",\n    \"body\":{\n        \"subscriptionId\":41,\n        \"invoiceId\":786,\n        \"planId\":4,\n        \"transactionId\":\"20000007\",\n        \"completedAt\":\"2026-01-27 02:00:08\",\n        \"amount\":3,\n        \"currency\":\"MNT\"\n    }\n\n}","options":{"raw":{"language":"json"}}},"url":""},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""}],"_postman_id":"67686c06-24e5-4714-8e4d-7f9286c9e521"},{"name":"[ TEST ] Execute A Subscription Payment","id":"280f82f3-1031-4718-853e-83afeedd4515","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/subscriptions/:subscriptionId/execute","description":"<p>Use this service on SANDBOX environment to test subscription payment and expiration</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","subscriptions",":subscriptionId","execute"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[{"type":"any","value":"1","key":"subscriptionId"}]}},"response":[],"_postman_id":"280f82f3-1031-4718-853e-83afeedd4515"}],"id":"ad4ef5aa-0c6a-41e7-8c4a-e239106b5e38","_postman_id":"ad4ef5aa-0c6a-41e7-8c4a-e239106b5e38","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}},{"name":"QR code, Deeplink payment","item":[{"name":"Create Qr Code","id":"6cc51161-703d-4453-8351-bcb514659eda","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"amount\" : 10,\n    \"transactionId\" : \"3ba1234567890a\",\n    \"expiresIn\" : 600 // 10 minutes\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/transaction/qr/create","description":"<p>Gets QR Invoice by qrCode (Qpay QrCode)</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","transaction","qr","create"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[{"id":"9bcde622-431c-4033-aae6-7139be78e718","name":"Create Qr Code","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"amount\" : 10,\n    \"transactionId\" : \"3ba1234567890a\",\n    \"expiresIn\" : 600 // 10 minutes\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/transaction/qr/create"},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"traceId\": \"69b76ea35599c03cb4fdfa4c12a2d9c6\"\n    \"duration\": 559,\n    \"error\": null,\n    \"errorCode\": null,\n    \"message\": null,\n    \"status\": 200,\n    \"data\": {\n        \"invoiceId\" : \"1234bacd123\",\n        \"qrCode\" : \"12345...abc\",\n        \"qrImage\" : \"[base64]\",\n        \"links\": [\n            {\n                \"name\": \"Khan bank\",\n                \"description\": \"Хаан банк\",\n                \"logo\": \"https://qpay.mn/q/logo/khanbank.png\",\n                \"link\": \"khanbank://q?qPay_QRcode=0002010102121531279404962794049600260311650482827540014A00000084300010108CAXBMNUB022080t03dDu6zrZUZpn8NRr520473995303496540125802MN5912POSTMERCHANT6011ULAANBAATAR6224072080t03dDu6zrZUZpn8NRr7106QPP_QR78152423543826589397902358002016304D802\",\n                \"appStoreId\": \"1555908766\",\n                \"androidPackageName\": \"com.khanbank.retail\"\n            },\n            {\n                \"name\": \"Social Pay\",\n                \"description\": \"Голомт банк\",\n                \"logo\": \"https://qpay.mn/q/logo/socialpay.png\",\n                \"link\": \"socialpay-payment://q?qPay_QRcode=0002010102121531279404962794049600260311650482827540014A00000084300010108CAXBMNUB022080t03dDu6zrZUZpn8NRr520473995303496540125802MN5912POSTMERCHANT6011ULAANBAATAR6224072080t03dDu6zrZUZpn8NRr7106QPP_QR78152423543826589397902358002016304D802\",\n                \"appStoreId\": \"1152919460\",\n                \"androidPackageName\": \"mn.egolomt.socialpay\"\n            },\n            {\n                \"name\": \"Trade and Development bank\",\n                \"description\": \"TDB online\",\n                \"logo\": \"https://qpay.mn/q/logo/tdbbank.png\",\n                \"link\": \"tdbbank://q?qPay_QRcode=0002010102121531279404962794049600260311650482827540014A00000084300010108CAXBMNUB022080t03dDu6zrZUZpn8NRr520473995303496540125802MN5912POSTMERCHANT6011ULAANBAATAR6224072080t03dDu6zrZUZpn8NRr7106QPP_QR78152423543826589397902358002016304D802\",\n                \"appStoreId\": \"1458831706\",\n                \"androidPackageName\": \"mn.tdb.pay\"\n            }\n        ]\n    }\n}"}],"_postman_id":"6cc51161-703d-4453-8351-bcb514659eda"},{"name":"Invoice By Qr Code","id":"2ff9ed26-41cf-4c5e-89b9-afc7634411b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"qrCode\" : \"0002010102121531279404962794049600251010000110727540014A00000084300010108CAXBMNUB02204hDYWJR5rqW11V1qlrtX520460115303496540115802MN5912POSTMERCHANT6011ULAANBAATAR622407204hDYWJR5rqW11V1qlrtX7106QPP_QR781505693975190775979023580020163047991\"\n}","options":{"raw":{"language":"json"}}},"url":"{{API_BASE_URL}}/mpay-service/merchant/transaction/qr","description":"<p>Gets QR Invoice by qrCode (Qpay QrCode)</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["mpay-service","merchant","transaction","qr"],"host":["{{API_BASE_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"2ff9ed26-41cf-4c5e-89b9-afc7634411b0"},{"name":"Pay By Card Token","id":"3ab7b512-62a2-4527-b03e-fb9a1a9ebf73","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"X-CARD-TOKEN","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"text"},{"key":"Accept-Language","value":"mn","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"qrCode\" : \"BONUMQR82987247ddf95ed7e6e8531d4b84467bb6a492f055ddc0b59f2d26171bdc75be6772c229da9fc075cb78d35ca3865e7a8f22212c91bec30f5ee2664a149574cdeacdc46526d202a9b18be3a1caddedc21d73e8d2de592b3236651dc0ad10004b\",\n    \"transactionId\" : \"v260427i123456789\"\n}","options":{"raw":{"language":"json"}}},"url":"{{TOKEN_BASE_URL}}/merchant/transaction/qr/pay","description":"<p>Pay Qr Invoice of qrCode with card-token</p>\n<p>card token is sent as a http-header 'x-card-token'</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["merchant","transaction","qr","pay"],"host":["{{TOKEN_BASE_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"3ab7b512-62a2-4527-b03e-fb9a1a9ebf73"}],"id":"b7ce7374-c1af-457f-a1df-faab1a42b742","_postman_id":"b7ce7374-c1af-457f-a1df-faab1a42b742","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}},{"name":"Neo App","item":[{"name":"Purchase","id":"e46383d1-d08f-4db7-97a1-60c31985aac5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"// See documentations","options":{"raw":{"language":"json"}}},"description":"<p>in-app.н backend.с</p>\n<ol>\n<li><p>token avna. // Authentication/Get Token</p>\n</li>\n<li><p>Invoice үүсгэнэ // Invoice/Create Invoice</p>\n</li>\n<li><p>Invoice.followuplink.г browser дуудна.</p>\n</li>\n</ol>\n<p>in-app хэрэглэгч</p>\n<ol>\n<li>төлбөрийн сонголтоос сонгон төлбөрөө төлнө ( Only Neo visible)</li>\n</ol>\n<p>Neo App Backend (Payment Gateway).c</p>\n<ol>\n<li>in-app.н бүртгэлтэй мерчантын web-hook ruu төлбөрийн мэдээлэлийг дамжуулна.</li>\n</ol>\n<p>NOTE:</p>\n<ol>\n<li><p>in-app мерчантаар бүртгүүлнэ</p>\n</li>\n<li><p>web-hook бүртгүүлна</p>\n</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"e46383d1-d08f-4db7-97a1-60c31985aac5"},{"name":"Get User Data","id":"950d70a2-f594-4c9a-ba2f-4294ef3c6578","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{M_CHAT_BASE_URL}}/users/apps/share/requests?requestId=b38685109fba4d98eae703c847ccc438e4ded1d643ce4cbc79e944ffa657eadc","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["users","apps","share","requests"],"host":["{{M_CHAT_BASE_URL}}"],"query":[{"key":"requestId","value":"b38685109fba4d98eae703c847ccc438e4ded1d643ce4cbc79e944ffa657eadc"}],"variable":[]}},"response":[],"_postman_id":"950d70a2-f594-4c9a-ba2f-4294ef3c6578"},{"name":"Send Chat Message to Neo User","id":"f95ba402-82fe-4024-8433-020831a9b705","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"phoneNumber\" : \"\", // Neo User.n utasnii dugaar\n    \"message\" : \"Test Merchant Message \", // \n    \"type\" : \"CHAT\" // SMS | CHAT\n}","options":{"raw":{"language":"json"}}},"url":"{{NEO_BASE_URL}}/messages/send","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"path":["messages","send"],"host":["{{NEO_BASE_URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f95ba402-82fe-4024-8433-020831a9b705"}],"id":"29e389eb-06a1-4a8d-8629-c873108d1d7c","_postman_id":"29e389eb-06a1-4a8d-8629-c873108d1d7c","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}},{"name":"WebHook delievery","item":[{"name":"WebHook хүлээн авах [ MN ]","id":"ed5dd085-090d-42c3-8d13-e0208d56c015","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"/****\n\nSEE documentations\n\n**/","options":{"raw":{"language":"json"}}},"description":"<p>Payment-Gateway.c мерчант руу гүйлгээний болон картын токены мэдээлэлийг дамжуулахдаа мерчантын бүртгүүлсэн webhook URL руу POST.р HTTP мессэж дамжуулдаг, Мөн хүсэлтийг баталжуулах checksum header.г илгээдэг</p>\n<p>Жишээ:</p>\n<p>merchant.н webhook url:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-html\">https://abx-xyz.mn/abcd/webhook-receiver\n\n</code></pre>\n<p>request body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"type\" : \"PAYMENT\",\n    \"status\" : \"SUCCESS\", //SUCCESS, FAILED\n    \"message\" : \"Амжилттай\", // Successful, or anything, this could be changed anytime, DO NOT RELY ON ITS VALUE,\n    \"body\" : {\n        \"invoiceId\": \"abc....xyz....\", //invoice unique id\n        \"transactionId\" : \"\", // 3rd party system's transcation id if the payment invoice was initiated with the 3rd party's transaction id\n    }\n}\nэсвэл\n{\n    \"type\" : \"CARD-TOKEN\",\n    \"status\" : \"SUCCESS\", //SUCCESS, FAILED\n    \"message\" : \"Амжилттай\", // Successful, or anything, this could be changed anytime, DO NOT RELY ON ITS VALUE,\n    \"body\" : {\n        \"token\": \"abc....xyz....\", //invoice unique id\n        \"transactionId\" : \"\", // 3rd party system's transcation id if the payment invoice was initiated with the 3rd party's transaction id\n    }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"ed5dd085-090d-42c3-8d13-e0208d56c015"},{"name":"WebHook receive [ EN ]","id":"af8ed3b2-de5d-41cf-9e1f-cd6777c5a989","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"/****\n\nSEE documentations\n\n**/","options":{"raw":{"language":"json"}}},"description":"<p>Payment-Gateway sends transaction info or card token to merchants webhook URL with HTTP POST message and checksum HEADER value which is used as a validation</p>\n<p>Example:</p>\n<p>merchant's webhook url:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-html\">https://abx-xyz.mn/abcd/webhook-receiver\n\n</code></pre>\n<p>request body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"type\" : \"PAYMENT\",\n    \"status\" : \"SUCCESS\", //SUCCESS, FAILED\n    \"message\" : \"Амжилттай\", // Successful, or anything, this could be changed anytime, DO NOT RELY ON ITS VALUE,\n    \"body\" : {\n        \"invoiceId\": \"abc....xyz....\", //invoice unique id\n        \"transactionId\" : \"\", // 3rd party system's transcation id if the payment invoice was initiated with the 3rd party's transaction id\n    }\n}\nэсвэл\n{\n    \"type\" : \"CARD-TOKEN\",\n    \"status\" : \"SUCCESS\", //SUCCESS, FAILED\n    \"message\" : \"Амжилттай\", // Successful, or anything, this could be changed anytime, DO NOT RELY ON ITS VALUE,\n    \"body\" : {\n        \"token\": \"abc....xyz....\", //invoice unique id\n        \"transactionId\" : \"\", // 3rd party system's transcation id if the payment invoice was initiated with the 3rd party's transaction id\n    }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"af8ed3b2-de5d-41cf-9e1f-cd6777c5a989"},{"name":"WebHook Checksum [ MN ]","id":"313c30dc-5b15-4a7a-9fb0-1a0acb4a2ef9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"/****\n\nSEE documentations\n\n**/","options":{"raw":{"language":"json"}}},"description":"<p>Доор кодыг ашиглан webhook хүлээн авах үед баталгаажуулалт хийгээрэй.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-kotlin\">fun checksumValidation(httpRequest : HttpRequest) : Boolean {\n    val MERCHANT_CHECKSUM_KEY = \"\" // this will be provided by offline or email from bonum. this MUST be kept in secure. \n    val raw = JSON.toJson(value = httpRequest.requestBody, prettyPrint = false)\n    val checksumValue = checksum(raw, MERCHANT_CHECKSUM_KEY)\n    val checksumHeaderValue = httpRequest.headers.get('x-checksum-v2')\n    val valid : Boolean = Objects.equals(checksumValue, checksumHeaderValue)\n    return valid\n}\nfun checksum(value : String, key : String) : String {\n    val secretKey = SecretKeySpec(key.toByteArray(Charsets.UTF_8), \"HmacSHA256\")\n    val mac = Mac.getInstance(\"HmacSHA256\")\n    mac.init(secretKey)\n    val hmacArray = mac.doFinal(value.toByteArray(Charsets.UTF_8))\n    //to Hex\n    val checksum = this.hex(hmacArray)\n    return checksum\n}\nprivate fun hex(vl : ByteArray) : String {\n    val sb = StringBuilder(vl.size * 2)\n    for(b in vl) {\n        sb.append(String.format(\"\u0002x\", b.toInt() and 0xff))\n    }\n    return sb.toString()\n} \n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"313c30dc-5b15-4a7a-9fb0-1a0acb4a2ef9"},{"name":"WebHook Checksum [ EN ]","id":"8c0722d9-91f2-46b2-a1b5-79a8c7e6bda4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"/****\n\nSEE documentations\n\n**/","options":{"raw":{"language":"json"}}},"description":"<p>The code below is for checksum validation.</p>\n<p>You ask MERCHANT_CHECKSUM_KEY from the Payment-Gateway admin.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-kotlin\">fun checksumValidation(httpRequest : HttpRequest) : Boolean {\n    val MERCHANT_CHECKSUM_KEY = \"\" // this will be provided by offline or email from bonum. this MUST be kept in secure. \n    val raw = JSON.toJson(value = httpRequest.requestBody, prettyPrint = false) // no indentation\n    val checksumValue = checksum(raw, MERCHANT_CHECKSUM_KEY)\n    val checksumHeaderValue = httpRequest.headers.get('x-checksum-v2')\n    val valid : Boolean = Objects.equals(checksumValue, checksumHeaderValue)\n    return valid\n}\nfun checksum(value : String, key : String) : String {\n    val secretKey = SecretKeySpec(key.toByteArray(Charsets.UTF_8), \"HmacSHA256\")\n    val mac = Mac.getInstance(\"HmacSHA256\")\n    mac.init(secretKey)\n    val hmacArray = mac.doFinal(value.toByteArray(Charsets.UTF_8))\n    //to Hex\n    val checksum = this.hex(hmacArray)\n    return checksum\n}\nprivate fun hex(vl : ByteArray) : String {\n    val sb = StringBuilder(vl.size * 2)\n    for(b in vl) {\n        sb.append(String.format(\"\u0002x\", b.toInt() and 0xff))\n    }\n    return sb.toString()\n} \n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"8c0722d9-91f2-46b2-a1b5-79a8c7e6bda4"},{"name":"Webhook Messages","id":"60feb9bf-70fb-499b-bb02-f7f9ecc728b3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}},"urlObject":{"query":[],"variable":[]},"url":""},"response":[{"id":"64a19144-3040-44e7-8700-71323c22e702","name":"Online Payment Webhook Message (Success)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"PAYMENT\",\n    \"status\": \"SUCCESS\",\n    \"message\": \"\",\n    \"body\": {\n        \"amount\": 28500.0,\n        \"currency\": \"MNT\",\n        \"completedAt\": \"2026-04-20 00:00:12\",\n        \"paymentVendor\": \"QPAY\",\n        \"initType\": \"ECOMMERCE\",\n        \"status\": \"PAID\",\n        \"transactionId\": \"<MERCHANT-TRANSACTION-ID>\",\n        \"token\": \"<CARD-TOKEN-VALUE>\", // when PAY_TOKEN type request initialized, the card token is on this field.\n        \"extras-inputs\": [\n            {\n                \"id\": 1,\n                \"placeholder\": \"Pleace enter your email\"\n            }\n        ],\n        \"extras\": [\n            {\n                \"extraId\": 1,\n                \"value\": \"test@gmail.com\"\n            }\n        ],\n        \"paymentApp\": { // optional. wallet app or bank app.\n            \"id\": 27,\n            \"name\": \"Хас банк\",\n            \"logoUrl\": \"https://bonum-prod-resource.s3.us-east-2.amazonaws.com/xac.png\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"97c0e283-f7d5-417f-9a38-2a37ae76a0dd","name":"Online Payment Webhook Message (Failure)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"PAYMENT\",\n    \"status\": \"FAILED\",\n    \"message\": \"\", // when the payment processing results in error, the error description text is on this field.\n    \"body\": {\n        \"transactionId\": \"<MERCHANT-TRANSACTION-ID>\",\n        \"amount\": 35000.0,\n        \"currency\": \"MNT\",\n        \"updatedAt\": \"2026-04-20 00:00:15\",\n        \"completedAt\": \"2026-04-20 00:00:15\",\n        \"terminalId\": \"\", // Terminal ID, payment processing executed on.\n        \"invoiceStatus\": \"EXPIRED\",\n        \"status\": \"EXPIRED\" // CANCELLED, ERROR\n    }\n}","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"58627965-e10b-4652-9af1-c3f04a8511af","name":"Online Payment Webhook Message (Failure Card Payment Processing)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"PAYMENT\",\n    \"status\": \"FAILED\",\n    \"message\": \"Insufficient Balance\", // error description text\n    \"body\": {\n        \"amount\": 50370.0,\n        \"currency\": \"MNT\",\n        \"completedAt\": \"2026-04-20 01:41:35\",\n        \"terminalId\": \"17171896\",\n        \"paymentVendor\": \"E_COMMERCE\",\n        \"initType\": \"ECOMMERCE\",\n        \"status\": \"ERROR\",\n        \"respCode\": \"51\",\n        \"transactionId\": \"<MERCHANT-TRANSACTION-ID>\",\n        \"extras-inputs\": [\n            {\n                \"id\" : 1,\n                \"value\" : \"test@gmail.com\"\n                \n            }\n        ],\n        \"extras\": [\n            {\n                \"extraId\" : 1,\n                \"placeholder\" : \"Pleace enter your email\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"2dc8fa48-0b2a-4dd5-9c6a-677a9fe3891f","name":"Card Tokenization Request Webhook Message (Success)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"CARD-TOKEN\",\n    \"status\": \"SUCCESS\",\n    \"message\": \"\",\n    \"body\": {\n        \"token\": \"<CARD-TOKEN-VALUE>\",\n        \"mask\": \"9496 28** **** 3501\",\n        \"expiry\": \"2030/07\",\n        \"bank\": {\n            \"id\": 26,\n            \"code\": \"050000\",\n            \"name\": \"Хаан банк\",\n            \"icon\": \"https://bonum-prod-resource.s3.us-east-2.amazonaws.com/khaan.png\",\n            \"iBanCode\": \"0005\",\n            \"transferCode\": \"050000|AGMOMNUB\"\n        },\n        \"transactionId\": \"<MERCHANT-TRANSACTION-ID>\",\n        \"completedAt\": \"2026-04-20 00:09:21\",\n        \"amounts\": [],\n        \"subscriptions\": []\n    }\n}","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"895d17c0-a071-4bbc-b4f0-ce94639fec50","name":"Card Tokenization Request Webhook Message (Failure)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"CARD-TOKEN\",\n    \"status\": \"FAILED\",\n    \"message\": \"\",\n    \"body\": {\n        \"transactionId\": \"<MERCHANT-TRANSACTION-ID>\",\n        \"completedAt\": \"2026-04-22 15:10:52\",\n        \"cardStatus\": \"CANCELLED\"\n    }\n}","options":{"raw":{"language":"json"}}}},"_postman_previewlanguage":"","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""}],"_postman_id":"60feb9bf-70fb-499b-bb02-f7f9ecc728b3"}],"id":"36c7281a-7ad8-4074-a259-b6149488d365","_postman_id":"36c7281a-7ad8-4074-a259-b6149488d365","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":true,"source":{"_postman_id":"5ef67789-2136-468e-902b-8ee597f847fd","id":"5ef67789-2136-468e-902b-8ee597f847fd","name":"Bonum Gateway APIs","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]}},"event":[{"listen":"prerequest","script":{"id":"c4c347f9-3d9d-4f8f-86f0-76b0fbd8d7dd","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"f3bf98ff-f97b-482b-8359-aa80aae7d154","type":"text/javascript","packages":{},"exec":[""]}}],"variable":[{"key":"xCardToken","value":"1fc53f9389f489ff6e04617bd6338a71ca27985bb080d06f01bed52475447345","type":"string"},{"key":"TOKEN_BASE_URI","value":"https://testapi.bonum.mn/mpay-service","type":"string","disabled":true},{"key":"BASE_URI","value":"https://testapi.bonum.mn/bonum-gateway","type":"string","disabled":true},{"key":"APP_SECRET","value":"1fc53f9389f489ff6e04617bd6338a710e1e7c579cb572aec421f560f363119c0e0039e4b765e53c5339c1e6c77279854b20e998ed4599983a9c9dba12b36e89ce7ee7659043ebffcf77a095587bf694","type":"string","disabled":true},{"key":"DEFAULT_TERMINAL_ID","value":"17171119","type":"string","disabled":true}]}