1.3. Responses
Requests return following status codes and JSON payloads:
· 200 (Success)
Request was successful. The JSON payload looks like this:
{
“obj”: <license number, token, active(bool), registration date, unregistration date>,
“shop”: <code, name, addresss, phone, registration date>,
“device”: <fiscalID, name, addresss, phone, registration date>,
“taxes”: <name, value, untaxed(bool), taxCode, taxIndex, calcType, taxBase, taxType, fullName>
}
There were validation errors (listed for each operation specifically). The JSON payload looks like this:
{
“status”: “error”, “msgID” (optional): <msgID>, “message”: <list of validation errors>
}
· 500 (Internal Server Error):
Is returned in case of errors in JSON parsing (e.g., bad formats, wrong types) or other internal errors.
portal.postman_collection.json
{
"info": {
"_postman_id": "36a0f762-762a-4132-836e-8d7fb20a22eb",
"name": "ONLINE ECR",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "33095855"
},
"item": [
{
"name": "activate",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n}"
},
"url": {
"raw": "{{host}}/activate",
"host": [
"{{host}}"
],
"path": [
"activate"
]
}
},
"response": [
{
"name": "activate",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n}"
},
"url": {
"raw": "{{host}}/activate",
"host": [
"{{host}}"
],
"path": [
"activate"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": null,
"header": [
{
"key": ":status",
"value": 200
},
{
"key": "server",
"value": "nginx"
},
{
"key": "date",
"value": "Wed, 06 May 2026 14:26:45 GMT"
},
{
"key": "content-type",
"value": "application/json"
},
{
"key": "content-length",
"value": "1186"
},
{
"key": "vary",
"value": "Origin"
},
{
"key": "strict-transport-security",
"value": "max-age=63072000; includeSubDomains; preload"
},
{
"key": "x-frame-options",
"value": "DENY"
},
{
"key": "x-content-type-options",
"value": "nosniff"
}
],
"cookie": [],
"body": "{\n \"checkUrl\": \"https://ofd-check-view.kampispay.com/receipt\",\n \"device\": {\n \"active\": true,\n \"dateReg\": \"2026-04-29T00:00:00.000Z\",\n \"dateUnreg\": null,\n \"fiscalNumbersCnt\": null,\n \"licenseNum\": \"GH53016449\",\n \"taxVersion\": 85,\n \"token\": \"FN00000008\"\n },\n \"lastMsgID\": 770,\n \"obj\": {\n \"address\": \"Central 44\",\n \"dateReg\": \"2026-04-01T00:00:00.000Z\",\n \"fiscalID\": \"5566778899\",\n \"name\": \"Varta LTD\",\n \"phone\": \"+3809997678666\"\n },\n \"shop\": {\n \"address\": \"Central 44\",\n \"code\": null,\n \"dateReg\": \"2026-04-16T00:00:00.000Z\",\n \"name\": \"Shop\",\n \"phone\": \"+3809997678666\"\n },\n \"status\": \"success\",\n \"taxes\": [\n {\n \"calcType\": 1,\n \"fullName\": \"Tourism\",\n \"name\": \"Tourism\",\n \"taxBase\": 1,\n \"taxCode\": \"O\",\n \"taxIdx\": 0,\n \"taxType\": 3,\n \"untaxed\": false,\n \"val\": 1\n },\n {\n \"calcType\": 1,\n \"fullName\": \"Exempt\",\n \"name\": \"Exempt\",\n \"taxBase\": 1,\n \"taxCode\": \"A\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 0\n },\n {\n \"calcType\": 1,\n \"fullName\": \"Export\",\n \"name\": \"Export\",\n \"taxBase\": 1,\n \"taxCode\": \"C\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 0\n },\n {\n \"calcType\": 1,\n \"fullName\": \"Relief/Zero-Rated\",\n \"name\": \"Relief/Zero-Rated\",\n \"taxBase\": 1,\n \"taxCode\": \"D\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 0\n },\n {\n \"calcType\": 1,\n \"fullName\": \"VAT 20%\",\n \"name\": \"VAT 20%\",\n \"taxBase\": 1,\n \"taxCode\": \"B\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 20\n }\n ],\n \"zNumber\": 1\n}"
}
]
},
{
"name": "get_fisc_ranges",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n}"
},
"url": {
"raw": "{{host}}/activate",
"host": [
"{{host}}"
],
"path": [
"activate"
]
}
},
"response": []
},
{
"name": "sale",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"msgID\": 182,\n \"currency\": \"GHS\",\n \"totalAmount\": 15000,\n \"zNumber\": 2,\n \"receiptNumber\": 1,\n \n \"cashier\": \"Jack Black\",\n \"dateTime\": \"2026-05-06T13:58:21.076Z\",\n \"items\": [\n {\n \"name\": \"Coca Cola 0.5L\",\n \"unit\": \"PCE\",\n \"qty\": 3000,\n \"price\": 5000,\n \"amount\": 15000,\n\n \"taxes\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxBase\": 15000,\n \"taxAmount\": 0\n }\n ]\n }\n ],\n \"payments\": [\n {\n \"type\": \"C\",\n \"amount\": 15000,\n \"change\": 0\n }\n ],\n \"taxTotals\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ],\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}"
},
"url": {
"raw": "{{host}}/sale",
"host": [
"{{host}}"
],
"path": [
"sale"
]
}
},
"response": [
{
"name": "sale",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"msgID\": 182,\n \"currency\": \"GHS\",\n \"totalAmount\": 15000,\n \"zNumber\": 2,\n \"receiptNumber\": 1,\n \n \"cashier\": \"Jack Black\",\n \"dateTime\": \"2026-05-06T13:58:21.076Z\",\n \"items\": [\n {\n \"name\": \"Coca Cola 0.5L\",\n \"unit\": \"PCE\",\n \"qty\": 3000,\n \"price\": 5000,\n \"amount\": 15000,\n\n \"taxes\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxBase\": 15000,\n \"taxAmount\": 0\n }\n ]\n }\n ],\n \"payments\": [\n {\n \"type\": \"C\",\n \"amount\": 15000,\n \"change\": 0\n }\n ],\n \"taxTotals\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ],\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}"
},
"url": {
"raw": "{{host}}/sale",
"host": [
"{{host}}"
],
"path": [
"sale"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": null,
"header": [
{
"key": ":status",
"value": 200
},
{
"key": "server",
"value": "nginx"
},
{
"key": "date",
"value": "Wed, 06 May 2026 14:27:58 GMT"
},
{
"key": "content-type",
"value": "application/json"
},
{
"key": "content-length",
"value": "142"
},
{
"key": "vary",
"value": "Origin"
},
{
"key": "strict-transport-security",
"value": "max-age=63072000; includeSubDomains; preload"
},
{
"key": "x-frame-options",
"value": "DENY"
},
{
"key": "x-content-type-options",
"value": "nosniff"
}
],
"cookie": [],
"body": "{\n \"fiscalNum\": \"OA10073\",\n \"status\": \"success\",\n \"url\": \"https://ofd-check-view.kampispay.com/receipt?f=FN00000008&n=OA10073&t=1778075901\"\n}"
}
]
},
{
"name": "refund",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"msgID\": 443,\n \"currency\": \"GHS\",\n \"totalAmount\": 5000,\n \"zNumber\": 2,\n \"receiptNumber\": 2,\n \"parentFiscalNum\": \"OA10073\",\n \"cashier\": \"John Doe\",\n \"dateTime\": \"2026-05-06T14:07:21.076Z\",\n \"location\": {\n \"latitude\": 6.500183676689106,\n \"longitude\": 120.76210479216934,\n \"radius\": 1000\n },\n \"items\": [\n {\n \"name\": \"Coca Cola 0.5L\",\n \"unit\": \"PCE\",\n \"qty\": 1000,\n \"price\": 5000,\n \"amount\": 5000,\n \"taxes\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxBase\": 5000,\n \"taxAmount\": 0\n }\n ]\n }\n ],\n \"payments\": [\n {\n \"type\": \"C\",\n \"amount\": 5000,\n \"change\": 0\n }\n ],\n \"taxTotals\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ],\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}"
},
"url": {
"raw": "{{host}}/refund",
"host": [
"{{host}}"
],
"path": [
"refund"
]
}
},
"response": [
{
"name": "refund",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"msgID\": 443,\n \"currency\": \"GHS\",\n \"totalAmount\": 5000,\n \"zNumber\": 2,\n \"receiptNumber\": 2,\n \"parentFiscalNum\": \"OA10073\",\n \"cashier\": \"John Doe\",\n \"dateTime\": \"2026-05-06T14:07:21.076Z\",\n \"location\": {\n \"latitude\": 6.500183676689106,\n \"longitude\": 120.76210479216934,\n \"radius\": 1000\n },\n \"items\": [\n {\n \"name\": \"Coca Cola 0.5L\",\n \"unit\": \"PCE\",\n \"qty\": 1000,\n \"price\": 5000,\n \"amount\": 5000,\n \"taxes\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxBase\": 5000,\n \"taxAmount\": 0\n }\n ]\n }\n ],\n \"payments\": [\n {\n \"type\": \"C\",\n \"amount\": 5000,\n \"change\": 0\n }\n ],\n \"taxTotals\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ],\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}"
},
"url": {
"raw": "{{host}}/refund",
"host": [
"{{host}}"
],
"path": [
"refund"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": null,
"header": [
{
"key": ":status",
"value": 200
},
{
"key": "server",
"value": "nginx"
},
{
"key": "date",
"value": "Wed, 06 May 2026 14:51:21 GMT"
},
{
"key": "content-type",
"value": "application/json"
},
{
"key": "content-length",
"value": "142"
},
{
"key": "vary",
"value": "Origin"
},
{
"key": "strict-transport-security",
"value": "max-age=63072000; includeSubDomains; preload"
},
{
"key": "x-frame-options",
"value": "DENY"
},
{
"key": "x-content-type-options",
"value": "nosniff"
}
],
"cookie": [],
"body": "{\n \"fiscalNum\": \"OA10074\",\n \"status\": \"success\",\n \"url\": \"https://ofd-check-view.kampispay.com/receipt?f=FN00000008&n=OA10074&t=1778076441\"\n}"
}
]
},
{
"name": "z_report",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"zNumber\": 2,\n \"firstNumber\": 1,\n \"lastNumber\": 4,\n \"cashier\": \"John Doe\",\n \"dateTime\": \"2026-05-06T14:29:21.076Z\",\n \"currency\": \"GHS\",\n \"msgID\": 257,\n \"totals\": {\n \"sale\": {\n \"count\": 1,\n \"amount\": 15000\n },\n \"change\": {\n \"count\": 0,\n \"amount\": 0\n },\n \"discount\": {\n \"amount\": 0\n },\n \"deposit\": {\n \"count\": 1,\n \"amount\": 5000\n },\n \"refund\": {\n \"count\": 1,\n \"amount\": 5000\n },\n \"withdraw\": {\n \"count\": 1,\n \"amount\": 5000\n }\n },\n \"payments\": {\n \"sale\": [\n {\n \"type\": \"C\",\n \"amount\": 15000\n }\n ],\n \"refund\": [\n {\n \"type\": \"C\",\n \"amount\": 5000\n }\n ]\n },\n \"taxTotals\": {\n \"sale\": [\n \n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ],\n \"refund\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ]\n },\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}"
},
"url": {
"raw": "{{host}}/z_report",
"host": [
"{{host}}"
],
"path": [
"z_report"
]
}
},
"response": [
{
"name": "z_report",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"zNumber\": 2,\n \"firstNumber\": 1,\n \"lastNumber\": 4,\n \"cashier\": \"John Doe\",\n \"dateTime\": \"2026-05-06T14:29:21.076Z\",\n \"currency\": \"GHS\",\n \"msgID\": 257,\n \"totals\": {\n \"sale\": {\n \"count\": 1,\n \"amount\": 15000\n },\n \"change\": {\n \"count\": 0,\n \"amount\": 0\n },\n \"discount\": {\n \"amount\": 0\n },\n \"deposit\": {\n \"count\": 1,\n \"amount\": 5000\n },\n \"refund\": {\n \"count\": 1,\n \"amount\": 5000\n },\n \"withdraw\": {\n \"count\": 1,\n \"amount\": 5000\n }\n },\n \"payments\": {\n \"sale\": [\n {\n \"type\": \"C\",\n \"amount\": 15000\n }\n ],\n \"refund\": [\n {\n \"type\": \"C\",\n \"amount\": 5000\n }\n ]\n },\n \"taxTotals\": {\n \"sale\": [\n \n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ],\n \"refund\": [\n {\n \"taxCode\": \"D\",\n \"taxRate\": 0,\n \"taxAmount\": 0\n }\n ]\n },\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}"
},
"url": {
"raw": "{{host}}/z_report",
"host": [
"{{host}}"
],
"path": [
"z_report"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": null,
"header": [
{
"key": ":status",
"value": 200
},
{
"key": "server",
"value": "nginx"
},
{
"key": "date",
"value": "Wed, 06 May 2026 15:00:44 GMT"
},
{
"key": "content-type",
"value": "application/json"
},
{
"key": "content-length",
"value": "1122"
},
{
"key": "vary",
"value": "Origin"
},
{
"key": "strict-transport-security",
"value": "max-age=63072000; includeSubDomains; preload"
},
{
"key": "x-frame-options",
"value": "DENY"
},
{
"key": "x-content-type-options",
"value": "nosniff"
}
],
"cookie": [],
"body": "{\n \"device\": {\n \"active\": true,\n \"dateReg\": \"2026-04-29T00:00:00.000Z\",\n \"dateUnreg\": null,\n \"fiscalNumbersCnt\": null,\n \"licenseNum\": \"GH53016449\",\n \"taxVersion\": 85,\n \"token\": \"FN00000008\"\n },\n \"fiscalNum\": \"OA10077\",\n \"obj\": {\n \"address\": \"Central 44\",\n \"dateReg\": \"2026-04-01T00:00:00.000Z\",\n \"fiscalID\": \"5566778899\",\n \"name\": \"Varta LTD\",\n \"phone\": \"+3809997678666\"\n },\n \"shop\": {\n \"address\": \"Central 44\",\n \"code\": null,\n \"dateReg\": \"2026-04-16T00:00:00.000Z\",\n \"name\": \"Shop\",\n \"phone\": \"+3809997678666\"\n },\n \"status\": \"success\",\n \"taxes\": [\n {\n \"calcType\": 1,\n \"fullName\": \"Tourism\",\n \"name\": \"Tourism\",\n \"taxBase\": 1,\n \"taxCode\": \"O\",\n \"taxIdx\": 0,\n \"taxType\": 3,\n \"untaxed\": false,\n \"val\": 1\n },\n {\n \"calcType\": 1,\n \"fullName\": \"Exempt\",\n \"name\": \"Exempt\",\n \"taxBase\": 1,\n \"taxCode\": \"A\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 0\n },\n {\n \"calcType\": 1,\n \"fullName\": \"Export\",\n \"name\": \"Export\",\n \"taxBase\": 1,\n \"taxCode\": \"C\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 0\n },\n {\n \"calcType\": 1,\n \"fullName\": \"Relief/Zero-Rated\",\n \"name\": \"Relief/Zero-Rated\",\n \"taxBase\": 1,\n \"taxCode\": \"D\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 0\n },\n {\n \"calcType\": 1,\n \"fullName\": \"VAT 20%\",\n \"name\": \"VAT 20%\",\n \"taxBase\": 1,\n \"taxCode\": \"B\",\n \"taxIdx\": 0,\n \"taxType\": 1,\n \"untaxed\": false,\n \"val\": 20\n }\n ]\n}"
}
]
},
{
"name": "withdraw",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"receiptNumber\": 2,\n \"zNumber\": 4,\n \"msgID\": 705,\n \"cashier\": \"John Doe \",\n \"currency\": \"GHS\",\n \"totalAmount\": 5000,\n \"dateTime\": \"2026-05-06T14:19:21.076Z\",\n \"location\": {\n \"latitude\": 48.14963,\n \"longitude\": 17.050056\n },\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}\n"
},
"url": {
"raw": "{{host}}/withdraw",
"host": [
"{{host}}"
],
"path": [
"withdraw"
]
}
},
"response": [
{
"name": "withdraw",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"receiptNumber\": 2,\n \"zNumber\": 4,\n \"msgID\": 705,\n \"cashier\": \"John Doe \",\n \"currency\": \"GHS\",\n \"totalAmount\": 5000,\n \"dateTime\": \"2026-05-06T14:19:21.076Z\",\n \"location\": {\n \"latitude\": 48.14963,\n \"longitude\": 17.050056\n },\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n }\n}\n"
},
"url": {
"raw": "{{host}}/withdraw",
"host": [
"{{host}}"
],
"path": [
"withdraw"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": null,
"header": [
{
"key": ":status",
"value": 200
},
{
"key": "server",
"value": "nginx"
},
{
"key": "date",
"value": "Wed, 06 May 2026 14:59:54 GMT"
},
{
"key": "content-type",
"value": "application/json"
},
{
"key": "content-length",
"value": "43"
},
{
"key": "vary",
"value": "Origin"
},
{
"key": "strict-transport-security",
"value": "max-age=63072000; includeSubDomains; preload"
},
{
"key": "x-frame-options",
"value": "DENY"
},
{
"key": "x-content-type-options",
"value": "nosniff"
}
],
"cookie": [],
"body": "{\n \"fiscalNum\": \"OA10076\",\n \"status\": \"success\"\n}"
}
]
},
{
"name": "deposit",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
"return (async () => {\r",
"\r",
" const pem = `-----BEGIN PRIVATE KEY-----\r",
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCGqQWa0GxwC2za\r",
"Z/xhbpyc/bTMkAPsNsFbeS0bRAKZrb6sqcp79PpaSS0jucT9tuodUeaWsF2Gffon\r",
"ROsAu5m5aMnbauevSALOcQOjt+qDepyst6nes4O8r5crQ2xiG7q2WGXNjjETk1Ab\r",
"HQ02J595eDE1qtJtXXsrc717DtLv2jXajvnJhSaxTOQlJYG4TySu+HL/yKQf4g6j\r",
"7DNzUmftuUsVXyaldszi6v75+lZcyH3ns1j00NWI2KaR/nYRwvobmKH1tvNG1Bmm\r",
"flSeaMc4CNciMkPPN7L+CV+WPXVwa1a2sQIW/cJdmc0R/EWwiBUwhrdOdxG//VDd\r",
"lBqXfKihAgMBAAECggEAMrx3SKPT34lme4nnbPxklMAAgXyXhcYBp0nqRVYkFqwA\r",
"ZgTZLkgYlbDxiX7iamejIOXtWAReUKChgm80jgOhAVsqhvnqDkA3EnpBUUun1974\r",
"LhlLLwX7EjokXmAac4KYIEEBJmg3NHVyHq0c/7UBIJ65B8vzWdJ5aF9E2ps0vbqx\r",
"W09bMwDsmdaseUy82lJ6BtmNakGNaOzv9mH1U6mXVbLAcKW9IeUcdbdsgP1tizXl\r",
"AO5hkRwUmwcQf9oU8RLmNfeQgxQ/fK3Z+czhamLkyYvVMWW72N2a2VivqKkoqW4Y\r",
"8f+ov8UCneK8jfbGGuWI3FuDDdXsxJ0s/bF0NT/TEwKBgQC5xZk6l/ABPRYXN5+X\r",
"HoAfIr47L42IRKgcdz8FDjFLzKwW83UvVly2HfuoSMX4fUP4PDISRu2X5NdDXq/e\r",
"wmWCAConssH5PY1wu372SUsCK7y+ltGg49/rq80+04wAOenqW7e5EGGX5LZcO/Wx\r",
"jcpzB05XrvSJOsra9/V660f7twKBgQC5kQFPzSK2teeuxi/Ba5+GQdRKzF6MaAjP\r",
"b1CGR31MQzOH6yvr209Kl9ZgZag6g2R7+mXX+Zb68fz3KU6CoA1PSqca7kMQbksr\r",
"CLEMzK6DmTduUVdC+iyTLaRw00XS+H1S/tN/jfXjOkp2o8gCjEvU6UEBYkePzup7\r",
"oa044xCuZwKBgQCtN6YskEdloEPc2iygh/wHDCo8nZZmnT3zbO0CFb25Y9qCe/ek\r",
"b+56kXJ584FEteiOqfI2QJSBsQtW8g8isjhcAzNLWM6tS8t6dhloI+cg2w9e1toY\r",
"HuJHqSXzkuVTwKxvrZ2dnbyiGMxBLFdne0JuBz3xXFz/KCbGDbaDKqcv+QKBgQCO\r",
"naMkccP8KFGnQSnyvYQc6vr9gZQo1MvwoNyCVu81bXBtRZC79BE8gvV/oKFqVxEj\r",
"N46OLoSa2OBSFK0CN4ADMJy9VeC1AA9FQ6jO7YAyI882Oc2W7C7V7n4zOCyxt8iZ\r",
"wL9LiQ8xU9tm0vkk/C5Ls/kB10aof5425kr7LYfkgQKBgQCEiR56CYhc1HHODlQy\r",
"NUmz20VtZFWTCkg14SsesjTTKLZI1OK+4IYB5H2lDUL1hOMezTsYMze+NfFGItSA\r",
"wRGwxLiu3U54sFYtP1Oso0KZW6fyrItQMUTNP7/Packa6MMxkcKiGnBWanWqIXK7\r",
"uiBebjYdhH1LnQiEuWMAWMhuxw==\r",
"-----END PRIVATE KEY-----`;\r",
"\r",
" const b64 = pem\r",
" .replace(/-----BEGIN PRIVATE KEY-----/, '')\r",
" .replace(/-----END PRIVATE KEY-----/, '')\r",
" .replace(/\\s+/g, '');\r",
"\r",
" const binaryDer = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\r",
"\r",
" const privateKey = await crypto.subtle.importKey(\r",
" \"pkcs8\",\r",
" binaryDer.buffer,\r",
" {\r",
" name: \"RSASSA-PKCS1-v1_5\",\r",
" hash: \"SHA-256\"\r",
" },\r",
" false,\r",
" [\"sign\"]\r",
" );\r",
"\r",
" const rawBody = pm.request.body.raw;\r",
" const encoder = new TextEncoder();\r",
" const data = encoder.encode(rawBody);\r",
"\r",
" const signature = await crypto.subtle.sign(\r",
" \"RSASSA-PKCS1-v1_5\",\r",
" privateKey,\r",
" data\r",
" );\r",
"\r",
" const signatureBase64 = btoa(\r",
" String.fromCharCode(...new Uint8Array(signature))\r",
" );\r",
"\r",
" pm.request.headers.upsert({\r",
" key: \"X-Signature\",\r",
" value: signatureBase64\r",
" });\r",
"\r",
"})();"
],
"type": "text/javascript",
"packages": {},
"requests": {}
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"zNumber\": 2,\n \"receiptNumber\": 3,\n \"cashier\": \"John Doe \",\n \"currency\": \"GHS\",\n \"totalAmount\": 5000,\n \"msgID\": 781,\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n },\n \"dateTime\": \"2026-05-06T14:17:21.076Z\",\n \"location\": {\n \"latitude\": 48.149647,\n \"longitude\": 17.05007\n }\n}"
},
"url": {
"raw": "{{host}}/deposit",
"host": [
"{{host}}"
],
"path": [
"deposit"
]
}
},
"response": [
{
"name": "deposit",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"zNumber\": 2,\n \"receiptNumber\": 3,\n \"cashier\": \"John Doe \",\n \"currency\": \"GHS\",\n \"totalAmount\": 5000,\n \"msgID\": 781,\n \"identity\": {\n \"fn\": \"FN00000008\",\n \"tin\": \"5566778899\",\n \"shopName\": \"Outlet\",\n \"shopAddress\": \"Central Street, 11\"\n },\n \"dateTime\": \"2026-05-06T14:17:21.076Z\",\n \"location\": {\n \"latitude\": 48.149647,\n \"longitude\": 17.05007\n }\n}"
},
"url": {
"raw": "{{host}}/deposit",
"host": [
"{{host}}"
],
"path": [
"deposit"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": null,
"header": [
{
"key": ":status",
"value": 200
},
{
"key": "server",
"value": "nginx"
},
{
"key": "date",
"value": "Wed, 06 May 2026 14:58:05 GMT"
},
{
"key": "content-type",
"value": "application/json"
},
{
"key": "content-length",
"value": "43"
},
{
"key": "vary",
"value": "Origin"
},
{
"key": "strict-transport-security",
"value": "max-age=63072000; includeSubDomains; preload"
},
{
"key": "x-frame-options",
"value": "DENY"
},
{
"key": "x-content-type-options",
"value": "nosniff"
}
],
"cookie": [],
"body": "{\n \"fiscalNum\": \"OA10075\",\n \"status\": \"success\"\n}"
}
]
}
],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"packages": {},
"requests": {},
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"packages": {},
"requests": {},
"exec": [
""
]
}
}
],
"variable": [
{
"key": "host",
"value": ""
}
]
}