{"info":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","description":"<html><head></head><body><h2 id=\"important-notices\">Important notices</h2>\n<p><em>The information and data captured in this document are strictly confidential and supplied on the basis that this information and data is confidential and will be held in confidence and not disclosed to any third party without the written consent of Financial Inclusion Technology (Proprietary) Limited. All intellectual property contained within this document is proprietary to Financial Inclusion Technology (Proprietary) Limited, all rights reserved.</em></p>\n<blockquote>\n<p><em><strong>From April 2022, /confirmation calls are compulsory for all vending transactions, especially so for bill payments. See the \"/confirmation\" section and \"Basic Transaction Flows\" for more information</strong></em> </p>\n</blockquote>\n<blockquote>\n<p><em><strong>NOTE It is the obligation of a the calling party to make use of the /reprint endpoint in a scenario where the response of a vending transaction done via the Finclude B2B API, is not received by the calling party, before a new vending transaction is initiated for the same meter number/msisdn/product.</strong></em> </p>\n</blockquote>\n<h2 id=\"additional-information-and-documentation\">Additional information and documentation</h2>\n<p>To see a list of available products and their respective api_tx_object_ids, more info regarding specific bill payments and example till slips as mandated by the utility companies, see<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n\n<p>To enable consumers of the Finclude B2B API to code their interface to the Finclude B2B API in such a way that it is not needed to make additional code changes every time Finclude deploys additional products, Finclude has incorporated specific information and structures into the B2B API that allow consumers to:</p>\n\n<ul>\n<li><p>dynamically add products to a structured menu, including displaying relevant thumbnails</p>\n</li>\n<li><p>dynamically build the inputs for capturing the input data</p>\n</li>\n<li><p>dynamically verify the captured data</p>\n</li>\n<li><p>dynamically call the correct endpoint using the correct JSON request body format (including the data that was captured)</p>\n</li>\n<li><p>dynamically display any information on screen that allows the cashier/operator/client to decide whether to abort or continue</p>\n</li>\n<li><p>dynamically print the correct information on the till/customer slip</p>\n</li>\n</ul>\n<p>We have prepared an additional document to address specifically<a href=\"https://docs.google.com/document/d/1M0cWgh-KogMkSsESyNLcqm-Ypl-xCzZxb9gLrCbGJlk/edit?usp=sharing\">Using the Finclude B2B API to build dynamic menus and make dynamic calls</a></p>\n\n<p>You can download the<a href=\"https://drive.google.com/file/d/1Y1QnQyNBygJrhP4ceNn8y_miHAjfz3U3/view?usp=sharing\">Finclude B2B API specification.yaml</a></p>\n\n<h2 id=\"version-history\">Version History</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>DATE</th>\n<th>API VERSION</th>\n<th>EDITOR</th>\n<th>REMARKS</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>2021-03-17</td>\n<td>0.0.67</td>\n<td>Gerhard v Rensburg</td>\n<td>- Converted from API Blueprint schema to OpenApi 3 schema. This was needed to allow the sharing of the API schema information which is not contained in the Postman documentation.  <br>- Added additional examples in the API Collection.  <br>- Switched to using environment variables instead of collection variables since this allows for easier switching between the mock server and other environments.</td>\n</tr>\n<tr>\n<td>2021-03-18</td>\n<td>0.0.78</td>\n<td>Gerhard v Rensburg</td>\n<td>- In the API spec all references to application/x-www-form-urlencoded were replaced with application/json and the Collection, mock server and corresponding documentation were updated to reflect this.  <br>- Updated auth/token error schema mandatory keys.  <br>- Updated Collection to display the correct error codes on the example error responses and the mock server.  <br>- Correct required keys in the /transaction_status body schema.  <br>- transaction_status request body tx_log_id type on the schema was corrected from array to integer.  <br>- Change /requestCancellation property from cancelDetail to cancel_detail  <br>- Change /requestCancellation property, cancel_reason_code from minLength 10 and maxLength 10 to only maxLength 100  <br>- Added requester_data to /requestCancellation request body schema  <br>- Since OpenAPI 3 is case sensitive for parameters (object keys), all parameters have been standardised to all lower case.  <br>- Added error code section</td>\n</tr>\n<tr>\n<td>2021-03-30</td>\n<td>0.0.84</td>\n<td>Gerhard v Rensburg</td>\n<td>- Changed the base url for getting and refreshing a token (/token). Note that the base path differs from the rest of the API  <br>- Added the various base paths for the various API environments to this document  <br>- Changed /token to be url-encoded (application/x-www-form-urlencoded) instead of raw JSON (application/json). Note that this only applies when requesting or refreshing a token. The rest of the API still accepts the body as JSON  <br>- Updated the API spec for /token: Instead of passing in \"read write\" as the scope, \"read write openid\" must be passed in  <br>- Changed /objectlist from a GET to a POST since a GET should not contain a JSON body  <br>- Changed /prepaid_utility_lookup from a GET to a POST since a GET should not contain a JSON body  <br>- Changed /transaction_status from a GET to a POST since a GET should not contain a JSON body  <br>- Changed /reprint from a GET to a POST since a GET should not contain a JSON body  <br>- Updated all the body references to id_token to use a variable that contains the id_token instead a \"hard coded\" id_token. This will allow for easier testing against the live environments since the id_token received from the authentication server is now automatically updated into the id_token-variable</td>\n</tr>\n<tr>\n<td>2021-04-07</td>\n<td>0.0.86</td>\n<td>Gerhard v Rensburg</td>\n<td>- meter_number for /prepaid_utility_lookup request schema changed from integer to string to allow for meter numbers that start with a 0  <br>- meter_number for /prepaid_utility_sale request schema changed from integer to string to allow for meter numbers that start with a 0  <br>- meter_number for /prepaid_utility_sale response schema changed from integer to string to allow for meter numbers that start with a 0  <br>- Updated the list of required properties for both the request body and the response schemas for pin_airtime_data  <br>- Clarified the schema for /confirmation property \"payment_method\" to be more in-line with how objects within arrays are supposed to be used  <br>- Added a couple of \"generic\" test calls to the Postman collection in the folder \"Generic tests\"</td>\n</tr>\n<tr>\n<td>2021-04-16</td>\n<td>0.0.90</td>\n<td>Gerhard v Rensburg</td>\n<td>- Since the req_transaction_id has to be unique every call, I added a new environment variable ({{your_unique_transaction_id}}) to the Postman collection. This is now used in the request bodies to supply a unique req_transaction_id so that the req_transaction_id does not have to be continuously changed by hand.  <br>- Update all the endpoint calls in the Postman collection to show the date format with the time zone information added as it would be used for South African time. Example: \"2021-01-10T07:36:39.001+02:00\"  <br>- Forced the addition of the Authorization key to the header information. Because oAuth 2 authentication is used, Postman should be adding this to the headers automatically but it seems that it does not always do so and this creates confusion. Forcing it into the headers in the collection means that it now clearly shows in the documentation that this should be included in the header  <br>- Added a description to the x-mock-match-request-body header key in the Postman collection so that it is clear that this header key is only used for the Postman mock server configuration and is not needed when calling the Finclude API  <br>- Added a link to an article that gives a good but simple explanation for the RFC 3339 date time format  <br>- Updatedthe API spec request and response schemas for /confirmation and /requestCancellation. Corrected their properties req_transaction_id &amp; ord_req_transaction_id to string instead of integer  <br>- Updated the API spec to indicate that for the request body, /prepaid_utility_lookup - parameters - meter_number is required  <br>- Updated the API spec and removed from the \"required\" list for the request bodies of /objectlist &amp; /prepaid_utility_sale &amp; /transaction_status &amp;/confirmation &amp; /reprint &amp; /requestCancellation, a number of properties that are not required and added in those that are  <br>- Updated API spec for the request body schemas of /confirmation &amp; /requestCancellation to also include \"req_platform\"  <br>- Updated API spec and corrected /requestCancellation property tx_log_id from string to integer.</td>\n</tr>\n<tr>\n<td>2021-04-21</td>\n<td>0.0.91</td>\n<td>Gerhard v Rensburg</td>\n<td>- Updated the API spec to add sales_api_tx_object_id to /utility_lookup since it was not specified in the response schema though it should have been included previously  <br>- Removed requester_data from the response schema for /transaction_status. Since requester_date is not sent as part as the request body, it makes no sense to have requester_data in the response</td>\n</tr>\n<tr>\n<td>2021-05-14</td>\n<td>0.0.91</td>\n<td>Gerhard v Rensburg</td>\n<td>- Updated the documentation for auth/token to give more clarity regarding the use of expired tokens</td>\n</tr>\n<tr>\n<td>2021-06-11</td>\n<td>2.0.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Version 2 was released fixing the issue with the id_token. In V1 the access_token was passed in as the id_token. In V2, the id_token has to be passed in. Note that the base URL for V2 has changed.</td>\n</tr>\n<tr>\n<td>2021-08-20</td>\n<td>2.0.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Switched the OpenAPI specification from JSON format to YAML. This was done because YAML allows for easier multi-line descriptions in the specification doc  <br>- Added /mobile_pay  <br>- A couple of additional error codes were added into the error code list  <br>- Some of the examples wree removed because they over complicated things and led to confusion. Because of this the Postman collection structure is now much more simplified.  <br>- The API specification document now contains all the information needed to be able to successfully create a Postman collection directly off the API specification document</td>\n</tr>\n<tr>\n<td>2021-08-25</td>\n<td>2.0.1</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added a number of additional error codes to the API Error code list  <br>- Added the specification for the /mobile_pay endpoint</td>\n</tr>\n<tr>\n<td>2022-02-28</td>\n<td>2.0.1</td>\n<td>Gerhard v Rensburg</td>\n<td>- Update the /token information to give better clarification of the use of the three token types returned in the response  <br>- Made a correction to the code examples that showed the value of the id_token key as \"null\" or as an empty string. It now correctly shows \" the id_token value you received in the response from the /token call\"</td>\n</tr>\n<tr>\n<td>2022-03-30</td>\n<td>2.0.1</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added /bill_lookup and /bill_payment endpoint information  <br>- Added a link to a Google sheet with a list of api_tx_object_id as well as information regarding the request JSON and response JSON data that applies to the Zambia bill payment providers</td>\n</tr>\n<tr>\n<td>2022-04-19</td>\n<td>2.0.1</td>\n<td>Gerhard v Rensburg</td>\n<td>- Calling either /confirmation or /requestCancellation after a vending call (examples: /pint_airtime_data, /prepaid_utility_sale, /bill_payment) is now compulsory for all new implementations after April 2022. Without calling /confirmation, /bill_payments will never be completed and the transactions will automatically be rolled back after a period of time.  <br>- Added the following new error codes: 200030, 200031, 200032, 200033</td>\n</tr>\n<tr>\n<td>2022-05-16</td>\n<td>2.0.1</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added the following new error codes: 200034</td>\n</tr>\n<tr>\n<td>2022-08-19</td>\n<td>2.0.2</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added the specification for mobile_cashin and mobile_cashout</td>\n</tr>\n<tr>\n<td>2022-09-22</td>\n<td>2.0.2</td>\n<td>Gerhard v Rensburg</td>\n<td>- Updated the description of /reprint to give more clarity. Also updated the example request body and response body for a successful call</td>\n</tr>\n<tr>\n<td>2022-12-15</td>\n<td>2.0.3</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added new endpoints: mobile_lookup, mobile_cashin &amp; mobile_cashout</td>\n</tr>\n<tr>\n<td>2023-01-09</td>\n<td>3.0.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Major version change to version 3.0.0  <br>- API URLs were updated to show the test server for B2B v3. The URLS for B2B v2 servers were removed  <br>- /objectlist endpoint was updated. Note that the response returned has changed significantly.  <br>- /retrieve_image, /mobile_lookup, /mobile_cashin and /mobile_cashout endpoints were added</td>\n</tr>\n<tr>\n<td>2023-03-03</td>\n<td>3.0.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Updated the description for /prepaid_utility_sale to list the possible values for the token type</td>\n</tr>\n<tr>\n<td>2023-03-22</td>\n<td>3.0.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Expanded the API so that an optional entity_id can be passed in on the request for the majority of requests&lt;  <br>- Added the filter opject to the /objectlist endpoint request to allow for the filtering of available products  <br>- Update the API spec to make it clear that the use of id_token when making a request has been deprecated from B2B v3 and is now optional only for the sake of backwards compatibility</td>\n</tr>\n<tr>\n<td>2023-06-13</td>\n<td>3.0.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added the \"Additional information and documentation\" section to the beginning of the documentation so that it will be more difficult to miss.e  <br>- Created additional documentation to specifically cover \"Using the Finclude B2B API to build dynamic menus and make dynamic calls\"</td>\n</tr>\n<tr>\n<td>2023-07-24</td>\n<td>3.1.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Formalised the used of a store id. Up to now API consumenrs would have had to make use of the requester_data field to send a store id. We've now added a req_store_id field to all API calls that currently accept a req_device_id field. Going forward, if it is expected that the store id be included in reports. markof files or any other form our output from Finclude, the store id will have to be sent in the req_store_id field. The only exception is where the store id is already sent in the requester_data field  <br>- Updated the &gt;/retrieve_image endpoint to allow specifyin a list of images to retrieve. Note that this required a change to the type of the image_id input on the request, as well as the structure of the response</td>\n</tr>\n<tr>\n<td>2023-08-01</td>\n<td>3.1.0</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added child_menu_group_id_list and child_product_api_tx_object_id_list to the response of the /objectList endpoint. These keys are include in the menu item objects in the menu_group</td>\n</tr>\n<tr>\n<td>2024-01-04</td>\n<td>3.1.5</td>\n<td>Gerhard v Rensburg</td>\n<td>- Removed all references to id_token use in API requests  <br>- Added paygate/getURL and paygate/payUI  <br>- Added GET for retrieve_image</td>\n</tr>\n<tr>\n<td>2024-03-18</td>\n<td>3.1.5</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added /pinless_airtime_data endpoint  <br>- Added \"param_input_hint\" to the \"menu_parameters\" in the reponse of the /objectlist</td>\n</tr>\n<tr>\n<td>2024-08-13</td>\n<td>3.3.3</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added /voucher_sale and /voucher_redeem endpoints  <br>- Updated the descriptions for error code 200041 to 200046  <br>- Error responses now include the \"requester_data\" if it was included in the request payload.</td>\n</tr>\n<tr>\n<td>2024-11-04</td>\n<td>3.3.3</td>\n<td>Gerhard v Rensburg</td>\n<td>- Added /card_lookup and /card_pay endpoints</td>\n</tr>\n<tr>\n<td>2025-04-09</td>\n<td>3.3.8</td>\n<td>Gerhard v Rensburg</td>\n<td>- Changed endpoints: mobile_lookup to account_verification, mobile_cashin to make_payment &amp; mobile_cashout to receive_payment  <br>- Updated the default description for a number of error codes (200048 to 200051)  <br>- Added new error codes: 400016 and 400017</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"background\">Background</h2>\n<p>The Findesk Business to Business (B2B) API are specifically written to allow businesses to integrate to the Findesk system. The aim is to allow for one integration per transaction object/method type that can be used accross country and for different providers.</p>\n<p>The Findesk B2B API are http-based RESTful API that used OAuth 2.0 for authentication with open id connect for authorisation. The request and response bodies are formatted in JSON.</p>\n<h2 id=\"ignore-unknown-fields\">Ignore unknown fields</h2>\n<p>Client implementations are advised to ignore unknown fields in all messages/objects, as new fields may be introduced (where such a field does not break functional backward-compatibility).</p>\n<h2 id=\"getting-started\">Getting Started</h2>\n<p>The below diagram shows the basic api flow and indicates the use of each on a high level.</p>\n<img src=\"https://content.pstmn.io/f35d9a88-cd61-4284-9c35-65e1fad08867/YXBpZmxvdy5wbmc=\">\n\n<p><strong>Some general guidelines to follow</strong></p>\n<p>The <strong>denomination for most monetary transactions</strong> are smallest Subunit which means that if the amount of a transaction is for example R12,59 the value in the api call would be send through as 1259. Note that in some countries or for some products the denomination might be different so check the transaction object list.</p>\n<p><strong>Date time</strong> should be send using RFC 3339, this means that the time zone should be included using the Z synax to indicate Zulu timezone or the UTC+0. For clarity below examples:</p>\n<ul>\n<li><p>2020-12-31T06:20:50.52Z (UTC+0)</p>\n</li>\n<li><p>2020-12-31T06:20:50.52+00:00 (UTC+0)</p>\n</li>\n<li><p>2020-12-31T14:20:50.52+07:00 (UTC+7)</p>\n</li>\n<li><p>2020-12-31T03:20:50.52-04:00 (UTC-4)</p>\n</li>\n</ul>\n<p>RFC 3339 follows ISO 8601 date time format with the difference that is allows for the T to be replaced by a space.</p>\n<p>See this link for a very good but simple explanation of the RFC 3339 date time format: <a href=\"https://medium.com/easyread/understanding-about-rfc-3339-for-datetime-formatting-in-software-engineering-940aa5d5f68a\">https://medium.com/easyread/understanding-about-rfc-3339-for-datetime-formatting-in-software-engineering-940aa5d5f68a</a></p>\n<p>Recharged <strong>instructions</strong> are send back using an array of strings having a maximum of 40 characters in the string.</p>\n<h2 id=\"api_tx_object_id\">api_tx_object_id</h2>\n<p>Many calls has the api_tx_object_id as a required field. The api_tx_object_id is used to identify the specific product for a specific country. For a list of api_tx_object_ids, see the link below.</p>\n<p><a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n<h2 id=\"environments\">Environments</h2>\n<p>External Staging area:</p>\n<ul>\n<li><p>Token request URL: <a href=\"https://extauth.finclude.co.za/auth/realms/finclude/protocol/openid-connect\">https://extauth.finclude.co.za/auth/realms/finclude/protocol/openid-connect</a></p>\n</li>\n<li><p>Base URL: <a href=\"https://extlb.finclude.co.za/api/b2b/v3/\">https://extlb.finclude.co.za/api/b2b/v3/</a></p>\n</li>\n</ul>\n<h2 id=\"authentication\">Authentication</h2>\n<p>Authentication will always be the first step when building the integration. Authentication is needed before any other api call can be made.</p>\n<p>The basic flow are shown in the diagram below.</p>\n<img src=\"https://content.pstmn.io/701b4ea2-13b6-4e22-bb96-cd9b97becc6d/a2V5Y2xvYWsucG5n\">\n\n<h2 id=\"credentials\">Credentials</h2>\n<p>The Finclude Team will provide a username, password and clientid for the different environments. It is very important to ensure that the password are updated immediately and that these values are treated confidentialy.</p>\n<h2 id=\"common-http-status-codes\">Common HTTP status codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n<th>Explenation</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>100's</td>\n<td>Informational response</td>\n<td>The server is busy with the request.</td>\n</tr>\n<tr>\n<td>200's</td>\n<td>Successful response</td>\n<td>Request were sucessfully completed.</td>\n</tr>\n<tr>\n<td>300's</td>\n<td>Redirection</td>\n<td>Request was received, but there is a redirect of some sort.</td>\n</tr>\n<tr>\n<td>400's</td>\n<td>Client errors</td>\n<td>The request was made, but the request is not valid.</td>\n</tr>\n<tr>\n<td>500's</td>\n<td>Server errors</td>\n<td>Server failed to complete the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"api-error-codes\">API error codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>error code</th>\n<th>error</th>\n<th>error description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200000</td>\n<td>successful_response</td>\n<td>Request were successfully completed.</td>\n</tr>\n<tr>\n<td>200001</td>\n<td>provider_unkown_error</td>\n<td>Unknown provider error, no error description was received</td>\n</tr>\n<tr>\n<td>200002</td>\n<td>provider_error</td>\n<td>Meter can not trade, please visit provider</td>\n</tr>\n<tr>\n<td>200003</td>\n<td>provider_error</td>\n<td>Meter not found</td>\n</tr>\n<tr>\n<td>200004</td>\n<td>provider_error</td>\n<td>Amount requested less then the required minimum amount</td>\n</tr>\n<tr>\n<td>200005</td>\n<td>provider_error</td>\n<td>System unable to generate token</td>\n</tr>\n<tr>\n<td>200006</td>\n<td>provider_error</td>\n<td>System unable to complete transaction</td>\n</tr>\n<tr>\n<td>200007</td>\n<td>provider_error</td>\n<td>Customer has incomplete transaction</td>\n</tr>\n<tr>\n<td>200008</td>\n<td>provider_error</td>\n<td>FBE not available</td>\n</tr>\n<tr>\n<td>200009</td>\n<td>provider_error</td>\n<td>Meter not active</td>\n</tr>\n<tr>\n<td>200010</td>\n<td>provider_error</td>\n<td>Product is currently inactive</td>\n</tr>\n<tr>\n<td>200011</td>\n<td>provider_error</td>\n<td>No stock is available</td>\n</tr>\n<tr>\n<td>200012</td>\n<td>provider_error</td>\n<td>Recharge failed</td>\n</tr>\n<tr>\n<td>200013</td>\n<td>provider_error</td>\n<td>Purchase failed</td>\n</tr>\n<tr>\n<td>200014</td>\n<td>provider_error</td>\n<td>Payment failed</td>\n</tr>\n<tr>\n<td>200015</td>\n<td>provider_error</td>\n<td>Card not supported</td>\n</tr>\n<tr>\n<td>200016</td>\n<td>provider_error</td>\n<td>Customer has insufficient funds available</td>\n</tr>\n<tr>\n<td>200017</td>\n<td>provider_error</td>\n<td>Invalid PIN entered</td>\n</tr>\n<tr>\n<td>200018</td>\n<td>provider_error</td>\n<td>Invalid account type selected</td>\n</tr>\n<tr>\n<td>200019</td>\n<td>provider_error</td>\n<td>Expired card</td>\n</tr>\n<tr>\n<td>200020</td>\n<td>provider_error</td>\n<td>No connection to bank system</td>\n</tr>\n<tr>\n<td>200021</td>\n<td>provider_error</td>\n<td>System currently unavailable</td>\n</tr>\n<tr>\n<td>200022</td>\n<td>provider_error</td>\n<td>Request timeout to provider</td>\n</tr>\n<tr>\n<td>200023</td>\n<td>provider_error</td>\n<td>The operation has timed out</td>\n</tr>\n<tr>\n<td>200024</td>\n<td>provider_error</td>\n<td>Supplier account error</td>\n</tr>\n<tr>\n<td>200025</td>\n<td>auth_error</td>\n<td>Invalid Credentials</td>\n</tr>\n<tr>\n<td>200026</td>\n<td>findesk_error</td>\n<td>Insufficient funds in the Finclude pre-funded account</td>\n</tr>\n<tr>\n<td>200027</td>\n<td>provider_error</td>\n<td>Payment approval rejected</td>\n</tr>\n<tr>\n<td>200028</td>\n<td>provider_error</td>\n<td>Provider callback timed out</td>\n</tr>\n<tr>\n<td>200029</td>\n<td>provider_error</td>\n<td>Product not found</td>\n</tr>\n<tr>\n<td>200030</td>\n<td>provider_error</td>\n<td>Tendered amount below the allowed limit</td>\n</tr>\n<tr>\n<td>200031</td>\n<td>provider_error</td>\n<td>Tendered amount above the allowed limit</td>\n</tr>\n<tr>\n<td>200032</td>\n<td>provider_error</td>\n<td>The customer account has reached a transaction limit with the authorizer</td>\n</tr>\n<tr>\n<td>200033</td>\n<td>provider_error</td>\n<td>The account number is malformed, or does not exist</td>\n</tr>\n<tr>\n<td>200034</td>\n<td>provider_error</td>\n<td>Exact amount required, partial payments not accepted</td>\n</tr>\n<tr>\n<td>200035</td>\n<td>provider_error</td>\n<td>MSISDN invalid</td>\n</tr>\n<tr>\n<td>200036</td>\n<td>provider_error</td>\n<td>Approval not granted by wallet holder</td>\n</tr>\n<tr>\n<td>200037</td>\n<td>provider_error</td>\n<td>The transaction cannot be reversed/cancelled</td>\n</tr>\n<tr>\n<td>200038</td>\n<td>provider_error</td>\n<td>Tendered amount not within the allowed limits</td>\n</tr>\n<tr>\n<td>200039</td>\n<td>provider_error</td>\n<td>Account topup is not allowed for the specified MSISDN</td>\n</tr>\n<tr>\n<td>200040</td>\n<td>provider_error</td>\n<td>Unable to process. Please contact Finclude <a href=\"https://mailto:support@finclude.net\">support@finclude.net</a></td>\n</tr>\n<tr>\n<td>200041</td>\n<td>provider_error</td>\n<td>Customer blocked because of KYC Failure</td>\n</tr>\n<tr>\n<td>200042</td>\n<td>provider_error</td>\n<td>Supplier system refused connection</td>\n</tr>\n<tr>\n<td>200043</td>\n<td>provider_error</td>\n<td>Token cannot be found</td>\n</tr>\n<tr>\n<td>200044</td>\n<td>provider_error</td>\n<td>The token and pin combination can not be found</td>\n</tr>\n<tr>\n<td>200045</td>\n<td>provider_error</td>\n<td>Voucher was previously redeemed</td>\n</tr>\n<tr>\n<td>200046</td>\n<td>provider_error</td>\n<td>Voucher has expired</td>\n</tr>\n<tr>\n<td>200047</td>\n<td>provider_error</td>\n<td>Voucher has been cancelled</td>\n</tr>\n<tr>\n<td>200048</td>\n<td>provider_error</td>\n<td>Deposit not allowed</td>\n</tr>\n<tr>\n<td>200049</td>\n<td>provider_error</td>\n<td>Withdrawel not allowed</td>\n</tr>\n<tr>\n<td>200050</td>\n<td>provider_error</td>\n<td>Payment was previously completed</td>\n</tr>\n<tr>\n<td>200051</td>\n<td>provider_error</td>\n<td>Invalid bank ID</td>\n</tr>\n<tr>\n<td>200052</td>\n<td>provider_error</td>\n<td>Insufficient funds in the supplier account</td>\n</tr>\n<tr>\n<td>200053</td>\n<td>provider_error</td>\n<td>For future use</td>\n</tr>\n<tr>\n<td>200054</td>\n<td>provider_error</td>\n<td>For future use</td>\n</tr>\n<tr>\n<td>400001</td>\n<td>invalid_grant</td>\n<td>Account is not fully set up</td>\n</tr>\n<tr>\n<td>400002</td>\n<td>invalid_client</td>\n<td>Invalid client credentials</td>\n</tr>\n<tr>\n<td>400003</td>\n<td>invalid_request</td>\n<td>Missing form parameter: grant_type</td>\n</tr>\n<tr>\n<td>400004</td>\n<td>unsupported_grant_type</td>\n<td>Unsupported grant_type</td>\n</tr>\n<tr>\n<td>400005</td>\n<td>invalid_scope</td>\n<td>Invalid scopes: {{scope}}</td>\n</tr>\n<tr>\n<td>400006</td>\n<td>invalid_grant</td>\n<td>Token is not active</td>\n</tr>\n<tr>\n<td>400007</td>\n<td>invalid_grant</td>\n<td>Invalid refresh token</td>\n</tr>\n<tr>\n<td>400008</td>\n<td>invalid_request</td>\n<td>Missing parameter value</td>\n</tr>\n<tr>\n<td>400009</td>\n<td>invalid_user</td>\n<td>User not authorised to perform transaction</td>\n</tr>\n<tr>\n<td>400010</td>\n<td>api_error</td>\n<td>Transaction not found</td>\n</tr>\n<tr>\n<td>400011</td>\n<td>api_error</td>\n<td>Requester transaction detail does not match tx_log_id</td>\n</tr>\n<tr>\n<td>400012</td>\n<td>api_error</td>\n<td>Invalid tx_log_id</td>\n</tr>\n<tr>\n<td>400013</td>\n<td>api_error</td>\n<td>Error retrieving receipt</td>\n</tr>\n<tr>\n<td>400014</td>\n<td>api_error</td>\n<td>Reprint is not available</td>\n</tr>\n<tr>\n<td>400015</td>\n<td>api_error</td>\n<td>Image is not available</td>\n</tr>\n<tr>\n<td>400016</td>\n<td>api_error</td>\n<td>User cancelled the transaction</td>\n</tr>\n<tr>\n<td>400017</td>\n<td>api_error</td>\n<td>Transaction could not be cancelled</td>\n</tr>\n<tr>\n<td>401001</td>\n<td>invalid_request</td>\n<td>Missing parameter: username</td>\n</tr>\n<tr>\n<td>401002</td>\n<td>invalid_request</td>\n<td>Missing parameter: password</td>\n</tr>\n<tr>\n<td>401003</td>\n<td>unauthorized_client</td>\n<td>Client secret not provided in request</td>\n</tr>\n<tr>\n<td>401004</td>\n<td>unauthorized_client</td>\n<td>Invalid client secret</td>\n</tr>\n<tr>\n<td>401005</td>\n<td>unauthorized_client</td>\n<td>Invalid authorization token</td>\n</tr>\n<tr>\n<td>401006</td>\n<td>unauthorized_client</td>\n<td>Invalid id token</td>\n</tr>\n<tr>\n<td>401007</td>\n<td>invalid_request</td>\n<td>Incorrect Parameters</td>\n</tr>\n<tr>\n<td>401008</td>\n<td>invalid_api_tx_object_id</td>\n<td>Incorrect API Tx Object</td>\n</tr>\n<tr>\n<td>401009</td>\n<td>Invalid_Transaction</td>\n<td>Transaction Id doesn't exists</td>\n</tr>\n<tr>\n<td>401010</td>\n<td>invalid_status_type</td>\n<td>Invalid Status Type</td>\n</tr>\n<tr>\n<td>401011</td>\n<td>invalid_org_id</td>\n<td>Invalid Original Transaction Id</td>\n</tr>\n<tr>\n<td>401012</td>\n<td>invalid_msidsn_code</td>\n<td>Invalid Msisdn code or not supported</td>\n</tr>\n<tr>\n<td>500000</td>\n<td>internal_server</td>\n<td>The server has experience an error.</td>\n</tr>\n<tr>\n<td>500001</td>\n<td>Duplicate_Transaction</td>\n<td>Transaction Id already exists</td>\n</tr>\n<tr>\n<td>500002</td>\n<td>No_Active_Catalogue</td>\n<td>No active catalogue for scope and api_tx_object_id</td>\n</tr>\n<tr>\n<td>500003</td>\n<td>multiple_entities</td>\n<td>More than one entity found. Please specify the entity_id in the request</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>Note:</strong> Remember error code for unexpected errors should be the same and then we send back the error from the supplier. </p>\n</blockquote>\n<h2 id=\"glossary\">GLOSSARY</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Term</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>API</td>\n<td>Application Programming Interface (API), refers to the method through which two applications talk to each other.</td>\n</tr>\n<tr>\n<td>Authentication</td>\n<td>Determines who the user is.</td>\n</tr>\n<tr>\n<td>Authorisation</td>\n<td>Determines which parts of the system can be accessed.</td>\n</tr>\n<tr>\n<td>B2B</td>\n<td>Business to Business</td>\n</tr>\n<tr>\n<td>GST</td>\n<td>General Sales Tax</td>\n</tr>\n<tr>\n<td>RESTfull API</td>\n<td>RESTfull API is an architectural style for an api, which access data using HTTP request. It uses the methods GET, PUT, POST and DELETE to read, update, create and delete.</td>\n</tr>\n<tr>\n<td>TI</td>\n<td>Tarrif Index</td>\n</tr>\n<tr>\n<td>tx_object</td>\n<td>Transaction Object defines any predefined product or action that can be performed through the system.</td>\n</tr>\n<tr>\n<td>VAT</td>\n<td>Value Added Tax</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"basic-transaction\">BASIC TRANSACTION</h2>\n<p>All transaction methods follows a pattern even though the information requested or responded with may differ.</p>\n<h2 id=\"request\">Request</h2>\n<p>The basic transaction request have the following parameters. These parameters will be unique to the requester.</p>\n<ul>\n<li><p><strong>req_session_id</strong>: Global unique identifier for the session used.</p>\n</li>\n<li><p><strong>req_device_id</strong>: The unique identifier for the device used in the transaction.</p>\n</li>\n<li><p><strong>req_store_id</strong>: The id of the store where the transaction was done.</p>\n</li>\n<li><p><strong>req_transaction_id</strong>: The unique transaction of the requester.</p>\n</li>\n<li><p><strong>req_date_time</strong>: The date time stamp of the request.</p>\n</li>\n<li><p><strong>req_platform</strong>: The technolgy platform used were the request originated from.</p>\n</li>\n</ul>\n<p>The fields req_session_id and req_date_time are required.</p>\n<p>The req_platform are used to identify the technology platform from where the transaction has originated. The following values are allowed:</p>\n<ul>\n<li><p><strong>POS</strong>: Point of Sale Devices</p>\n</li>\n<li><p><strong>WEB</strong>: Website</p>\n</li>\n<li><p><strong>Mobile</strong>: Mobile device</p>\n</li>\n<li><p><strong>USSD</strong>: USSD used</p>\n</li>\n<li><p><strong>Other</strong>: Not specific platform used</p>\n</li>\n</ul>\n<p>Some methods allow the requester to send a requester_data array with the request. The data array are limited to a maximum of ten elements consisting of field name and value.</p>\n<h2 id=\"response\">Response</h2>\n<p>The basic transaction response consist of the following sections</p>\n<ul>\n<li><p><strong>meta</strong>: The meta section returns the requester detail with a response message.</p>\n<ul>\n<li><p>response_code</p>\n</li>\n<li><p>response_message</p>\n</li>\n<li><p>req_session_id</p>\n</li>\n<li><p>req_device_id</p>\n</li>\n<li><p>req_store_id</p>\n</li>\n<li><p>req_transaction_id</p>\n</li>\n<li><p>req_date_time</p>\n</li>\n<li><p>req_platform</p>\n</li>\n</ul>\n</li>\n<li><p><strong>transaction_detail</strong>: The transaction detail provide the details as per the Findesk system.</p>\n<ul>\n<li><p>date_time: the date time stamp of the transaction.</p>\n</li>\n<li><p>tx_log_id: the unique transaction id within the Findesk system.</p>\n</li>\n<li><p>tx_status: the status of the transacion.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>voucher_detail</strong>: The voucher detail includes the information of the transaction, which is typically printed on a till slip or displayed at the end of the transacion.</p>\n</li>\n</ul>\n<blockquote>\n<p>Note: <em>Not all tags are always returned.</em> Only tags for which information from the supplier are received, are returned. Therefore, if for example the \"outstanding\" tag in the meter lookup is not returned, you have to assume that it is information the the supplier does not supply. You have to handle this appropriately on your side, either defaulting to 0 or empty string, or handle it in some other way that makes sense in your environment. </p>\n</blockquote>\n<ul>\n<li><strong>transaction_value</strong>: The financial value breakdown of the transaction.</li>\n</ul>\n<blockquote>\n<p>An error section is returned when the transaction fails. </p>\n</blockquote>\n<ul>\n<li><p><strong>error</strong></p>\n<ul>\n<li><p>error_code: The numeric error code for the error.</p>\n</li>\n<li><p>error: The error group.</p>\n</li>\n<li><p>error_description: The error description.</p>\n</li>\n</ul>\n</li>\n</ul>\n<blockquote>\n<p><strong>Note:</strong> The above serves as a guideline, use the detailed responses provided for each transaction method. </p>\n</blockquote>\n<h2 id=\"basic-transaction-flows\">Basic transaction flows</h2>\n<p>Using the methods in the api there are different possible transaction flows that can be used.</p>\n<p><strong>The most simple version</strong></p>\n<p>The requester perform a POST requested using the method that will provide the transaction object that the user selected. The Findesk system will generate a response. The requester would then display the response to there user.</p>\n<img src=\"https://content.pstmn.io/dbf297ee-8e8f-4d0e-8918-f015eacc0b55/YmFzaWNGbG93LnBuZw==\">\n\n<p><strong>Include confirmation</strong></p>\n<p>Using the confirmation flow, the requester must indicate that status of the transaction. The transaction status method are used to determine the transaction status should a timeout or similiar type of errors occur. The transaction status method would return a favourable result should the transaction be completed at the Findesk side. The requester can now retreive the transaction detail using the reprint method and confirm the transaction.</p>\n<p>Calls to the <em>/confirmation</em> and <em>/requestCancellation</em> endpoints are treated as advice messages. The network must store-and-forward these messages every 20 minutes until a response is received from Finclude, or until midnight. Finclude will always approve an advice request as long as the request is well-formed and authentication/authorization succeeds.</p>\n<p>IMPORTANT NOTE: A payment instruction to the Finclude API is not deemed complete until either a /confirmation or /requestCancellation instruction is received for the vending transaction.</p>\n<img src=\"https://content.pstmn.io/6b1ce615-6d7b-462e-bcd1-cf9886a4bdba/Y29uZmlybWF0aW9uRmxvdy5wbmc=\">\n\n<p><strong>Requesting cancellation</strong></p>\n<p>Requesting cancellation is not part of the normal flow as this action is limited to certain contractual situations. The cancel request is recorder in the Findesk system and it is important that the requester mark their transaction as such.The reversal of the transaction is a seperate step.</p>\n<blockquote>\n<p><strong>Note:</strong> It is important to note that the request for cancellation and actual cancellation are not the same. </p>\n</blockquote>\n<img src=\"https://content.pstmn.io/840db26b-736d-49db-830e-c2c184dc5dbe/Y2FuY2VsRmxvdy5wbmc=\"></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"14500887","collectionId":"255ff211-3d7b-424f-852d-48e19328ebdb","publishedId":"2sB2cX924d","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-04-10T10:06:49.000Z"},"item":[{"name":"token password & username","event":[{"listen":"test","script":{"id":"12856d0d-2d0b-45bd-a05c-209e3e9c282d","exec":["var jsonData = JSON.parse(responseBody);\r","\r","postman.setEnvironmentVariable(\"access_token\", jsonData.access_token);\r","postman.setEnvironmentVariable(\"refresh_token\", jsonData.refresh_token);\r",""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"2eaa2ac5-b3dd-452b-a5a5-521e5132e999","exec":[""],"type":"text/javascript"}}],"id":"895d8801-d1e5-4e40-a7f6-cb8877549f89","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"key":"x-mock-response-name","value":"Successful call: Token and refresh token are returned","description":"<p>{{ignore_header}}</p>\n"}],"body":{"mode":"urlencoded","urlencoded":[{"description":"<p>(Required) The unique id that is provided to identify the integrator.</p>\n","key":"client_id","value":"{{client_id}}"},{"description":"<p>(Required) The unique client secret provided.</p>\n","key":"client_secret","value":"{{client_secret}}"},{"description":"<p>The user who are used to perform the action.</p>\n","key":"username","value":"{{username}}"},{"description":"<p>The password of the user who performs the transaction.</p>\n","key":"password","value":"{{password}}"},{"description":"<p>(Required) The grant type when using a username and password, ex password.</p>\n","key":"grant_type","value":"password"},{"description":"<p>(Required) The scopes to which access are requested, openid will ensure that you receive a Id Token.</p>\n","key":"scope","value":"read write openid"}]},"url":"{{authurl}}/token","description":"<p>Authentication can be done using the provided client_id, client_secret, username and password or by using the client_id and client_secret for a service account. Service accounts are typically used for read only access and administrative task where the username and password option is used to perform transactions.</p>\n<p>Parameter options and there meaning:</p>\n<p><strong>grant type</strong></p>\n<ul>\n<li><p><strong>password</strong>: Indicates that authentication are done using a username and password.</p>\n</li>\n<li><p><strong>refresh_token</strong>: Used when a new access token is requested using the refresh token.</p>\n</li>\n</ul>\n<p><strong>scope</strong></p>\n<ul>\n<li><strong>read write</strong>: An id token will be send back, which allow transactions to be performed.</li>\n</ul>\n<p>During the authentication process the following tokens will be returned, which can be used to interact with the rest of the Finclude B2B API.</p>\n<ul>\n<li><p><strong>Access Token</strong> are used to authenticate the integrating party. These tokens are typically valid for 8 hours and allow the holder access to the api. The access_token is used in the header of all subsequent API calls as part of the oAuth2 authentication. It is passed as the value of the Authorization key in the form: \"Bearer \"</p>\n</li>\n<li><p><strong>Refresh Token</strong> can be used to retreive a new authentication token should the previous one expirered. Refresh tokens may be valid for up to 24 hours.</p>\n</li>\n<li><p><strong>ID Token</strong> The id_token needs to be passed in the body of all subsequent API calls as the value of the id_token key. Example \"id_token\": \"Use the id_token value you received in the response from the /token call\"</p>\n</li>\n</ul>\n<p>All token experation times are returned in seconds.</p>\n<blockquote>\n<p><strong>Note:</strong> These tokens are like passwords, treat them as such and ensure that they are not shared. </p>\n</blockquote>\n<blockquote>\n<p><strong>Note:</strong> If a token is used that has expired, the HTTP response status code will still be 200 with a structured error message in the response body. The exception to this is when a token is used that has expired for more than 8 hours or that has never been used before; in such a case the response body will be empty and the HTTP response status code will be 401 (Unauthorised).</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["token"],"host":["{{authurl}}"],"query":[],"variable":[]}},"response":[{"id":"340f0bc8-f810-4639-a264-e654c05c8229","name":"Successful call: Token and refresh token are returned","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"description":"Not needed. Only included for the Postman mock server setup.","key":"x-mock-response-name","value":"Successful call: Token and refresh token are returned"}],"body":{"mode":"urlencoded","urlencoded":[{"description":"(Required) The unique id that is provided to identify the integrator.","key":"client_id","value":"newClient"},{"description":"(Required) The unique client secret provided.","key":"client_secret","value":"a0a1fc74-77b1-4bd5-a850-5fbec43ea13e"},{"description":"The user who are used to perform the action.","key":"username","value":"pnpapi"},{"description":"The password of the user who performs the transaction.","key":"password","value":"3k$7@81T#4Zh"},{"description":"(Required) The grant type when using a username and password, ex password.","key":"grant_type","value":"password"},{"description":"(Required) The scopes to which access are requested, openid will ensure that you receive a Id Token.","key":"scope","value":"read write openid"}]},"url":"https://extauth.finclude.co.za/auth/realms/finclude/protocol/openid-connect/token","description":"Authentication can be done using the provided client_id, client_secret, username and password or by using the client_id and client_secret for a service account. Service accounts are typically used for read only access and administrative task where the username and password option is used to perform transactions.\n\nParameter options and there meaning:\n\n**grant type**\n\n*   **password**: Indicates that authentication are done using a username and password.\n*   **refresh_token**: Used when a new access token is requested using the refresh token.\n    \n\n**scope**\n\n*   **read write**: An id token will be send back, which allow transactions to be performed.\n    \n\nDuring the authentication process the following tokens will be returned, which can be used to interact with the rest of the Finclude B2B API.\n\n*   **Access Token** are used to authenticate the integrating party. These tokens are typically valid for 8 hours and allow the holder access to the api. The access_token is used in the header of all subsequent API calls as part of the oAuth2 authentication. It is passed as the value of the Authorization key in the form: \"Bearer \"\n*   **Refresh Token** can be used to retreive a new authentication token should the previous one expirered. Refresh tokens may be valid for up to 24 hours.\n*   **ID Token** The id_token needs to be passed in the body of all subsequent API calls as the value of the id_token key. Example \"id_token\": \"Use the id_token value you received in the response from the /token call\"\n    \n\nAll token experation times are returned in seconds.\n\n> **Note:** These tokens are like passwords, treat them as such and ensure that they are not shared.\n\n> **Note:** If a token is used that has expired, the HTTP response status code will still be 200 with a structured error message in the response body. The exception to this is when a token is used that has expired for more than 8 hours or that has never been used before; in such a case the response body will be empty and the HTTP response status code will be 401 (Unauthorised)."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJlUktVWG10TFhKMHBBNkxBS29aWko1ZlU0VDhCdmxKdERCb3pXanFFdnhjIn0.eyJleHAiOjE2MTcyMTYxNzcsImlhdCI6MTYxNzE4MDE3NywianRpIjoiNTAxYjI5ODMtNjVlZS00MzhkLWIxZjQtM2M2YmY4YjVhYjdmIiwiaXNzIjoiaHR0cHM6Ly9pbnRhdXRoLmZpbmNsdWRlLmNvLnphL2F1dGgvcmVhbG1zL2ZpbmNsdWRlIiwic3ViIjoiNDM1N2NhNDEtMjNiZC00ZDNiLWE2NTgtYWQwNzE0MzBlODdkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV3Q2xpZW50Iiwic2Vzc2lvbl9zdGF0ZSI6IjgzYzgzYmNlLTFjOTQtNGU0MC1iNzA1LTAyN2JlYTRiNTkyOSIsImFjciI6IjEiLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIHJlYWQgd3JpdGUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJwbnBhcGkifQ.sLOruKp63GZLD5NAcxZlazhq2Gm6ci2Ok7QZw3N_giO9jFpIM5xn3FcHZIW4gfiaVgq0ytePyoTxD8ZqG4ZZsVpP7aA44tRL_CcaBt89vbOyV52BeMFisOwBlnF0ik-GXLCBEPt-zddeFW8QXOmIXPYv_kGpB91PQzNbrtM8xNr9SNovzG8Jd9gIJVKoBFkS9rgxYQF95kGD3OALtVQCyDfuMgu4VU9vHaJWFbqDFBLmQEqo8XXfN3p6VMn5sVHx8hsInm7wOS7N3jNb5QSmZCLBSMZ1yg1AEQdB5HiC6SQg_CRfGDTF951Fr0orIRJXX4xOo4DxTVgIpPp0RT5BlQ\",\n    \"expires_in\": 36000,\n    \"refresh_expires_in\": 1800,\n    \"refresh_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwZDkwY2JkNy03MTY0LTQyY2MtODhlMi1kMjE1ZTc5YWU4ZWEifQ.eyJleHAiOjE2MTcxODE5NzcsImlhdCI6MTYxNzE4MDE3NywianRpIjoiNDlhMWYxNDMtMDI5NC00NTdkLTg5ZWEtMDM0ODAzM2NjOGFkIiwiaXNzIjoiaHR0cHM6Ly9pbnRhdXRoLmZpbmNsdWRlLmNvLnphL2F1dGgvcmVhbG1zL2ZpbmNsdWRlIiwiYXVkIjoiaHR0cHM6Ly9pbnRhdXRoLmZpbmNsdWRlLmNvLnphL2F1dGgvcmVhbG1zL2ZpbmNsdWRlIiwic3ViIjoiNDM1N2NhNDEtMjNiZC00ZDNiLWE2NTgtYWQwNzE0MzBlODdkIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6Im5ld0NsaWVudCIsInNlc3Npb25fc3RhdGUiOiI4M2M4M2JjZS0xYzk0LTRlNDAtYjcwNS0wMjdiZWE0YjU5MjkiLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIHJlYWQgd3JpdGUifQ.sEQ9HM1nzT1c-soxnsMXPk2MehvozEyjp9osCZuaXg0\",\n    \"token_type\": \"Bearer\",\n    \"id_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJlUktVWG10TFhKMHBBNkxBS29aWko1ZlU0VDhCdmxKdERCb3pXanFFdnhjIn0.eyJleHAiOjE2MTcyMTYxNzcsImlhdCI6MTYxNzE4MDE3NywiYXV0aF90aW1lIjowLCJqdGkiOiI2MTYxOTQ1Yy1mNGFjLTQ1YzItODRmZi1iNWJjMDFlZWM4NzEiLCJpc3MiOiJodHRwczovL2ludGF1dGguZmluY2x1ZGUuY28uemEvYXV0aC9yZWFsbXMvZmluY2x1ZGUiLCJhdWQiOiJuZXdDbGllbnQiLCJzdWIiOiI0MzU3Y2E0MS0yM2JkLTRkM2ItYTY1OC1hZDA3MTQzMGU4N2QiLCJ0eXAiOiJJRCIsImF6cCI6Im5ld0NsaWVudCIsInNlc3Npb25fc3RhdGUiOiI4M2M4M2JjZS0xYzk0LTRlNDAtYjcwNS0wMjdiZWE0YjU5MjkiLCJhdF9oYXNoIjoiM0M2RFEweHpvbjB2WlJPMWpmaDZSdyIsImFjciI6IjEiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJwbnBhcGkifQ.b9oUTjozaJY6xPSZ1ePKThMfPISd7y6qGXr7r3O9TObTVcMcvbi8iL_7tTlO-fwHoSj9U1VENOJ3cR_gzjyLsWsWcdzv2xQQfqsaWP0PVPWu6aAHJE2hbxdTvMvzgrXNobfgLsYGFaRTt4283o4V4aSvI0KzzOpiNSLy-7ekgtr1qXHOSCuluaOXjKi6n9NFXQ7Z9MZUj1tfFf7Q-OLhHwoThRfXDLtSOnbmT_RXm0p_Kz0_KIFVytXASJtHf1TV27toPhjQxNEbsTwRwkwUkKB_EKJ4ECxzfPFpsM9aO5CjxeaOSLhJnw_mzlF4-Cfuergh9SXRVdKj-JsHTovmOQ\",\n    \"not-before-policy\": 0,\n    \"session_state\": \"83c83bce-1c94-4e40-b705-027bea4b5929\",\n    \"scope\": \"openid profile read write\"\n}"},{"id":"2e9f8521-b9ab-433e-881c-2c5719acd40b","name":"400 Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"description":"{{ignore_header}}","key":"x-mock-response-name","value":"Successful call: Token and refresh token are returned"}],"body":{"mode":"urlencoded","urlencoded":[{"description":"(Required) The unique id that is provided to identify the integrator.","key":"client_id","value":"{{client_id}}"},{"description":"(Required) The unique client secret provided.","key":"client_secret","value":"{{client_secret}}"},{"description":"The user who are used to perform the action.","key":"username","value":"{{username}}"},{"description":"The password of the user who performs the transaction.","key":"password","value":"{{password}}"},{"description":"(Required) The grant type when using a username and password, ex password.","key":"grant_type","value":"password"},{"description":"(Required) The scopes to which access are requested, openid will ensure that you receive a Id Token.","key":"scope","value":"read write openid"}]},"url":"{{authurl}}/token","description":"Authentication can be done using the provided client_id, client_secret, username and password or by using the client_id and client_secret for a service account. Service accounts are typically used for read only access and administrative task where the username and password option is used to perform transactions.\n\nParameter options and there meaning:\n\n**grant type**\n\n*   **password**: Indicates that authentication are done using a username and password.\n*   **refresh_token**: Used when a new access token is requested using the refresh token.\n    \n\n**scope**\n\n*   **read write**: An id token will be send back, which allow transactions to be performed.\n    \n\nDuring the authentication process the following tokens will be returned, which can be used to interact with the rest of the Finclude B2B API.\n\n*   **Access Token** are used to authenticate the integrating party. These tokens are typically valid for 8 hours and allow the holder access to the api. The access_token is used in the header of all subsequent API calls as part of the oAuth2 authentication. It is passed as the value of the Authorization key in the form: \"Bearer \"\n*   **Refresh Token** can be used to retreive a new authentication token should the previous one expirered. Refresh tokens may be valid for up to 24 hours.\n*   **ID Token** The id_token needs to be passed in the body of all subsequent API calls as the value of the id_token key. Example \"id_token\": \"Use the id_token value you received in the response from the /token call\"\n    \n\nAll token experation times are returned in seconds.\n\n> **Note:** These tokens are like passwords, treat them as such and ensure that they are not shared.\n\n> **Note:** If a token is used that has expired, the HTTP response status code will still be 200 with a structured error message in the response body. The exception to this is when a token is used that has expired for more than 8 hours or that has never been used before; in such a case the response body will be empty and the HTTP response status code will be 401 (Unauthorised)."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"invalid_grant\",\n    \"error_description\": \"Account is not fully set up\"\n}"},{"id":"e4ef4cde-91ef-4284-92fe-f39f6d0d3f51","name":"401 Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"description":"{{ignore_header}}","key":"x-mock-response-name","value":"Successful call: Token and refresh token are returned"}],"body":{"mode":"urlencoded","urlencoded":[{"description":"(Required) The unique id that is provided to identify the integrator.","key":"client_id","value":"{{client_id}}"},{"description":"(Required) The unique client secret provided.","key":"client_secret","value":"{{client_secret}}"},{"description":"The user who are used to perform the action.","key":"username","value":"{{username}}"},{"description":"The password of the user who performs the transaction.","key":"password","value":"{{password}}"},{"description":"(Required) The grant type when using a username and password, ex password.","key":"grant_type","value":"password"},{"description":"(Required) The scopes to which access are requested, openid will ensure that you receive a Id Token.","key":"scope","value":"read write openid"}]},"url":"{{authurl}}/token","description":"Authentication can be done using the provided client_id, client_secret, username and password or by using the client_id and client_secret for a service account. Service accounts are typically used for read only access and administrative task where the username and password option is used to perform transactions.\n\nParameter options and there meaning:\n\n**grant type**\n\n*   **password**: Indicates that authentication are done using a username and password.\n*   **refresh_token**: Used when a new access token is requested using the refresh token.\n    \n\n**scope**\n\n*   **read write**: An id token will be send back, which allow transactions to be performed.\n    \n\nDuring the authentication process the following tokens will be returned, which can be used to interact with the rest of the Finclude B2B API.\n\n*   **Access Token** are used to authenticate the integrating party. These tokens are typically valid for 8 hours and allow the holder access to the api. The access_token is used in the header of all subsequent API calls as part of the oAuth2 authentication. It is passed as the value of the Authorization key in the form: \"Bearer \"\n*   **Refresh Token** can be used to retreive a new authentication token should the previous one expirered. Refresh tokens may be valid for up to 24 hours.\n*   **ID Token** The id_token needs to be passed in the body of all subsequent API calls as the value of the id_token key. Example \"id_token\": \"Use the id_token value you received in the response from the /token call\"\n    \n\nAll token experation times are returned in seconds.\n\n> **Note:** These tokens are like passwords, treat them as such and ensure that they are not shared.\n\n> **Note:** If a token is used that has expired, the HTTP response status code will still be 200 with a structured error message in the response body. The exception to this is when a token is used that has expired for more than 8 hours or that has never been used before; in such a case the response body will be empty and the HTTP response status code will be 401 (Unauthorised)."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"invalid_request\",\n    \"error_description\": \"Missing parameter: username\"\n}"}],"_postman_id":"895d8801-d1e5-4e40-a7f6-cb8877549f89"},{"name":"objectList","event":[{"listen":"test","script":{"id":"9ca29146-6606-4033-ada7-86bd1594922b","exec":["\r",""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"packages":{},"type":"text/javascript","id":"3628df98-8920-4909-970d-7ae653aca693"}}],"id":"1f67d933-118a-4ca3-aebc-4e7d2d2f1915","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"req_session_id\": \"8ea30940-08fe-4632-a58e-8ce5937f23aa\",\r\n  \"req_device_id\": \"AB00932\",\r\n  \"req_store_id\": \"21398jsdf98\",\r\n  \"req_transaction_id\": \"ed9d158c-c8d7-405e-b8ee-81f5232110a5\",\r\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n  \"req_platform\": \"POS\"\r\n}","options":{"raw":{"language":"json"}}},"url":"//objectList","description":"<p>Get the list of all available transaction objects. The sample requests are grouped per country to assist in locating the best examples for your application.</p>\n<p>The response of this method shows all the products that Finclude have available, as well as the menu structure that applies to these products. It is typically used by Finclude clients that DYNAMICALLY changes their menu to fit the Finclude product suite. This is usually not the case in POS integration as tills typically needs to be pre-configured. This call is typically used by digital channels that wants to show all the products if and when they change.</p>\n<p>Not the full product list will be returned. Only the product list that is available to the specific API user that made the call, will be returned.</p>\n<p>Two major sections are returned:</p>\n<ul>\n<li><strong>menu_group</strong>: A list of all the menu objects that applies to the list of available products.</li>\n<li><strong>products</strong>: A list of all the products available to the API user that made the call.</li>\n</ul>\n<p>The <em><strong>PRODUCTS</strong></em> section will contain a list of the available transaction objects grouped by the product category (Airtime, Bill Lookup, Bill Payments, etc). For each transaction object at least the following detail will be returned:</p>\n<ul>\n<li><p><strong>api_tx_object_id</strong>: A unique identifier for the transaction object.</p>\n</li>\n<li><p><strong>category</strong>: The global category to which the transaction object belongs.</p>\n</li>\n<li><p><strong>provider</strong>: The product owner.</p>\n</li>\n<li><p><strong>description</strong>: A description of the transaction object.</p>\n</li>\n<li><p><strong>method_name</strong>: The method (API endpoint) that should be used to invoke the transaction object.</p>\n</li>\n<li><p><strong>country</strong>: The country that the product applies to</p>\n</li>\n<li><p><strong>country_code</strong>: A short code for the country that the product applies to. This can be used in menu descriptions in cases where products have the same name in more than one country and where the API user has access to the products of more than one country.</p>\n</li>\n<li><p><strong>currency</strong>: The currency in which the transaction are done.</p>\n</li>\n<li><p><strong>denomination</strong>: Indicates the way in which the value should be specified, typically smallestSubunit is used which means that the smallest monetary unit is used, for example a R5.00 transaction transaction value will be 500.</p>\n</li>\n<li><p><strong>value_type</strong>: Indicates which type of value is associated to the transaction object. Fixed - The value of the product stays the same for example pinned Airtime vouchers such as BEMOBILE P10 which is always 10 Pula. Variable - indicates that the value of the product changes for example pre-paid electricity where the customer can specify the amount of electricity that he/she wants to purchase</p>\n  <p><br />Available unit types:</p>\n  \n<ul>\n<li><strong>fixed</strong>: the transaction value is fixed and the requester does not need to specify the value.</li>\n<li><strong>variable</strong>: the transaction value is a variable and the requester should specify the face value for the transaction.</li>\n<li><strong>unit</strong>: the transaction value would be calculated based on the number of units and the unit value for the transaction.</li>\n<li><strong>novalue</strong>: the transaction has no monetary value.</li>\n</ul>\n</li>\n<li><p><strong>transaction_value</strong>: In a case where the value_type is 'Variable', the transaction_value will specified as 0 since the value is not fixed. When the value_type of the product is 'Fixed', the transaction_value will indicate the monetary value of the product. For example, in the case of a BEMOBILE P10 Airtime voucher, the transaction_value will be '10'.</p>\n</li>\n<li><p><strong>menu_group</strong>: The menu group that the product belongs to ie 'Sale', 'Action', 'Payments', etc. This is used together with the parent_value to find the menu object that the product should be attached to.</p>\n</li>\n<li><p><strong>parent_menu</strong>: This is used together with the menu_group to find the menu object that the product should be attached to.</p>\n</li>\n<li><p><strong>menu_parameters</strong>: This is typically applicable to product where input from the customer is required ie. mobile number, account number, amount to tender, etc. This contains a list of these values (parameters) that needs to be obtained from the customer. When building a menu dynamically, this allows for the danamic creation of the input fields.<br />  In the example below, there are two input required: an account number and the value of the transaction. For each of these two menu parameters the type (numeric, string, etc) is indicated as well as the maximun and minimum value that should be accepted (in the case of numeric values). The param_valid_expression is a regular expression that can be used to validate the input.<br />  The param_sequence indicates in which order the input should be requested (from the lowest value to the highest value). Note that the param_sequence does not need to start from 0 or 1, but it can still be used to order the parameter input.</p>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"menu_parameters\": {  \n        \"param_display_text\": \"Account Number\",  \n        \"param_sequence\": 6,  \n        \"param_type\": \"NUMERIC\",  \n        \"param_max_value\": null,  \n        \"param_min_value\": 0,  \n        \"param_valid_expression\": \"^\\\\d-(\\\\.\\\\d{2})?$\",\n        \"param_input_hint\": \"The account number has to be 11 digits\"\n    },  \n    {  \n        \"param_display_text\": \"Value\",  \n        \"param_sequence\": 7,  \n        \"param_type\": \"NUMERIC\",  \n        \"param_max_value\": null,  \n        \"param_min_value\": 0,  \n        \"param_valid_expression\": \"^\\\\d-(\\\\.\\\\d{2})?$\"  \n        \"param_input_hint\": \"The value can only contain numbers, a fullstop, and no more than two decinals\"\n    }\n}\n\n</code></pre>\n<p>The <em><strong>MENU_GROUP</strong></em> section will contain an array of major menu groups and eacn group will contain an array of the menu objects that applies to the products in the product list. Each menu object contains:</p>\n<ul>\n<li><strong>id</strong>: The unique id of the menu object. Note that the same menu object can be listed multiple times if it applies to more than one menu group.</li>\n<li><strong>image_id</strong>: Am image that can be used to respresent the specific menu object. See also the /retrieve_image endpoint description</li>\n<li><strong>parent_id</strong>: Since the menus are hierarchical, a menu object may, or may not, have a parent menu. For example, the menu structure for a pinned aritime product may be \"Sale\" -&gt; \"Airtime\" -&gt; \"MTN\" -&gt; \"MTN R30\"</li>\n<li><strong>country</strong>: The country that the menu objects applies to.</li>\n<li><strong>country_code</strong>: A short code of the country that the menu object applies to.<br />  The above is in no way the completed list, therefore it is important to check what is returned.</li>\n<li><strong>child_menu_group_id_list</strong>: This will give you the ids of all the sub-menu items linked to the particular menu item. Note that if the menu item does not have any child menu items, this key will not be included in the response</li>\n<li><strong>child_product_api_tx_object_id_list</strong>: If the menu item has any products linked to it, it will contain this key which give a list of the api_tx_object_ids of all the products linked to it. Again, if no products are linked directly to a menu item, this key will not be included in the response</li>\n</ul>\n<p>It is theoretically possible that the menu item can return both the <strong>child_menu_group_id_list</strong> as well as the <strong>child_product_api_tx_object_id_list</strong> since it is possible to link both sub-menus and product to the same menu item. It is however not possible for a menu item to not have at least one of the two keys in the response.</p>\n<p>By default all products accross all countries are returned for all entities that a specific API user has access to. It is however possible to filter the result set using two properties:</p>\n<ul>\n<li><strong>entity_id</strong>: By passing in an entity_id, only the available products for that entity will be returned, even if the API user has access to mutliple entities</li>\n<li><strong>filter</strong>: A number of filter criteria can be specified using the filter object in the request. (See the request body schema specification for more detail)</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-yaml\">    filter:\n        type: object\n        properties:\n            entity_id:\n                description: Limit the products to only a specific entity.\n                type: integer\n                format: int32\n            country_code:\n                description: Limit the products to only products available in a specified country. LS = Lesotho, SA = South Africa, BW = Botswana, ZM = Zambia, SZ = Eswatini, MW = Malawi, NAM = Namibia, SAR = Saudi Arabia\n                type: string\n                enum: [\"LS\", \"SA\", \"BW\", \"ZM\", \"SZ\", \"MW\", \"NAM\", \"SAR\"]\n            menu_group:\n                description: Limit the products to only a specific menu group. For the list of available menu groups, do a call without any filtering to get back a response with all the availalbe menu groups for the entity your request applies to. Examples - SALE, ACTION, PAYMENT. Have to be specified in all-caps.\n                type: string\n            scope_id:\n                description: Limit the products to only a specific scope.\n                type: integer\n                format: int32\n            api_tx_object_list:\n                description: Limit the products to a list of api_tx_object_ids. One or more api_tx_object_ids can be passed in. Multiple api_tx_object_ids must be passed in as a comma separated list.\n            type: string\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["objectList"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"c230570a-ddac-4a6d-b9e9-0baba2b00bf5","name":"200: The product list will be returned.","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"Not needed. Only included for the Postman mock server setup.","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"id_token\": \"\",\n    \"req_session_id\": \"8e04b889-6404-4cd0-a742-88cd7cbfb61c\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"1670928598\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\"\n}","options":{"raw":{"language":"json"}}},"url":"https://extapi.finclude.co.za/api/v2/objectList","description":"Get the list of all available transaction objects. The sample requests are grouped per country to assist in locating the best examples for your application.<p>\nThe response of this method shows all the products that Finclude have available. It is typically used by Finclude clients that DYNAMICALLY changes their menu to fit the FInclude product suite. This is usually not the case in POS integration as tills typically needs to be pre-configured.  This call is typically used by digital channels that wants to show all the products if and when they change.<p>\nThe authoristion token is used in the header, while the id token is included in the body of the request.<p>\nA list of the available transaction objects is returned. For each transaction object at least the following detail would be returned:\n+ <b>id</b>: A unique identifier for the transaction object.\n+ <b>category</b>: The global category to which the transaction object belongs.\n+ <b>provider</b>: The product owner.\n+ <b>description</b>: A description of the transaction object.\n+ <b>method_name</b>: The method that should be use to invoke the transaction object.\n+ <b>value_type</b>: Indicates which type of value is associated to the transaction object.<p>\nAdditional detail may include:\n+ <b>currency</b>: The currency in which the transaction are done.\n+ <b>denomination</b>: Indicates the way in which the value should be specified, typically smallestSubunit is used which means that the smallest monetary unit is used, for example a R5.00 transaction transaction value will be 500.\n+ <b>transaction_value</b>: The value of the transaction.\n+ <b>unit_value</b>: The unit value of the transaction.\n+ <b>country_code</b>: Country in which the transaction was concluded.<p>\nAvailable unit types:\n+ <b>fixed</b>: the transaction value is fixed and the requester does not need to specify the value.\n+ <b>variable</b>: the transaction value is a variable and the requester should specify the face value for the transaction.\n+ <b>unit</b>: the transaction value would be calculated based on the number of units and the unit value for the transaction.\n+ <b>novalue</b>: the transaction has no monetary value.<p>\nThe above is in no way the completed list, therefore it is important to check what is returned."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"0\",\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"0332f415-b1dd-4476-a883-d3b0312a1519\",\n        \"req_device_id\": \"AB00932\",\n        \"req_transaction_id\": \"10569209\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\"\n    },\n    \"tx_object_list\": [\n        {\n            \"api_tx_object_id\": 58,\n            \"category\": \"Airtime\",\n            \"provider\": \"BeMobile\",\n            \"description\": \"BEMOBILE P20\",\n            \"image_id\": 99,\n            \"method_name\": \"pin_airtime_data\",\n            \"country_code\": \"BW\",\n            \"currency\": \"Pula\",\n            \"value_type\": \"fixed\",\n            \"denomination\": \"smallestSubunit\",\n            \"transaction_value\": 2000\n        },\n        {\n            \"api_tx_object_id\": 63,\n            \"category\": \"Airtime\",\n            \"provider\": \"Mascom\",\n            \"description\": \"MASCOM P20\",\n            \"image_id\": 100,\n            \"method_name\": \"pin_airtime_data\",\n            \"country_code\": \"BW\",\n            \"currency\": \"Pula\",\n            \"value_type\": \"fixed\",\n            \"denomination\": \"smallestSubunit\",\n            \"transaction_value\": 2000\n        },\n        {\n            \"api_tx_object_id\": 282,\n            \"category\": \"Electricity\",\n            \"provider\": \"Botswana Power Corporation (BPC)\",\n            \"description\": \"Electricity meter number lookup\",\n            \"image_id\": 83,\n            \"method_name\": \"prepaid_utility_lookup\",\n            \"country_code\": \"BW\",\n            \"value_type\": \"novalue\",\n            \"parameters\": {\n                \"meter_number\": {\n                    \"type\": \"numeric\",\n                    \"min_length\": \"11\",\n                    \"max_length\": \"11\"\n                }\n            }\n        },\n        {\n            \"api_tx_object_id\": 283,\n            \"category\": \"Electricity\",\n            \"provider\": \"Botswana Power Corporation (BPC)\",\n            \"description\": \"Electricity Prepaid Sale\",\n            \"image_id\": 83,\n            \"method_name\": \"prepaid_utility_sale\",\n            \"country_code\": \"BW\",\n            \"value_type\": \"variable\",\n            \"parameters\": {\n                \"meter_number\": {\n                    \"type\": \"numeric\",\n                    \"min_length\": \"11\",\n                    \"max_length\": \"11\"\n                },\n                \"transaction_value\": {\n                    \"type\": \"numeric\",\n                    \"denomination\": \"smallestSubunit\",\n                    \"min_value\": \"500\",\n                    \"max_value\": \"100000\",\n                    \"currency\": \"Pula\"\n                }\n            },\n            \"lookup_required\": \"false\"\n        }\n    ]\n}"},{"id":"7bae53a5-e106-4f02-8c41-0866bf2a7caa","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"id_token\": \"{{id_token}}\",\n    \"req_session_id\": \"79f689af-f88b-4f10-8b9a-232d7def2987\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\"\n}","options":{"raw":{"language":"json"}}},"url":"//objectList","description":"Get the list of all available transaction objects. The sample requests are grouped per country to assist in locating the best examples for your application.<p>\nThe response of this method shows all the products that Finclude have available. It is typically used by Finclude clients that DYNAMICALLY changes their menu to fit the FInclude product suite. This is usually not the case in POS integration as tills typically needs to be pre-configured.  This call is typically used by digital channels that wants to show all the products if and when they change.<p>\nThe authoristion token is used in the header, while the id token is included in the body of the request.<p>\nA list of the available transaction objects is returned. For each transaction object at least the following detail would be returned:\n+ <b>id</b>: A unique identifier for the transaction object.\n+ <b>category</b>: The global category to which the transaction object belongs.\n+ <b>provider</b>: The product owner.\n+ <b>description</b>: A description of the transaction object.\n+ <b>method_name</b>: The method that should be use to invoke the transaction object.\n+ <b>value_type</b>: Indicates which type of value is associated to the transaction object.<p>\nAdditional detail may include:\n+ <b>currency</b>: The currency in which the transaction are done.\n+ <b>denomination</b>: Indicates the way in which the value should be specified, typically smallestSubunit is used which means that the smallest monetary unit is used, for example a R5.00 transaction transaction value will be 500.\n+ <b>transaction_value</b>: The value of the transaction.\n+ <b>unit_value</b>: The unit value of the transaction.\n+ <b>country_code</b>: Country in which the transaction was concluded.<p>\nAvailable unit types:\n+ <b>fixed</b>: the transaction value is fixed and the requester does not need to specify the value.\n+ <b>variable</b>: the transaction value is a variable and the requester should specify the face value for the transaction.\n+ <b>unit</b>: the transaction value would be calculated based on the number of units and the unit value for the transaction.\n+ <b>novalue</b>: the transaction has no monetary value.<p>\nThe above is in no way the completed list, therefore it is important to check what is returned."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"c355e44f-5754-482f-9cae-a360b782f951","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"id_token\": \"{{id_token}}\",\n    \"req_session_id\": \"f188d159-a863-44b4-9623-868573dd2b18\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\"\n}","options":{"raw":{"language":"json"}}},"url":"//objectList","description":"Get the list of all available transaction objects. The sample requests are grouped per country to assist in locating the best examples for your application.<p>\nThe response of this method shows all the products that Finclude have available. It is typically used by Finclude clients that DYNAMICALLY changes their menu to fit the FInclude product suite. This is usually not the case in POS integration as tills typically needs to be pre-configured.  This call is typically used by digital channels that wants to show all the products if and when they change.<p>\nThe authoristion token is used in the header, while the id token is included in the body of the request.<p>\nA list of the available transaction objects is returned. For each transaction object at least the following detail would be returned:\n+ <b>id</b>: A unique identifier for the transaction object.\n+ <b>category</b>: The global category to which the transaction object belongs.\n+ <b>provider</b>: The product owner.\n+ <b>description</b>: A description of the transaction object.\n+ <b>method_name</b>: The method that should be use to invoke the transaction object.\n+ <b>value_type</b>: Indicates which type of value is associated to the transaction object.<p>\nAdditional detail may include:\n+ <b>currency</b>: The currency in which the transaction are done.\n+ <b>denomination</b>: Indicates the way in which the value should be specified, typically smallestSubunit is used which means that the smallest monetary unit is used, for example a R5.00 transaction transaction value will be 500.\n+ <b>transaction_value</b>: The value of the transaction.\n+ <b>unit_value</b>: The unit value of the transaction.\n+ <b>country_code</b>: Country in which the transaction was concluded.<p>\nAvailable unit types:\n+ <b>fixed</b>: the transaction value is fixed and the requester does not need to specify the value.\n+ <b>variable</b>: the transaction value is a variable and the requester should specify the face value for the transaction.\n+ <b>unit</b>: the transaction value would be calculated based on the number of units and the unit value for the transaction.\n+ <b>novalue</b>: the transaction has no monetary value.<p>\nThe above is in no way the completed list, therefore it is important to check what is returned."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"279402df-2f26-437c-9570-859da1aeb993","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"id_token\": \"{{id_token}}\",\n    \"req_session_id\": \"9c137f54-42b3-46c5-811f-0fc04e24db41\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\"\n}","options":{"raw":{"language":"json"}}},"url":"//objectList","description":"Get the list of all available transaction objects. The sample requests are grouped per country to assist in locating the best examples for your application.<p>\nThe response of this method shows all the products that Finclude have available. It is typically used by Finclude clients that DYNAMICALLY changes their menu to fit the FInclude product suite. This is usually not the case in POS integration as tills typically needs to be pre-configured.  This call is typically used by digital channels that wants to show all the products if and when they change.<p>\nThe authoristion token is used in the header, while the id token is included in the body of the request.<p>\nA list of the available transaction objects is returned. For each transaction object at least the following detail would be returned:\n+ <b>id</b>: A unique identifier for the transaction object.\n+ <b>category</b>: The global category to which the transaction object belongs.\n+ <b>provider</b>: The product owner.\n+ <b>description</b>: A description of the transaction object.\n+ <b>method_name</b>: The method that should be use to invoke the transaction object.\n+ <b>value_type</b>: Indicates which type of value is associated to the transaction object.<p>\nAdditional detail may include:\n+ <b>currency</b>: The currency in which the transaction are done.\n+ <b>denomination</b>: Indicates the way in which the value should be specified, typically smallestSubunit is used which means that the smallest monetary unit is used, for example a R5.00 transaction transaction value will be 500.\n+ <b>transaction_value</b>: The value of the transaction.\n+ <b>unit_value</b>: The unit value of the transaction.\n+ <b>country_code</b>: Country in which the transaction was concluded.<p>\nAvailable unit types:\n+ <b>fixed</b>: the transaction value is fixed and the requester does not need to specify the value.\n+ <b>variable</b>: the transaction value is a variable and the requester should specify the face value for the transaction.\n+ <b>unit</b>: the transaction value would be calculated based on the number of units and the unit value for the transaction.\n+ <b>novalue</b>: the transaction has no monetary value.<p>\nThe above is in no way the completed list, therefore it is important to check what is returned."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"1f67d933-118a-4ca3-aebc-4e7d2d2f1915"},{"name":"retrieve_image","id":"ce0f7d47-2c2b-498e-b69a-3be100b842e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"image/jpg"}],"url":"//retrieve_image/:image_id","description":"<p>Retrieve a single image from the server using the image_id. The image data is encoded as Base64 and returned in a JSON response.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["retrieve_image",":image_id"],"host":["/"],"query":[],"variable":[{"id":"48c93b5c-b8f4-4e2d-9c8b-cb2b63e68440","type":"any","value":"","key":"image_id"}]}},"response":[{"id":"b57f826b-5d92-4a06-96fb-34d9a95c61cf","name":"200: Image retrieval successful","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"image/jpg"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"url":{"raw":"http://localhost:8080/api/b2b/v3/retrieve_image/:image_id","protocol":"http","host":["localhost"],"port":"8080","path":["api","b2b","v3","retrieve_image",":image_id"],"variable":[{"key":"image_id"}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"image/jpg"}],"cookie":[],"responseTime":null,"body":"<string>"}],"_postman_id":"ce0f7d47-2c2b-498e-b69a-3be100b842e4"},{"name":"retrieve_image","id":"caf42ee1-ef50-43c7-92fd-cf0e53110448","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"req_session_id\": \"ef3d2a04-e609-4994-a240-570e2f3618e6\",\n  \"req_device_id\": \"AB00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"d44b164f-3fcf-4a69-a27f-a64ac5da5cc3\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\",\n  \"image_id\": \"123,78\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//retrieve_image","description":"<p>Using the image_id that is returned in the response of the /objectlist call, the image can be retrieved from the server. The image data is encoded as Base64.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["retrieve_image"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"23fba31b-7f83-4a2c-bd95-32365fc5cf46","name":"200 Image list retrieved","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n  \"req_session_id\": \"622ae558-80aa-4b5e-9862-3feabda6213d\",\n  \"req_device_id\": \"AB00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"30277fa0-34a3-4d21-8c35-a050aff61a83\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\",\n  \"image_id\": \"123,78\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"http://localhost:8080/api/b2b/v3/retrieve_image"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Successful\",\n        \"req_session_id\": \"bd75431c-06d9-4649-9cfb-e6fdc3beb09c\",\n        \"req_device_id\": \"AB00932\",\n        \"req_transaction_id\": \"10569232\",\n        \"req_date_time\": \"2020-12-10T12:50:00.001+02:00\"\n    },\n    \"images\": [\n        {\n            \"id\": 78,\n            \"description\": \"Airtime\",\n            \"media_type\": \"image/png\",\n            \"base64\": \"iVBORw0KGgoAAAANSUhEUgAAAI4AAABsCAYAAAC8cYqBAAAACXBIWXMAAAsSAAALEgHS3X78AAAGJUlEQVR42u2dTYsUVxSG+yf0T5ifMD+hcZVdJgHdJQ7iSpIwuFDERQwiBiREkYAQEiZEUFzIgAohiDYEFJWAQYes4scuGTezmFlX+pU+4fTNrapbdbumzr31vnBouuuz6z59zv3oe+6oKIpRoK3N7PLMpgWVm57PbHNexkE81O0wntm5me3y2Q5Gu/MyH7cFh8AQoLUm4IznrouiirkDqQVnlV6G8mijChx6GqpKa2XgbPHZUDV1nrELzoTPhWpS3xFw2DdDNfI6gGaFz4NqoHUBZyOluz775YXi0AcfFx8dOVrs7e2XbserCO9dw/Y/Xmy/33576653H7Hvrv2wcB7sD+F4vd+jx08X7uWn6zcXtv/9z07t9eSeDGsq4CQTpvDg9UP+9f7D1uCI/fXq9dLA+frSlYV7OXr8sxzBKQScZPpt5BcMb4PXz0+eaQSOgAZPJYWKc2oBEvd49zxl4MDECwJId5sLDu4hUU1GqdwpCkSAQUgo+4WGgIMClHMtCxxArK8hkMvnmYGzkQw4KBD9sAUQCSNtQ5UUZiw4AoMcJx5Nh6WQUJVKszwZcOSXK4UmIOnw0AQcnA/hxFVbcHAP2gvKNfQ+BOeA5atLaJOCDAlVUmhlrbK24LgtPtmvCpyEQ1Ua4EhhlpkugDpwdF3JDXOx4GgvKKAQnB4rxT7PAvkqySGVYx0q3Mp1DDgaSjm+aahyvyPBiWyCu3UZkVtQIeDoyivqIfq8MeBA6MvR1yI4FEVwKIJDERyK4FAEh6IIDkVwKIJDERxr2tl5V7zc/vPAbW9/n+CkCszps19VDo52bd//+HOuAOUJzus3b4sPD3/aKzRiJ744lSM8eYLzybETrQv6/MVvihu3bv/PAECM5yE4xvVg+luUh8DxvjrLt1evRZ0XoZPgGBY8hoUQ5dqde78QnFzDVJeGcEdwDKus0A6qgoqQ5PN6+IzgJAROX7901/Oha4DgJAQOmuZ9CMASnITBoQhOp+CgDoRmN5rjvn6cLg0trr48I8FpCQ6Aie2jWZYhnCUC0LDBsTQ04XZCEhzD4MQMI3RpgNl4T/NwwYkdmujaED4JjkFwrHqbhSRNdkfVhwkOCsQ6NDC08giOIXBQICmAY3hglOBYNsMDowSH4BAcgkNwCA7BITgEJ2dwJN+xzpYlKfZ9iSaxvy9rKT7HvpIgW47zJa3EZ24af52ejuAkAI6kWXMTcWtwpFD15wKHLnAfOLKcgE5YKeDoPIf0OAmBI4XpZkWv8zgalCpwxDPhOsgJqBcfcT2O9ngExzg4KFhJ049X8Q4+jyMeQrxNCDjYhvcaIHqcxMFxV3wR4XMfOLLwiJvZvQ4cqUMBSjkHwUkYHIQN7UEEEhR8WR3HzakcAo6cA7C44GhpiAgOm+NsjhMcgkNwCA7BITgEh+AQHIJDcAgOwRk6OJhPRXAITmNwfPtZNMMT84YLjsUZnFYybRCcCnCszBcvM+TXMazhgoMptpa9zpNnvxMci+BAVqcBG5/+S3Ag/LIteZ5EciITHAhTgjFrEgkekaOmzppmNsU89arzSVLuhHIhE5w2cvP7VaUrMTz/m+AcNDghLTJAk1h6NoLTNTghq9JkDA3Baau63DoJpGIjOH2AEwKNO5DKPMcEJ8jTEByCs6CykXU3PBEcglMJRNnfH9z9uAgIPU7Q8IALDpcdYh3nfc8x+mmqhgcITuLgdJHyNWRogOAkDk5fXf4Y+yI4CYPT12iz27tMcBIDp4+BRtfbEJwEwdEAhfxlItaqlhQiOAmCY2EtKoJDcAgOwVns3UV9yGexsyIIjnHFLCdUpxh4WDk2Lt9i8ctYHwrbYqDM7D86+YETM+UFYJSt1Bu7MJrhRctagzNluBps8oC2Wgc4l3P7VhjBbjqFpSsDxBlqAnAmOX4zWU+8r8l2uG6GngbandkI4Izmb7JVWRO7K8t8hsOmBudcQVGBYUqDM87d61BL0XTOy3/g0OtQIVr1gQN7zmdDlTXBNSsuOGPCQ9VB4wMHtkJ4KNX0Xvcw4gVHPM8Wn9vgK8IrJXyUgiM2KTIckqAqtSVN7iqrA0eHr435Sd/w2WYlVEs25yFpHMjD6F8k8qTizs3tBQAAAABJRU5ErkJggg==\"\n        },\n        {\n            \"id\": 123,\n            \"description\": \"Pay Account Barcode\",\n            \"media_type\": \"image/png\",\n            \"base64\": \"iVBORw0KGgoAAAANSUhEUgAAAOoAAAB6CAIAAAA+kFhaAAACTElEQVR42u3a3W6DIACAUWh8/1d2FyYNKWr5qRXWc642o63gN2Xr4rquAeb0MAXMa+l/iRhjCGG7i6df5/ts8j3zo9L906OO3rFkz6NzLj/P81GXjO7o1XrGVbtn2/wcvcv59vIzcffF4gHkC/IF+SJfkC/IF+SLfEG+IF/kC/IF+YJ8kS/IF+SLfEG+IF+QL/IF+YJ8Qb7IF+QL8kW+IF+QL8gX+YJ8Qb4gX+QL8gX5Il+QL8gX5It8Qb4gX5Av8gX5gnyRL8gX5AvyRb4gX5Av8gX5gnxBvsgX5AvyBfkiX5AvyBf5gnxBviBf5AvyBfmCfJEvyBfki3xBviBfkC/yBfmCfJEvyBfkC/JFviBfkC/IF/mCfEG+/Ky4rmvvS8QYQtheJ/36p6fVnHxlTtx9sXiAOywn9/l7H3m7z5d84/NUXx5Mqef+JYeP//wtHFrndE0xM8vuHN1+us9zSE8m3/hyqtu3u5ew/PCR8y0fWtV481HPMjOPkdvdZna7SLsb234Myg8f/E58MrT/N96KxQOztFt78z66T0+0gppj7du/Lqy6xhPdn/L7a23BL1f2fJ0w8sy8WfsOvhxMH4sNj8jOw29fATdcnfzuu/sKs8zM8vb3g1muZdut96c+TcgXxCfDn2Jmls8G9OUxdz4crnu2XDQnV5zw7mte8UZXzMmIH1ukT6v0GZdvLF/zVB0+l7bpGuGH/AM/e7sXcoQnSO3f4Uv+Tll4+Cy/oeYDafjY4u3GkWcm+lcS5uV/HpAvyBfki3xBvnCdP/g03d2BU5BcAAAAAElFTkSuQmCC\"\n        }\n    ]\n}"},{"id":"a173582e-c76b-406a-9d7c-7c8055669f2f","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n  \"req_session_id\": \"7e624f4e-62ba-478b-a873-1ad5dcdbe9ad\",\n  \"req_device_id\": \"AB00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"51f1b0d0-0288-4a3f-bedc-994ac52ecf44\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//retrieve_image"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"611c94ff-67c4-4e80-9782-118b06a05d0d","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n  \"req_session_id\": \"ab53288f-b798-402c-8aa9-e76e43dbaccb\",\n  \"req_device_id\": \"AB00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"6e8618b9-5392-4c81-acd5-d201b8f819e9\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\",\n  \"image_id\": \"123,78\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//retrieve_image"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"468bea4c-8683-4ad5-8795-d721616861d1","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n  \"req_session_id\": \"50188e6a-eddb-4e02-9d3c-ecf5ff8f0afd\",\n  \"req_device_id\": \"AB00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"1ee6fcd5-a842-45f0-9ce3-509f0cf62b74\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\",\n  \"image_id\": \"123,78\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//retrieve_image"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"caf42ee1-ef50-43c7-92fd-cf0e53110448"},{"name":"pin_airtime_data","event":[{"listen":"test","script":{"id":"ea74139f-07d8-415b-a5df-e5a014406920","exec":["var jsonData = JSON.parse(responseBody);\r","\r","if (pm.response.code !== 500) {\r","  if (jsonData.meta.response_code == 0) {\r","    \r","    postman.setEnvironmentVariable(\"org_req_transaction_id\", jsonData.meta.req_transaction_id);\r","    postman.setEnvironmentVariable(\"org_tx_log_id\", jsonData.transaction_detail.tx_log_id);\r","\r","  };\r","}\r",""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"7a441e3c-a410-42cd-b974-ccab4e5cffe1","exec":[""],"type":"text/javascript","packages":{}}}],"id":"c097d544-9a4f-4cd8-8ca1-0c5405350a45","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"req_session_id\": \"c1ed3638-3c57-4ee4-b2c9-39585af3d761\",\n  \"req_device_id\": \"AB00932\",\n  \"req_store_id\": \"21398jsdf98\",\n  \"req_transaction_id\": \"d6740095-cfd2-4089-9589-f68c8fb4bd9c\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\",\n  \"api_tx_object_id\": 58,\n  \"requester_data\": {\n    \"requester_field1\": \"123456\",\n    \"requester_field2\": \"abcd\"\n  }\n}"},"url":"//pin_airtime_data","description":"<p>Airtime and Data pins also known as voucher sales are done through the pin_airtime_data method.</p><p></p>\n<p>To better describe prepaid_airtime_data, a number of example calls are shown with their respective responses. The calls are for different utility supplier products. The requester needs to send the standard requester detail as well as the unique api_tx_object_id and optional requester_data in the post request.</p><p></p>\n<p>The voucher detail of the response typically include the fields:</p><p></p>\n<ul>\n<li>provider</li>\n<li>description</li>\n<li>external_reference</li>\n<li>serial_number</li>\n<li>pin_number</li>\n<li>expiry_date</li>\n<li>instructions<p></p></li>\n</ul>\n<p>The tx_status will always be Delivered in the response.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["pin_airtime_data"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"668082c3-9016-4f04-9065-90fcc31e439e","name":"200: Successful transaction","originalRequest":{"method":"POST","header":[{"description":"Not needed. Only included for the Postman mock server setup.","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"req_session_id\": \"948b30e4-86c4-4981-ac51-04b4392d2e0a\",\r\n  \"req_device_id\": \"AB00932\",\r\n  \"req_store_id\": \"21398jsdf98\",\r\n  \"req_transaction_id\": \"21a4371e-d432-427a-9bb1-f2161393ed11\",\r\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n  \"req_platform\": \"POS\",\r\n  \"api_tx_object_id\": 58,\r\n  \"requester_data\": {\r\n    \"requester_field1\": \"123456\",\r\n    \"requester_field2\": \"abcd\"\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://extapi.finclude.co.za/api/v2/pin_airtime_data","description":"Airtime and Data pins also known as voucher sales are done through the pin_airtime_data method.<p>\n\nTo better describe prepaid_airtime_data, a number of example calls are shown with their respective responses. The calls are for different utility supplier products. The requester needs to send the standard requester detail as well as the unique api_tx_object_id and optional requester_data in the post request.<p>\n\nThe voucher detail of the response typically include the fields:<p>\n\n+ provider\n+ description\n+ external_reference\n+ serial_number\n+ pin_number\n+ expiry_date\n+ instructions<p>\n\nThe tx_status will always be Delivered in the response."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"bd75431c-06d9-4649-9cfb-e6fdc3beb09c\",\n        \"req_device_id\": \"AB00932\",\n        \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\n        \"req_date_time\": \"2020-12-10T12:50:00.001Z\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2020-12-10T12:53:00.001Z\",\n        \"tx_log_id\": 142890,\n        \"tx_status\": \"Delivered\"\n    },\n    \"voucher_detail\": {\n        \"provider\": \"BeMobile\",\n        \"description\": \"BEMOBILE P20\",\n        \"external_reference\": \"16746333\",\n        \"serial_number\": \"20792248\",\n        \"pin_number\": \"2027993495970940\",\n        \"expiry_date\": \"2021-03-15T00:00:00.00Z\",\n        \"instructions\": [\n            \"Dail *135*mobile number*pin number #\",\n            \"to recharged\"\n        ]\n    },\n    \"transaction_value\": {\n        \"country_code\": \"BW\",\n        \"currency\": \"Pula\",\n        \"value_type\": \"fixed\",\n        \"denomination\": \"smallestSubunit\",\n        \"transaction_value\": 2000,\n        \"vat_inclusive\": \"Incl 12% VAT\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"0ac903b1-878f-47d2-8dfc-02d1b2f01499","name":"400 Error: Bad request","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"id_token\": \"{{id_token}}\",\r\n    \"req_session_id\": \"a0ac1948-9874-4f11-b9f7-71ebc89039c0\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": {{api_tx_object_id}},\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}\r\n\r\n","options":{"raw":{"language":"json"}}},"url":"//pin_airtime_data","description":"Airtime and Data pins also known as voucher sales are done through the pin_airtime_data method.<p>\n\nTo better describe prepaid_airtime_data, a number of example calls are shown with their respective responses. The calls are for different utility supplier products. The requester needs to send the standard requester detail as well as the unique api_tx_object_id and optional requester_data in the post request.<p>\n\nThe voucher detail of the response typically include the fields:<p>\n\n+ provider\n+ description\n+ external_reference\n+ serial_number\n+ pin_number\n+ expiry_date\n+ instructions<p>\n\nThe tx_status will always be Delivered in the response."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"2046b2d6-e734-490f-97f1-415e22868b3b","name":"401 Error: Unauthorised","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"id_token\": \"{{id_token}}\",\r\n    \"req_session_id\": \"705addd2-cfe2-4076-aad7-aaf1528ece3f\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": {{api_tx_object_id}},\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}\r\n\r\n","options":{"raw":{"language":"json"}}},"url":"//pin_airtime_data","description":"Airtime and Data pins also known as voucher sales are done through the pin_airtime_data method.<p>\n\nTo better describe prepaid_airtime_data, a number of example calls are shown with their respective responses. The calls are for different utility supplier products. The requester needs to send the standard requester detail as well as the unique api_tx_object_id and optional requester_data in the post request.<p>\n\nThe voucher detail of the response typically include the fields:<p>\n\n+ provider\n+ description\n+ external_reference\n+ serial_number\n+ pin_number\n+ expiry_date\n+ instructions<p>\n\nThe tx_status will always be Delivered in the response."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid authorization token.\"\n    }\n}"},{"id":"ea751781-0b1e-4c56-a2b1-a390e60b0a24","name":"500 Error: Internal server error","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"id_token\": \"{{id_token}}\",\r\n    \"req_session_id\": \"4f90afc1-9d3b-4192-8752-a7b44c4e0285\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": {{api_tx_object_id}},\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}\r\n\r\n","options":{"raw":{"language":"json"}}},"url":"//pin_airtime_data","description":"Airtime and Data pins also known as voucher sales are done through the pin_airtime_data method.<p>\n\nTo better describe prepaid_airtime_data, a number of example calls are shown with their respective responses. The calls are for different utility supplier products. The requester needs to send the standard requester detail as well as the unique api_tx_object_id and optional requester_data in the post request.<p>\n\nThe voucher detail of the response typically include the fields:<p>\n\n+ provider\n+ description\n+ external_reference\n+ serial_number\n+ pin_number\n+ expiry_date\n+ instructions<p>\n\nThe tx_status will always be Delivered in the response."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experience an error.\"\n    }\n}"}],"_postman_id":"c097d544-9a4f-4cd8-8ca1-0c5405350a45"},{"name":"pinless_airtime_data","event":[{"listen":"test","script":{"id":"022f0bc3-7077-4e95-877f-cc55411624bc","exec":["var jsonData = JSON.parse(responseBody);\r","\r","if (pm.response.code !== 500) {\r","  if (jsonData.meta.response_code == 0) {\r","    \r","    postman.setEnvironmentVariable(\"org_req_transaction_id\", jsonData.meta.req_transaction_id);\r","    postman.setEnvironmentVariable(\"org_tx_log_id\", jsonData.transaction_detail.tx_log_id);\r","\r","  };\r","}\r",""],"type":"text/javascript","packages":{}}}],"id":"98b5bd9c-12eb-4726-bf38-bf9d5c0e0e1a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_platform\": \"POS\",\n    \"req_store_id\": \"\",\n    \"req_date_time\": \"2024-02-26T09:43:40.0091632+02:00\",\n    \"req_device_id\": \"0\",\n    \"req_transaction_id\": \"da1e2006-8e77-448a-9b1b-564cc86642a6\",\n    \"req_session_id\": \"14675d73-655e-4f35-a959-00f3880cb07b\",\n    \"api_tx_object_id\": 668,\n    \"parameters\": {\n        \"msisdn\": \"72216623\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//pinless_airtime_data","description":"<p>Pinless irtime and Data are done through the pinless_airtime_data method. The response will not contain any tokens</p><p></p>\n<p>To better describe pinless_airtime_data, a number of example calls are shown with their respective responses. The calls are for different utility supplier products. The requester needs to send the standard requester detail as well as the unique api_tx_object_id and optional requester_data in the post request.</p><p></p>\n<p>The voucher detail of the response typically include the fields:</p><p></p>\n<p>The tx_status will always be Delivered in the response.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["pinless_airtime_data"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"4edb1e4f-6269-4f51-b9cb-c62f47075c91","name":"200: Successful transaction","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_platform\": \"POS\",\n    \"req_store_id\": \"\",\n    \"req_date_time\": \"2024-02-26T09:43:40.0091632+02:00\",\n    \"req_device_id\": \"0\",\n    \"req_transaction_id\": \"78296544-25b3-4ba9-9bd0-dceb60f29e44\",\n    \"req_session_id\": \"2ee98512-aea7-4eb3-9336-2af860f3eff5\",\n    \"api_tx_object_id\": 668,\n    \"parameters\": {\n        \"msisdn\": \"72216623\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://devlb.finclude.co.za/api/b2b/v3/pinless_airtime_data"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"d4ff0bdf-be20-4cec-aafb-8d6ec716f510\",\n        \"req_device_id\": \"0\",\n        \"req_store_id\": \"\",\n        \"req_transaction_id\": \"4c1568fe-243c-4596-a9fd-4e5f13b038ec\",\n        \"req_date_time\": \"2024-02-26T09:43:40.0091632+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2024-08-13T11:07:57.223+02:00\",\n        \"tx_log_id\": 64335026,\n        \"tx_status\": \"DELIVERED\"\n    },\n    \"previous_api_tx_object_id\": \"0\",\n    \"next_api_tx_object_id\": \"0\",\n    \"next_api_tx_object\": {},\n    \"voucher_detail\": {\n        \"provider\": \"ORANGE\",\n        \"description\": \"ORANGE Pinless Airtime\",\n        \"external_reference\": \"DL/05/000000015\",\n        \"serial_number\": \"DL/05/000000015\",\n        \"msisdn\": \"72216623\"\n    },\n    \"transaction_value\": {\n        \"country_code\": \"BW\",\n        \"currency\": \"BWP\",\n        \"value_type\": \"variable\",\n        \"denomination\": \"smallestSubunit\",\n        \"transaction_value\": 1000\n    },\n    \"instructions\": [\n        \"Orange Customer Helpline\",\n        \"Call 123 24*7 (toll free) from any Orange mobile\"\n    ],\n    \"print_output\": [\n        {\n            \"key\": \"MSISDN\",\n            \"value\": \"72216623\"\n        },\n        {\n            \"key\": \"Trans ID\",\n            \"value\": \"64335026\"\n        },\n        {\n            \"key\": \"Provider\",\n            \"value\": \"ORANGE\"\n        },\n        {\n            \"key\": \"Product\",\n            \"value\": \"ORANGE Pinless Airtime\"\n        },\n        {\n            \"key\": \"Receipt#\",\n            \"value\": \"DL/05/000000015\"\n        },\n        {\n            \"key\": \"Serial#\",\n            \"value\": \"DL/05/000000015\"\n        }\n    ],\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"8a3bc346-d61d-483a-b6ff-38f739227264","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_platform\": \"POS\",\n    \"req_store_id\": \"\",\n    \"req_date_time\": \"2024-02-26T09:43:40.0091632+02:00\",\n    \"req_device_id\": \"0\",\n    \"req_transaction_id\": \"04e0728f-c5ae-4a12-8e55-52464d813f54\",\n    \"req_session_id\": \"91061c99-e6fe-4706-bdb5-45e02c28637b\",\n    \"api_tx_object_id\": 668,\n    \"parameters\": {\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//pinless_airtime_data"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"12f2cd5f-465a-45dc-aee8-692eecf71c5a","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"id_token\": \"{{id_token}}\",\n    \"req_session_id\": \"4125c7a9-a61c-4f71-bbc9-4cd148f7e858\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"a5083e6e-fe03-4a6f-b6f1-f5fb8a3fbef8\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 664,\n    \"parameters\": {\n        \"msisdn\": \"0973123454\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//pinless_airtime_data"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"746f3f47-4e4a-4956-af00-de9a9f77e7fd","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"id_token\": \"{{id_token}}\",\n    \"req_session_id\": \"93469366-37bd-4430-b09e-9ee725ee3ede\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"00b94d4d-9b15-4f15-bbdf-0a28fbc61e94\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 664,\n    \"parameters\": {\n        \"msisdn\": \"0973123454\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//pinless_airtime_data"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"98b5bd9c-12eb-4726-bf38-bf9d5c0e0e1a"},{"name":"account_verification","id":"a28d6bc8-10ea-4ace-875f-bf015885555e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"bf000c55-4aeb-4875-b334-f49ab2fd6f70\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"7951a06b-9d70-453c-af01-93f84eb6851f\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 54,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//account_verification","description":"<p>This can be used to fetch relevant information about any account (mobile wallet, bank account, gift cards, etc). This is typically used in conjunction with /make_payment and /receive_payment.</p><p></p>\n<p>The transaction can have only one of two responses: </p>\n<ul>\n<li>Success: the lookup was processed and information for the account could be found. </li>\n<li>Failed. If the transaction failed because information for the account could not be found, or the account is inactive/blocked, this will be indicated in the structured error message which will contain an error_code and an error_description.</li>\n</ul>\n<blockquote>\n<p><strong>Note:</strong>    account_identification =&gt; This defines the \"account number\". Depending on the product, the \"account_number\" can be a bank account number, a msisdn, a gift card number, etc.</p>\n</blockquote>\n<p>  Typically the provider test environments have a very limited set of test accounts available. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which mprovider to call, based on the account number received.\n  For this reason the Finclude B2B API has mock test numbers available.</p>\n  <p>More information regarding test account numbers that are available can be found here: <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["account_verification"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"fe58f7cd-3692-4d99-96cf-f6db5fd4c358","name":"200: Successful payment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"dbb3b930-4d9c-44f8-aa00-014b110c9005\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_transaction_id\": \"bb7b0ec7-ead7-4eb8-b06f-93b71911cf54\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 54,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://devlb.finclude.co.za/api/b2b/v3/account_verification"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"8a801fab-8c39-4a46-9a38-f6c2a2356669\",\n        \"req_device_id\": \"XXX1234\",\n        \"req_transaction_id\": \"e0fe417f-4c3d-4e93-b08a-fb9676c09fdc\",\n        \"req_platform\": \"POS\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2021-01-12T09:36:57.005+02:00\",\n        \"tx_log_id\": 1677131,\n        \"tx_status\": \"Delivered\"\n    },\n    \"account_detail\": {\n        \"account_identification\": \"63003715670\",\n        \"account_holder_name\": \"Joe Soap\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}\n"},{"id":"77878d99-e77f-4eac-bbe3-be6a94b9b248","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"fc2623b6-39fa-4942-bcea-1947a8716169\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"f2ef7662-fc72-437b-b862-033ede079509\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 54,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//account_verification"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"400\",\n    \"response_message\": \"Bad Request\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"400008\",\n    \"error\": \"invalid_request\",\n    \"error_description\": \"Missing parameter value\"\n  }\n}"},{"id":"65bd2152-3df8-4ae5-a235-eb44c79f6a63","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"2b76dd8e-3640-470d-a29f-15c6190a5e52\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"d917798f-b7fc-416e-b65d-1a39bcabc615\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 54,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//account_verification"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"401\",\n    \"response_message\": \"Authorization failed\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"401005\",\n    \"error\": \"unauthorized_client\",\n    \"error_description\": \"Invalid 'authorization token'\"\n  }\n}"},{"id":"14b3d2cd-494d-43d0-9a0f-bce9b646cad1","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"d1e414b4-026c-44db-987c-0575bcc491aa\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"d5b4ba38-8ad3-49b9-9978-96a60fe5edf5\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 54,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//account_verification"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"500\",\n    \"response_message\": \"Internal Server Error\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"500000\",\n    \"error\": \"internal_server\",\n    \"error_description\": \"The server has experienced an error.\"\n  }\n}"}],"_postman_id":"a28d6bc8-10ea-4ace-875f-bf015885555e"},{"name":"make_payment","id":"56b67b13-1956-4ee6-a007-208111ccc78b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"935ec35a-e243-4aa0-be2b-7ebbd57e6928\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"5581db62-1551-442f-8553-f7f0803053d7\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 50,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,\n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//make_payment","description":"<p>This can be used to deposit/transfer funds in an account (mobile wallet, bank account, gift cards, etc).</p><p></p>\n<p>The transaction can have only one of two responses: </p>\n<ul>\n<li>Success: the deposit/transfer was processed and information for the account could be found. </li>\n<li>Failed. If the transaction it will be indicated in the structured error message which will contain an error_code and an error_description.</li>\n</ul>\n<blockquote>\n<p><strong>Note:</strong>    account_identification =&gt; This defines the \"account number\". Depending on the product, the \"account_number\" can be a bank account number, a msisdn, a gift card number, etc.</p>\n</blockquote>\n<p>  Typically the provider test environments have a very limited set of test accounts available. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which provider to call, based on the account number received.\n  For this reason the Finclude B2B API has mock test numbers available.</p>\n  <p>More information regarding test account numbers that are available can be found here: <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["make_payment"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"7b63e109-25ad-49c2-b4d8-881bdd5893c1","name":"200: Successful deposit/transfer","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"9960026e-3928-466c-897f-53a913d2dac6\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"3c6f9e0a-eaa2-4380-8fd8-c0532f8eca39\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 50,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,\n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//make_payment"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"8a801fab-8c39-4a46-9a38-f6c2a2356669\",\n        \"req_device_id\": \"XXX1234\",\n        \"req_store_id\": \"AB12345\",        \n        \"req_transaction_id\": \"e0fe417f-4c3d-4e93-b08a-fb9676c09fdc\",\n        \"req_platform\": \"POS\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2021-01-12T09:36:57.005+02:00\",\n        \"tx_log_id\": 1677131,\n        \"tx_status\": \"Delivered\"\n    },\n    \"payment_detail\": {\n        \"value_store\": \"FNB\",\n        \"value_store_id\": 541,\n        \"value_store_ref\": \"1415196800\",\n        \"account_identification\": \"46733123454\"\n    },\n    \"transaction_value\": {\n        \"currency\": \"ZAR\",\n        \"tendered_value\": 2000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"19c431a9-32bb-46cc-8fda-7dc33cf25833","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"063d0642-c1c4-4fdd-aa3b-b7255f28bc6b\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"e3347952-5449-4d3b-9140-f02f8ef4e2bc\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 50,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,\n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//make_payment"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"400\",\n    \"response_message\": \"Bad Request\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"400008\",\n    \"error\": \"invalid_request\",\n    \"error_description\": \"Missing parameter value\"\n  }\n}"},{"id":"b02d37d9-fa04-4779-afc9-3e0daeed52c4","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"1d840845-5aca-4e89-b776-70cc5bfc840a\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"4fbbbd58-25cf-4a38-9b20-05d99099a6e1\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 50,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,\n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//make_payment"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"401\",\n    \"response_message\": \"Authorization failed\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"401005\",\n    \"error\": \"unauthorized_client\",\n    \"error_description\": \"Invalid 'authorization token'\"\n  }\n}"},{"id":"8648dc46-b395-4317-822f-0436f51b5e72","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"56f2e479-9d47-496b-8def-39644ff80bf6\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"b8d66fd0-7dd9-48b6-bb83-b7a7069cfa25\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 50,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,\n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//make_payment"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"500\",\n    \"response_message\": \"Internal Server Error\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"500000\",\n    \"error\": \"internal_server\",\n    \"error_description\": \"The server has experienced an error.\"\n  }\n}"}],"_postman_id":"56b67b13-1956-4ee6-a007-208111ccc78b"},{"name":"receive_payment","id":"d7ad566b-c7d3-498b-84f7-1b6c59e5eb85","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"49d8731c-cc05-445f-ad4b-092b97807659\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"12892847-cb14-488e-b80d-e24ab65454e9\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 52,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,        \n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//receive_payment","description":"<p>This can be used to withdraw/transfer funds from an account (mobile wallet, bank account, gift cards, etc).</p><p></p>\n<p>The transaction can have only one of two responses: </p>\n<ul>\n<li>Success: the withdrawel/transfer was processed and was successful. </li>\n<li>Failed. If the transaction it will be indicated in the structured error message which will contain an error_code and an error_description.</li>\n</ul>\n<blockquote>\n<p><strong>Note:</strong>    account_identification =&gt; This defines the \"account number\". Depending on the product, the \"account_number\" can be a bank account number, a msisdn, a gift card number, etc.</p>\n</blockquote>\n<p>  Typically the provider test environments have a very limited set of test accounts available. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which provider to call, based on the account number received.\n  For this reason the Finclude B2B API has mock test numbers available.</p>\n  <p>More information regarding test account numbers that are available can be found here: <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["receive_payment"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"0992a829-11f8-4599-9aea-ec0078f4034e","name":"200: Successful withdrawel/transfer","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"b2193d51-8b7e-441e-b6ef-dab30dc0cf07\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",    \n    \"req_transaction_id\": \"e668a581-3eeb-47f1-85bf-ecc540bcbe7f\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 52,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,        \n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//receive_payment"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"8a801fab-8c39-4a46-9a38-f6c2a2356669\",\n        \"req_device_id\": \"XXX1234\",\n        \"req_store_id\": \"AB12345\",        \n        \"req_transaction_id\": \"e0fe417f-4c3d-4e93-b08a-fb9676c09fdc\",\n        \"req_platform\": \"POS\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2021-01-12T09:36:57.005+02:00\",\n        \"tx_log_id\": 1677131,\n        \"tx_status\": \"Delivered\"\n    },\n    \"payment_detail\": {\n        \"value_store\": \"FNB\",\n        \"value_store_id\": 541,\n        \"value_store_ref\": \"1415196800\",\n        \"account_identification\": \"46733123454\"\n    },\n    \"transaction_value\": {\n        \"currency\": \"ZAR\",\n        \"tendered_value\": 2000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"d8c0c1a9-8404-4073-bc18-340eb742e053","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"605c64fa-a1bd-4b19-ae46-b853283068ce\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"851b60af-9547-47dc-8c61-b68c9653e1a1\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 52,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,        \n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//receive_payment"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"400\",\n    \"response_message\": \"Bad Request\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"400008\",\n    \"error\": \"invalid_request\",\n    \"error_description\": \"Missing parameter value\"\n  }\n}"},{"id":"94e338ab-52a4-4c72-b50d-c02436250a30","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"7f7c54ad-dca5-47ca-93a8-eddbe2d9da12\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"fc2696e4-2bc6-499d-bac1-6c434eba99dd\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 52,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,        \n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//receive_payment"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"401\",\n    \"response_message\": \"Authorization failed\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"401005\",\n    \"error\": \"unauthorized_client\",\n    \"error_description\": \"Invalid 'authorization token'\"\n  }\n}"},{"id":"e17bf630-5461-42be-83a9-880fb93a6561","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"cca35dcb-e285-409d-bc16-b9bc4cd9dbc0\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"AB12345\",\n    \"req_transaction_id\": \"47d36fcd-e950-46ab-ba86-0fe601701257\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 52,\n    \"parameters\": {\n        \"account_holder_name\": \"Joe Soap\",\n        \"account_identification\": \"63003715670\",\n        \"account_type\": \"cheque\",\n        \"account_bank\": \"FNB\",\n        \"account_name\": \"Private Client Cheque\",\n        \"value\": 2000,        \n        \"transaction_reference\": \"sdfhsdfsfdsdf\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//receive_payment"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"500\",\n    \"response_message\": \"Internal Server Error\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\",\n    \"req_store_id\": \"AB12345\"\n  },\n  \"error\": {\n    \"error_code\": \"500000\",\n    \"error\": \"internal_server\",\n    \"error_description\": \"The server has experienced an error.\"\n  }\n}"}],"_postman_id":"d7ad566b-c7d3-498b-84f7-1b6c59e5eb85"},{"name":"mobile_pay","event":[{"listen":"test","script":{"id":"5fb4cebd-c2ac-4fdd-a76e-c9384c435c06","exec":["var jsonData = JSON.parse(responseBody);\r","\r","if (pm.response.code !== 500) {\r","  if (jsonData.meta.response_code == 0) {\r","    \r","    postman.setEnvironmentVariable(\"org_req_transaction_id\", jsonData.meta.req_transaction_id);\r","    postman.setEnvironmentVariable(\"org_tx_log_id\", jsonData.transaction_detail.tx_log_id);\r","\r","  };\r","}\r",""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"0f120fbc-20a4-47a4-ae27-8f97c1414145","exec":[""],"type":"text/javascript","packages":{}}}],"id":"4b7555fc-a5ae-4fca-a03b-a2af29e32195","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"e2c8bfaf-90c9-42cd-96a3-feb3157649ab\",\n    \"req_device_id\": \"XXX1234\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"3b788cde-9b37-4aa8-b99f-d887fc4c2b7d\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 3,\n    \"parameters\": {\n        \"msisdn\": \"0963123454\",\n        \"transaction_value\": 10000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},"url":"//mobile_pay","description":"<p>The msisdn number and sale value needs to form part of the POST request. The msisdn must be sent without the country code included.</p>\n<p>The transaction can have only one of two responses:</p>\n<ul>\n<li>Success: the payment was processed and no issues encountered.</li>\n<li>Failed. If the transaction failed because the owner of the msisdn has rejected the transaction, this will be indicated in the structured error message which will contain an error_code of 200027 and an error_description of 'Payment approval rejected'.</li>\n</ul>\n<blockquote>\n<p><strong>Note:</strong> msisdn =&gt; The mobile number</p>\n</blockquote>\n<p>Typically the mobile money provider test environments have a very limited set of test numbers (msisdn) available and often enforces the currency that has to be used. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which mobile money provider to call, based on the msisdn sent through.<br />For this reason the Finclude B2B API has mock test numbers available. Each of these can simply be prefixed with the provider specific msisdn prefixes.</p>\n<p>More information regarding the test msisdn number that are available, the lenth of the msisdn and the prefixes used for each county can be found here:<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["mobile_pay"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"72e9071e-9196-4acf-8e1a-e0b178616780","name":"200: Successful payment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"Not needed. Only included for the Postman mock server setup.","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"811ed45f-f8fa-48fd-8f39-65c45f891c6d\",\r\n    \"req_device_id\": \"XXX1234\",\r\n    \"req_store_id\": \"store001\",\r\n    \"req_transaction_id\": \"714effa6-87f5-41d0-90ef-0ab9c5857a89\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 3,\r\n    \"parameters\": {\r\n        \"msisdn\": \"0963123454\",\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://extapi.finclude.co.za/api/v2/mobile_pay","description":"The msisdn number and sale value needs to form part of the POST request. The msisdn must be sent without the country code included.\n\nThe transaction can have only one of two responses:\n\n*   Success: the payment was processed and no issues encountered.\n*   Failed. If the transaction failed because the owner of the msisdn has rejected the transaction, this will be indicated in the structured error message which will contain an error_code of 200027 and an error_description of 'Payment approval rejected'.\n    \n\n> **Note:** msisdn => The mobile number\n\nTypically the mobile money provider test environments have a very limited set of test numbers (msisdn) available and often enforces the currency that has to be used. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which mobile money provider to call, based on the msisdn sent through.  \nFor this reason the Finclude B2B API has mock test numbers available. Each of these can simply be prefixed with the provider specific msisdn prefixes.\n\n<p>More information regarding the test msisdn number that are available, the lenth of the msisdn and the prefixes used for each county can be found here:<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"8a801fab-8c39-4a46-9a38-f6c2a2356669\",\n        \"req_device_id\": \"928-123-765\",\n        \"req_transaction_id\": \"78245234\",\n        \"req_platform\": \"WEB\",\n        \"req_date_time\": \"2021-01-12T09:36:55.012+02:00\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2021-01-12T09:36:57.005+02:00\",\n        \"tx_log_id\": 1677131,\n        \"tx_status\": \"Delivered\"\n    },\n    \"payment_detail\": {\n        \"value_store\": \"MTN MoMo\",\n        \"value_store_id\": 998,\n        \"value_store_ref\": \"1415196800\",\n        \"msisdn\": \"46733123454\"\n    },\n    \"transaction_value\": {\n        \"currency\": \"EUR\",\n        \"tendered_value\": 10000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"f7abaf71-a2c5-4401-af06-a3b9721908d3","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"6d2d22fb-a3ba-4b15-905a-b1d40b14344b\",\r\n    \"req_device_id\": \"XXX1234\",\r\n    \"req_store_id\": \"store001\",\r\n    \"req_transaction_id\": \"8c99a411-3476-4c41-af6a-e11171d01009\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 3,\r\n    \"parameters\": {\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//mobile_pay","description":"The msisdn number and sale value needs to form part of the POST request. The msisdn must be sent without the country code included.\n\nThe transaction can have only one of two responses:\n\n*   Success: the payment was processed and no issues encountered.\n*   Failed. If the transaction failed because the owner of the msisdn has rejected the transaction, this will be indicated in the structured error message which will contain an error_code of 200027 and an error_description of 'Payment approval rejected'.\n    \n\n> **Note:** msisdn => The mobile number\n\nTypically the mobile money provider test environments have a very limited set of test numbers (msisdn) available and often enforces the currency that has to be used. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which mobile money provider to call, based on the msisdn sent through.  \nFor this reason the Finclude B2B API has mock test numbers available. Each of these can simply be prefixed with the provider specific msisdn prefixes.\n\n<p>More information regarding the test msisdn number that are available, the lenth of the msisdn and the prefixes used for each county can be found here:<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"d6ee6d4b-6122-4fc6-b8b7-2565cc574483","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"e0e65b87-7ecc-4d80-a073-87f3b8e0f7fd\",\r\n    \"req_device_id\": \"XXX1234\",\r\n    \"req_store_id\": \"store001\",\r\n    \"req_transaction_id\": \"60087821-26c0-4af8-9978-cdd589ff48c2\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 3,\r\n    \"parameters\": {\r\n        \"msisdn\": \"0963123454\",\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//mobile_pay","description":"The msisdn number and sale value needs to form part of the POST request. The msisdn must be sent without the country code included.\n\nThe transaction can have only one of two responses:\n\n*   Success: the payment was processed and no issues encountered.\n*   Failed. If the transaction failed because the owner of the msisdn has rejected the transaction, this will be indicated in the structured error message which will contain an error_code of 200027 and an error_description of 'Payment approval rejected'.\n    \n\n> **Note:** msisdn => The mobile number\n\nTypically the mobile money provider test environments have a very limited set of test numbers (msisdn) available and often enforces the currency that has to be used. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which mobile money provider to call, based on the msisdn sent through.  \nFor this reason the Finclude B2B API has mock test numbers available. Each of these can simply be prefixed with the provider specific msisdn prefixes.\n\n<p>More information regarding the test msisdn number that are available, the lenth of the msisdn and the prefixes used for each county can be found here:<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"e09829a4-585c-49fb-92c0-6dd2c5eab9f0","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"dab13bd9-be9c-4aac-9282-62f1b636000a\",\r\n    \"req_device_id\": \"XXX1234\",\r\n    \"req_store_id\": \"store001\",\r\n    \"req_transaction_id\": \"76d5784d-feb2-4b0c-b44b-0c9a181cd516\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 3,\r\n    \"parameters\": {\r\n        \"msisdn\": \"0963123454\",\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//mobile_pay","description":"The msisdn number and sale value needs to form part of the POST request. The msisdn must be sent without the country code included.\n\nThe transaction can have only one of two responses:\n\n*   Success: the payment was processed and no issues encountered.\n*   Failed. If the transaction failed because the owner of the msisdn has rejected the transaction, this will be indicated in the structured error message which will contain an error_code of 200027 and an error_description of 'Payment approval rejected'.\n    \n\n> **Note:** msisdn => The mobile number\n\nTypically the mobile money provider test environments have a very limited set of test numbers (msisdn) available and often enforces the currency that has to be used. This is obviously not ideal to test the Finclude B2B API since the Finclude B2B API determines which mobile money provider to call, based on the msisdn sent through.  \nFor this reason the Finclude B2B API has mock test numbers available. Each of these can simply be prefixed with the provider specific msisdn prefixes.\n\n<p>More information regarding the test msisdn number that are available, the lenth of the msisdn and the prefixes used for each county can be found here:<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"4b7555fc-a5ae-4fca-a03b-a2af29e32195"},{"name":"prepaid_utility_lookup","event":[{"listen":"test","script":{"id":"59b77b32-28ba-4125-a4be-59fc7daedfc6","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"0382a72e-88f5-4cfa-ad8c-6c7fed3d2b6b","exec":[""],"type":"text/javascript","packages":{}}}],"id":"f18c8ddf-badf-4350-ab43-a5049529da0e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"019a1090-3e3c-4164-86bd-dc7926c66e91\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"ba833053-c83b-414f-97f5-f39916602688\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 282,\n    \"parameters\": {\n        \"meter_number\": \"04040404040\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},"url":"//prepaid_utility_lookup","description":"<p>Most utilities sales works in a two-step manner in which confirmation of the meter owner is needed before the sale is done. The typical api calls used are depicted below.</p><p></p>\n<p><img src=\"https://drive.google.com/uc?export=view&amp;id=1rMesddnmqTDqjsi1IaQl0AdliBW0mRt-\" alt=\"Diagram for basic transaction flow\" width=\"auto\" /></p><p></p>\n<blockquote>\n<p><strong>Note:</strong> \nEven though it might not be forced to perform a prepaid_utility_lookup before a sale is done at all utility providers, it is highly recommended to do so.</p><p></p>\n</blockquote>\n<p>The parameter sale_apk_tx_object is returned during the lookup to assist in the two step process.</p><p></p>\n<p>The possibly utility_type is</p>\n<ul>\n<li>Electricity</li>\n<li>Water</li>\n<li>Gas</li>\n</ul>\n<p>The utility meter number needs to be provided in the request.</p><p></p>\n<p>The details of the meter number holder are then returned. Typically so that the customer can confirm the correct meter number were entered.</p><p></p>\n<p>NOTE: For meter numbers that can be used for testing see the /prepaid_utility_sale section</p><p></p>\n<p>The response has a generic structure, therefore some fields may return empty as the specific utilities provider might not require the detail to show.</p><p></p>\n<p>Additional examples of possible responses has been provided below together with the calls that can be done against the mock server to get these responses.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["prepaid_utility_lookup"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"1a7eb207-da3a-4e87-b67d-d45d7b20570c","name":"200: Successful lookup","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"9c551186-79ff-4d5b-b1a6-08cebcc44998\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"cec17eb5-afff-4b2f-879c-7b1425e9e9c7\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 282,\n    \"parameters\": {\n        \"meter_number\": \"04040404040\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/b2b/v3/prepaid_utility_lookup","description":"Most utilities sales works in a two-step manner in which confirmation of the meter owner is needed before the sale is done. The typical api calls used are depicted below.<p>\n\n<img src=\"https://drive.google.com/uc?export=view&id=1rMesddnmqTDqjsi1IaQl0AdliBW0mRt-\" alt=\"Diagram for basic transaction flow\" width=\"auto\"/><p>\n\n> **Note:** \nEven though it might not be forced to perform a prepaid_utility_lookup before a sale is done at all utility providers, it is highly recommended to do so.<p>\n\nThe parameter sale_apk_tx_object is returned during the lookup to assist in the two step process.<p>\n\nThe possibly utility_type is\n+ Electricity\n+ Water\n+ Gas\n\nThe utility meter number needs to be provided in the request.<p>\n\nThe details of the meter number holder are then returned. Typically so that the customer can confirm the correct meter number were entered.<p>\n\nNOTE: For meter numbers that can be used for testing see the /prepaid_utility_sale section<p>\n\nThe response has a generic structure, therefore some fields may return empty as the specific utilities provider might not require the detail to show.<p>\n\nAdditional examples of possible responses has been provided below together with the calls that can be done against the mock server to get these responses."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"fe6d3e2d-0f8b-4e5d-a843-9ffa162a1f12\",\n        \"req_device_id\": \"AB00932\",\n        \"req_store_id\": \"21398jsdf98\",\n        \"req_transaction_id\": \"e73670ab-a31e-44fb-ae9b-1a886e0e2992\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2024-01-04T18:07:05.550+02:00\",\n        \"tx_log_id\": 59017180,\n        \"tx_status\": \"DELIVERED\"\n    },\n    \"voucher_detail\": {\n        \"provider\": \"BPC\",\n        \"description\": \"\",\n        \"external_reference\": \"\",\n        \"utility_type\": \"Electricity\",\n        \"munic\": \"\",\n        \"SGC\": \"\",\n        \"meter_number\": \"04040404040\",\n        \"account_holder\": \"Default Test\",\n        \"account_type\": \"\",\n        \"address\": \"1 TEST BLOCK\",\n        \"location_ref\": \"\",\n        \"can_vend\": true,\n        \"min_vend\": 0,\n        \"max_vend\": 100000,\n        \"denomination\": \"smallestSubunit\",\n        \"outstanding\": 0\n    },\n    \"sale_api_tx_object_id\": \"283\",\n    \"previous_api_tx_object_id\": \"0\",\n    \"next_api_tx_object_id\": \"283\",\n    \"next_api_tx_object\": {\n        \"api_tx_object_id\": 283,\n        \"previous_api_tx_object_id\": 282,\n        \"next_api_tx_object_id\": 0,\n        \"category\": \"Electricity\",\n        \"provider\": \"Botswana Power Corporation (BPC)\",\n        \"description\": \"BPC Electricity Prepaid Sale\",\n        \"image_id\": 83,\n        \"method_name\": \"prepaid_utility_sale\",\n        \"country\": \"Botswana\",\n        \"country_code\": \"BW\",\n        \"currency\": \"BWP\",\n        \"denomination\": \"smallestSubunit\",\n        \"value_type\": \"variable\",\n        \"transaction_value\": 0,\n        \"menu_group\": \"Sale\",\n        \"parent_menu\": 15,\n        \"menu_parameters\": [\n            {\n                \"param_key\": \"METER_NUMBER\",\n                \"param_display_text\": \"Meter Number\",\n                \"param_sequence\": 3,\n                \"param_type\": \"NUMERIC\",\n                \"param_is_currency\": false,\n                \"param_min_value\": 11,\n                \"param_valid_expression\": \"^\\\\d{11}$\"\n            },\n            {\n                \"param_key\": \"SALE_VALUE\",\n                \"param_display_text\": \"Value (BWP)\",\n                \"param_sequence\": 4,\n                \"param_type\": \"NUMERIC\",\n                \"param_is_currency\": true,\n                \"param_min_value\": 0,\n                \"param_valid_expression\": \"^\\\\d+(\\\\.\\\\d{1,2})?$\"\n            }\n        ],\n        \"api_call_injection\": \"\\\"parameters\\\": {\\\"meter_number\\\": \\\"<<METER_NUMBER>>\\\",\\\"transaction_value\\\": <<SALE_VALUE>>}\"\n    },\n    \"display_output\": [\n        {\n            \"key\": \"Meter number\",\n            \"value\": \"04040404040\"\n        },\n        {\n            \"key\": \"Account holder\",\n            \"value\": \"Default Test\"\n        }\n    ],\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"fe1cb0be-71e0-45be-b795-f291ff68a47c","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"7da4a265-7156-4a9c-bc73-2edd6b8764b2\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"0679a14a-3dc9-43af-91b5-d2658972d144\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 282,\n    \"parameters\": {\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//prepaid_utility_lookup","description":"Most utilities sales works in a two-step manner in which confirmation of the meter owner is needed before the sale is done. The typical api calls used are depicted below.<p>\n\n<img src=\"https://drive.google.com/uc?export=view&id=1rMesddnmqTDqjsi1IaQl0AdliBW0mRt-\" alt=\"Diagram for basic transaction flow\" width=\"auto\"/><p>\n\n> **Note:** \nEven though it might not be forced to perform a prepaid_utility_lookup before a sale is done at all utility providers, it is highly recommended to do so.<p>\n\nThe parameter sale_apk_tx_object is returned during the lookup to assist in the two step process.<p>\n\nThe possibly utility_type is\n+ Electricity\n+ Water\n+ Gas\n\nThe utility meter number needs to be provided in the request.<p>\n\nThe details of the meter number holder are then returned. Typically so that the customer can confirm the correct meter number were entered.<p>\n\nNOTE: For meter numbers that can be used for testing see the /prepaid_utility_sale section<p>\n\nThe response has a generic structure, therefore some fields may return empty as the specific utilities provider might not require the detail to show.<p>\n\nAdditional examples of possible responses has been provided below together with the calls that can be done against the mock server to get these responses."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"627af2e3-5951-42e3-9a56-4b7e84e95a79","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"24bd3704-c54c-40ec-bdc6-79b5d3c5196b\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"6354ac80-50ad-4f7e-bc6a-16b7c9472d0c\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 282,\n    \"parameters\": {\n        \"meter_number\": \"04040404040\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//prepaid_utility_lookup","description":"Most utilities sales works in a two-step manner in which confirmation of the meter owner is needed before the sale is done. The typical api calls used are depicted below.<p>\n\n<img src=\"https://drive.google.com/uc?export=view&id=1rMesddnmqTDqjsi1IaQl0AdliBW0mRt-\" alt=\"Diagram for basic transaction flow\" width=\"auto\"/><p>\n\n> **Note:** \nEven though it might not be forced to perform a prepaid_utility_lookup before a sale is done at all utility providers, it is highly recommended to do so.<p>\n\nThe parameter sale_apk_tx_object is returned during the lookup to assist in the two step process.<p>\n\nThe possibly utility_type is\n+ Electricity\n+ Water\n+ Gas\n\nThe utility meter number needs to be provided in the request.<p>\n\nThe details of the meter number holder are then returned. Typically so that the customer can confirm the correct meter number were entered.<p>\n\nNOTE: For meter numbers that can be used for testing see the /prepaid_utility_sale section<p>\n\nThe response has a generic structure, therefore some fields may return empty as the specific utilities provider might not require the detail to show.<p>\n\nAdditional examples of possible responses has been provided below together with the calls that can be done against the mock server to get these responses."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"6980606c-785a-434a-9c41-4e779cd9c40f","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"881a6fe8-0c69-4e58-8348-2f5e02d2bc61\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"3ba018e9-88c1-4b0a-9ca7-57cd845afbff\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 282,\n    \"parameters\": {\n        \"meter_number\": \"04040404040\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//prepaid_utility_lookup","description":"Most utilities sales works in a two-step manner in which confirmation of the meter owner is needed before the sale is done. The typical api calls used are depicted below.<p>\n\n<img src=\"https://drive.google.com/uc?export=view&id=1rMesddnmqTDqjsi1IaQl0AdliBW0mRt-\" alt=\"Diagram for basic transaction flow\" width=\"auto\"/><p>\n\n> **Note:** \nEven though it might not be forced to perform a prepaid_utility_lookup before a sale is done at all utility providers, it is highly recommended to do so.<p>\n\nThe parameter sale_apk_tx_object is returned during the lookup to assist in the two step process.<p>\n\nThe possibly utility_type is\n+ Electricity\n+ Water\n+ Gas\n\nThe utility meter number needs to be provided in the request.<p>\n\nThe details of the meter number holder are then returned. Typically so that the customer can confirm the correct meter number were entered.<p>\n\nNOTE: For meter numbers that can be used for testing see the /prepaid_utility_sale section<p>\n\nThe response has a generic structure, therefore some fields may return empty as the specific utilities provider might not require the detail to show.<p>\n\nAdditional examples of possible responses has been provided below together with the calls that can be done against the mock server to get these responses."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"f18c8ddf-badf-4350-ab43-a5049529da0e"},{"name":"prepaid_utility_sale","event":[{"listen":"test","script":{"id":"28124286-0877-4482-9096-923a8dc4bb40","exec":["var jsonData = JSON.parse(responseBody);\r","\r","if (pm.response.code !== 500) {\r","  if (jsonData.meta.response_code == 0) {\r","    \r","    postman.setEnvironmentVariable(\"org_req_transaction_id\", jsonData.meta.req_transaction_id);\r","    postman.setEnvironmentVariable(\"org_tx_log_id\", jsonData.transaction_detail.tx_log_id);\r","\r","  };\r","}\r",""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"20a26ed9-9659-44a4-81d2-ae6706ca847a","exec":[""],"type":"text/javascript","packages":{}}}],"id":"b76d6765-aeec-4ecc-b8c6-c8fd49c28e17","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"9c2eef01-44c8-4808-8537-1c907e77c487\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"d0c0c787-b8fc-4dbd-a301-200f2674cb83\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 283,\n    \"parameters\": {\n        \"meter_number\": \"04040404040\",\n        \"transaction_value\": 10000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},"url":"//prepaid_utility_sale","description":"<p>The meter number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.</p><p></p>\n<p>As the response is generic through different providers and countries, some fields maybe returned emptied depending on the requirements of the Utility provider.</p><p></p>\n<p>The <b>provider detail</b> section gives information regarding the Utility Provider which might be legally required to be printed on any slip rendered on behalf of the utility provider.</p>\n<ul>\n<li>name: The utility provider name</li>\n<li>vat_number: The VAT number of the provider</li>\n<li>address: The address of the provider</li>\n<li>contact_number: The contact number of the provider<p></p></li>\n</ul>\n<p>In the <b>account detail</b> section, the information with regards to the account holder who is linked to the meter number is returned.</p><p></p>\n<p>The <b>meter detail</b> section provide the details of the specific meter.</p><p></p>\n<ul>\n<li><p>meter_number: The meter number</p>\n<blockquote>\n<ul>\n<li><p>The following meter numbers can be used for testing for BPC (Botswana Power Corporation):</p>\n<ul>\n<li>For a successful response use: 04040404040</li>\n</ul>\n</li>\n<li><p>For failed responses use the following</p>\n<ul>\n<li>04040404347 - error message: blocked meter number</li>\n<li>04040404438 - error message: blocked account number</li>\n<li>04040404768 - error message: blocked customer number</li>\n<li>04040406698 - error message: Meter number not found or disconnected meter number</li>\n</ul>\n</li>\n<li><p>The following meter numbers can be used for testing for LEC (Lesotho Electricity Corporation):</p>\n<ul>\n<li>07091234562</li>\n<li>07000001102</li>\n<li>07000000674</li>\n<li>1234567</li>\n<li>07000000013</li>\n</ul>\n</li>\n</ul>\n</blockquote>\n</li>\n<li><p>sgc: Supplier Group Code</p>\n</li>\n<li><p>krn: Key Revision Number</p>\n</li>\n<li><p>ti: Tarrif Index</p>\n</li>\n<li><p>alg: Token Generating Algorithme</p>\n</li>\n<li><p>tt: Token Technology Code</p><p></p>\n</li>\n</ul>\n<p>The tendered amount are not necessary the value of the utility purchased, this is because the different utility providers may be required by law to recover some additional charges. The <b>tendered breakdown</b> is returned as an array, the description will indicate which charge it is and the value the amount charged for it.</p><p></p>\n<p>A list of possible descriptions are:</p>\n<ul>\n<li>Electricity</li>\n<li>Water</li>\n<li>VAT</li>\n<li>GST</li>\n<li>Excise Duty</li>\n<li>Debt Repayment</li>\n<li>Recovery Amount<p></p></li>\n</ul>\n<p>The <b>token details</b> section return an array in which each token is specified with its type, token number and units, if applicable.</p><p></p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["prepaid_utility_sale"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"b19f0be2-919b-4829-9fe3-7ebafee8467f","name":"200: Successful sale","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"0ac6df4b-85f8-41fa-b57d-832722ef0cfa\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"e9a7ed91-93a4-434d-9310-aff34fe65c6a\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 283,\r\n    \"parameters\": {\r\n        \"meter_number\": \"04040404040\",\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/b2b/v3/prepaid_utility_sale","description":"The meter number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.<p>\n\nAs the response is generic through different providers and countries, some fields maybe returned emptied depending on the requirements of the Utility provider.<p>\n\nThe <b>provider detail</b> section gives information regarding the Utility Provider which might be legally required to be printed on any slip rendered on behalf of the utility provider.\n\n+ name: The utility provider name\n+ vat_number: The VAT number of the provider\n+ address: The address of the provider\n+ contact_number: The contact number of the provider<p>\n\nIn the <b>account detail</b> section, the information with regards to the account holder who is linked to the meter number is returned.<p>\n\nThe <b>meter detail</b> section provide the details of the specific meter.<p>\n\n+ meter_number: The meter number\n>  * The following meter numbers can be used for testing for BPC (Botswana Power Corporation):\n>    * For a successful response use: 04040404040\n>\n>  * For failed responses use the following\n>    * 04040404347 - error message: blocked meter number\n>    * 04040404438 - error message: blocked account number\n>    * 04040404768 - error message: blocked customer number\n>    * 04040406698 - error message: Meter number not found or disconnected meter number\n>\n>  * The following meter numbers can be used for testing for LEC (Lesotho Electricity Corporation):\n>    * 07091234562\n>    * 07000001102\n>    * 07000000674\n>    * 1234567\n>    * 07000000013\n\n+ sgc: Supplier Group Code\n+ krn: Key Revision Number\n+ ti: Tarrif Index\n+ alg: Token Generating Algorithme\n+ tt: Token Technology Code<p>\n\nThe tendered amount are not necessary the value of the utility purchased, this is because the different utility providers may be required by law to recover some additional charges. The <b>tendered breakdown</b> is returned as an array, the description will indicate which charge it is and the value the amount charged for it.<p>\n\nA list of possible descriptions are:\n+ Electricity\n+ Water\n+ VAT\n+ GST\n+ Excise Duty\n+ Debt Repayment\n+ Recovery Amount<p>\n\nThe <b>token details</b> section return an array in which each token is specified with its type, token number and units, if applicable.<p>"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"079035ef-8d98-4d59-980b-4c2c4a0a13f4\",\n        \"req_device_id\": \"AB00932\",\n        \"req_store_id\": \"21398jsdf98\",\n        \"req_transaction_id\": \"e0fe417f-4c3d-4e93-b08a-fb9676c09fdc\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2024-01-04T18:11:05.134+02:00\",\n        \"tx_log_id\": 59017182,\n        \"tx_status\": \"DELIVERED\"\n    },\n    \"previous_api_tx_object_id\": \"282\",\n    \"next_api_tx_object_id\": \"0\",\n    \"next_api_tx_object\": {},\n    \"voucher_detail\": {\n        \"provider\": {\n            \"name\": \"\",\n            \"vat_number\": \"C03642301112\"\n        },\n        \"description\": \"Conlog - Botswana\",\n        \"external_reference\": \"20240104181108\",\n        \"utility_type\": \"Electricty\",\n        \"account_detail\": {\n            \"account_holder\": \"Default Test\",\n            \"account_number\": \"\"\n        },\n        \"meter_detail\": {\n            \"meter_number\": \"04040404040\",\n            \"tt\": \"02\",\n            \"krn\": \"1\",\n            \"ti\": \"01\",\n            \"alg\": \"\",\n            \"sgc\": \"990471\"\n        }\n    },\n    \"transaction_value\": {\n        \"currency\": \"BWP\",\n        \"tendered_value\": \"10000\",\n        \"unit_cost\": 8600,\n        \"tendered_breakdown\": [\n            {\n                \"description\": \"Domestic Charges\",\n                \"value\": \"0\"\n            },\n            {\n                \"description\": \"Government Levy\",\n                \"value\": \"0\"\n            },\n            {\n                \"description\": \"Business Charge\",\n                \"value\": \"0\"\n            },\n            {\n                \"description\": \"VAT\",\n                \"value\": \"1304\"\n            }\n        ],\n        \"tokens\": [\n            {\n                \"token_number\": \"74168333273502136940\",\n                \"units\": \"130.44\",\n                \"token_type\": \"Electricity\"\n            }\n        ]\n    },\n    \"instructions\": [\n        \"Enter the token numbers into your meter\",\n        \"in the order they are displayed.\"\n    ],\n    \"print_output\": [\n        {\n            \"key\": \"Trans ID\",\n            \"value\": \"59017182\"\n        },\n        {\n            \"key\": \"Provider\",\n            \"value\": \"\"\n        },\n        {\n            \"key\": \"VAT number\",\n            \"value\": \"C03642301112\"\n        },\n        {\n            \"key\": \"Customer name\",\n            \"value\": \"Default Test\"\n        },\n        {\n            \"key\": \"Account\",\n            \"value\": \"\"\n        },\n        {\n            \"key\": \"SGC\",\n            \"value\": \"990471\"\n        },\n        {\n            \"key\": \"Tariff Index\",\n            \"value\": \"01\"\n        },\n        {\n            \"key\": \"Meter number\",\n            \"value\": \"04040404040\"\n        },\n        {\n            \"key\": \"Transaction amount\",\n            \"value\": \"100\"\n        },\n        {\n            \"key\": \"Units\",\n            \"value\": \"130.44\"\n        },\n        {\n            \"key\": \"Domestic Charges\",\n            \"value\": \"0\"\n        },\n        {\n            \"key\": \"Government Levy\",\n            \"value\": \"0\"\n        },\n        {\n            \"key\": \"Business Charge\",\n            \"value\": \"0\"\n        },\n        {\n            \"key\": \"VAT\",\n            \"value\": \"13.04\"\n        },\n        {\n            \"key\": \"Electricity\",\n            \"value\": \"7416 8333 2735 0213 6940\",\n            \"accentuate\": true\n        }\n    ],\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"849fbf50-a384-4229-b64a-53d99b54ccc3","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"37cf306f-a062-498f-9a3c-cae9572894d5\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"615e8509-44e4-46b5-b59d-1808cf0265e1\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 283,\r\n    \"parameters\": {\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//prepaid_utility_sale","description":"The meter number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.<p>\n\nAs the response is generic through different providers and countries, some fields maybe returned emptied depending on the requirements of the Utility provider.<p>\n\nThe <b>provider detail</b> section gives information regarding the Utility Provider which might be legally required to be printed on any slip rendered on behalf of the utility provider.\n\n+ name: The utility provider name\n+ vat_number: The VAT number of the provider\n+ address: The address of the provider\n+ contact_number: The contact number of the provider<p>\n\nIn the <b>account detail</b> section, the information with regards to the account holder who is linked to the meter number is returned.<p>\n\nThe <b>meter detail</b> section provide the details of the specific meter.<p>\n\n+ meter_number: The meter number\n>  * The following meter numbers can be used for testing for BPC (Botswana Power Corporation):\n>    * For a successful response use: 04040404040\n>\n>  * For failed responses use the following\n>    * 04040404347 - error message: blocked meter number\n>    * 04040404438 - error message: blocked account number\n>    * 04040404768 - error message: blocked customer number\n>    * 04040406698 - error message: Meter number not found or disconnected meter number\n>\n>  * The following meter numbers can be used for testing for LEC (Lesotho Electricity Corporation):\n>    * 07091234562\n>    * 07000001102\n>    * 07000000674\n>    * 1234567\n>    * 07000000013\n\n+ sgc: Supplier Group Code\n+ krn: Key Revision Number\n+ ti: Tarrif Index\n+ alg: Token Generating Algorithme\n+ tt: Token Technology Code<p>\n\nThe tendered amount are not necessary the value of the utility purchased, this is because the different utility providers may be required by law to recover some additional charges. The <b>tendered breakdown</b> is returned as an array, the description will indicate which charge it is and the value the amount charged for it.<p>\n\nA list of possible descriptions are:\n+ Electricity\n+ Water\n+ VAT\n+ GST\n+ Excise Duty\n+ Debt Repayment\n+ Recovery Amount<p>\n\nThe <b>token details</b> section return an array in which each token is specified with its type, token number and units, if applicable.<p>"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"f2620013-0319-4e08-875e-5940a8b95449","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"85ecd970-a12c-46a5-a80b-99fbad6ddd4f\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"35e41920-e125-41f7-9c4a-c06509369606\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 283,\r\n    \"parameters\": {\r\n        \"meter_number\": \"04040404040\",\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//prepaid_utility_sale","description":"The meter number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.<p>\n\nAs the response is generic through different providers and countries, some fields maybe returned emptied depending on the requirements of the Utility provider.<p>\n\nThe <b>provider detail</b> section gives information regarding the Utility Provider which might be legally required to be printed on any slip rendered on behalf of the utility provider.\n\n+ name: The utility provider name\n+ vat_number: The VAT number of the provider\n+ address: The address of the provider\n+ contact_number: The contact number of the provider<p>\n\nIn the <b>account detail</b> section, the information with regards to the account holder who is linked to the meter number is returned.<p>\n\nThe <b>meter detail</b> section provide the details of the specific meter.<p>\n\n+ meter_number: The meter number\n>  * The following meter numbers can be used for testing for BPC (Botswana Power Corporation):\n>    * For a successful response use: 04040404040\n>\n>  * For failed responses use the following\n>    * 04040404347 - error message: blocked meter number\n>    * 04040404438 - error message: blocked account number\n>    * 04040404768 - error message: blocked customer number\n>    * 04040406698 - error message: Meter number not found or disconnected meter number\n>\n>  * The following meter numbers can be used for testing for LEC (Lesotho Electricity Corporation):\n>    * 07091234562\n>    * 07000001102\n>    * 07000000674\n>    * 1234567\n>    * 07000000013\n\n+ sgc: Supplier Group Code\n+ krn: Key Revision Number\n+ ti: Tarrif Index\n+ alg: Token Generating Algorithme\n+ tt: Token Technology Code<p>\n\nThe tendered amount are not necessary the value of the utility purchased, this is because the different utility providers may be required by law to recover some additional charges. The <b>tendered breakdown</b> is returned as an array, the description will indicate which charge it is and the value the amount charged for it.<p>\n\nA list of possible descriptions are:\n+ Electricity\n+ Water\n+ VAT\n+ GST\n+ Excise Duty\n+ Debt Repayment\n+ Recovery Amount<p>\n\nThe <b>token details</b> section return an array in which each token is specified with its type, token number and units, if applicable.<p>"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"f6a5b046-0b64-4139-9b35-f867dbf23ae7","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"a618a136-9842-4bd9-a167-fe4d0224501e\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"06248bfa-c458-4b39-a803-bd27980f06c7\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 283,\r\n    \"parameters\": {\r\n        \"meter_number\": \"04040404040\",\r\n        \"transaction_value\": 10000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//prepaid_utility_sale","description":"The meter number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.<p>\n\nAs the response is generic through different providers and countries, some fields maybe returned emptied depending on the requirements of the Utility provider.<p>\n\nThe <b>provider detail</b> section gives information regarding the Utility Provider which might be legally required to be printed on any slip rendered on behalf of the utility provider.\n\n+ name: The utility provider name\n+ vat_number: The VAT number of the provider\n+ address: The address of the provider\n+ contact_number: The contact number of the provider<p>\n\nIn the <b>account detail</b> section, the information with regards to the account holder who is linked to the meter number is returned.<p>\n\nThe <b>meter detail</b> section provide the details of the specific meter.<p>\n\n+ meter_number: The meter number\n>  * The following meter numbers can be used for testing for BPC (Botswana Power Corporation):\n>    * For a successful response use: 04040404040\n>\n>  * For failed responses use the following\n>    * 04040404347 - error message: blocked meter number\n>    * 04040404438 - error message: blocked account number\n>    * 04040404768 - error message: blocked customer number\n>    * 04040406698 - error message: Meter number not found or disconnected meter number\n>\n>  * The following meter numbers can be used for testing for LEC (Lesotho Electricity Corporation):\n>    * 07091234562\n>    * 07000001102\n>    * 07000000674\n>    * 1234567\n>    * 07000000013\n\n+ sgc: Supplier Group Code\n+ krn: Key Revision Number\n+ ti: Tarrif Index\n+ alg: Token Generating Algorithme\n+ tt: Token Technology Code<p>\n\nThe tendered amount are not necessary the value of the utility purchased, this is because the different utility providers may be required by law to recover some additional charges. The <b>tendered breakdown</b> is returned as an array, the description will indicate which charge it is and the value the amount charged for it.<p>\n\nA list of possible descriptions are:\n+ Electricity\n+ Water\n+ VAT\n+ GST\n+ Excise Duty\n+ Debt Repayment\n+ Recovery Amount<p>\n\nThe <b>token details</b> section return an array in which each token is specified with its type, token number and units, if applicable.<p>"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"b76d6765-aeec-4ecc-b8c6-c8fd49c28e17"},{"name":"bill_lookup","event":[{"listen":"test","script":{"id":"183ad5e3-a3a9-4f28-b74f-e3b5a182a321","exec":[""],"type":"text/javascript"}}],"id":"9f8efed9-ae50-4d06-9b55-c4d9a184f28b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"845c6a68-8f25-45d1-8520-075e2adaf527\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"457c5ba3-3cef-4688-9be3-95b679e59731\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 503,\r\n    \"parameters\": {\r\n        \"account_number\": \"12345678\",\r\n        \"transaction_value\": 1000,\r\n        \"msisdn\": \"132123123\"\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//bill_lookup","description":"<p>This endpoint is intended to be a single endpoint for the vast majority of bill payment transactions where the bill payment process consist our of a two-step process with fist step response returning information about the account, amount owed, payment options available, etc.</p>\n<p>Because it has to be able to cater for a diverse set up products (electricity bills, pay TV bills, water meter bills, municipal bills, etc), new fields can be added at any time. Therefore, if a field is returned that is not expected by you, you have to ignore it. However, all fields specified in the response schema wil lbe returned with the exception of the following:<br />a) The fields starting with \"req_\" in the meta section. Since most of these fields are optional in the request, and their value is simply echoed back in the response, if they are not sent in the request they will not appear in the response.<br />b) The requester_data section. This section is also optional in the request and is simply echoed back in the response. Therefore, if no requester_data is sent in the request, it will not appear in the response.</p>\n<p>The response has a generic structure, therefore some fields may return empty as the specific provider might not require the detail to show.</p>\n<p>amount_due, acceptMultiplesOf, min_vend and max_vend specifies payment limits and rules that apply to the transaction.</p>\n<p><strong>Example 1.</strong> Exact payment of R150.00 required:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>amount_due</th>\n<th>acceptMultiplesOf</th>\n<th>min_vend</th>\n<th>max_vend</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>15000</td>\n<td>-</td>\n<td>15000</td>\n<td>15000</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<br />\n\n<p><strong>Example 2.</strong>  The account has an outstanding balance of R220.00, but any\n              amount between R50 and R1000 is allowed as payment.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>amount_due</th>\n<th>acceptMultiplesOf</th>\n<th>min_vend</th>\n<th>max_vend</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>22000</td>\n<td>-</td>\n<td>5000</td>\n<td>100000</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<br />\n\n<p><strong>Example 3.</strong>  Premium-style over-payment allowed in multiples of R100.00,\n              for an account with an outstanding balance of R300.00.\n              The issuer has a maximum limit of R1500.00 but at least the\n              full outstanding amount has to be settled</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>amount_due</th>\n<th>acceptMultiplesOf</th>\n<th>min_vend</th>\n<th>max_vend</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>30000</td>\n<td>10000</td>\n<td>30000</td>\n<td>150000</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<br />\n\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["bill_lookup"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"61e76cb7-3f31-486c-9a9d-6de9dccab278","name":"200: Successful lookup","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"2168f192-1133-4572-841d-49dae6bdc6e5\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"bf5f3cc1-1b4f-4eaf-bee7-bf9245dea2a6\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 516,\n    \"parameters\": {\n      \"account_number\": \"115989999999994\",\n      \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/b2b/v3/bill_lookup","description":"This endpoint is intended to be a single endpoint for the vast majority of bill payment transactions where the bill payment process consist our of a two-step process with fist step response returning information about the account, amount owed, payment options available, etc.\n\n  \nBecause it has to be able to cater for a diverse set up products (electricity bills, pay TV bills, water meter bills, municipal bills, etc), new fields can be added at any time. Therefore, if a field is returned that is not expected by you, you have to ignore it. However, all fields specified in the response schema wil lbe returned with the exception of the following:  \na) The fields starting with \"req_\" in the meta section. Since most of these fields are optional in the request, and their value is simply echoed back in the response, if they are not sent in the request they will not appear in the response.  \nb) The requester_data section. This section is also optional in the request and is simply echoed back in the response. Therefore, if no requester_data is sent in the request, it will not appear in the response.\n\nThe response has a generic structure, therefore some fields may return empty as the specific provider might not require the detail to show.\n\namount_due, acceptMultiplesOf, min_vend and max_vend specifies payment limits and rules that apply to the transaction.\n\n**Example 1.** Exact payment of R150.00 required:\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      15000 |                 - |     15000 |     15000 |\n---\n<br/>\n\n**Example 2.**  The account has an outstanding balance of R220.00, but any\n\t\t\t  amount between R50 and R1000 is allowed as payment.\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      22000 |                 - |      5000 |    100000 |\n---\n<br/>\n\n**Example 3.**  Premium-style over-payment allowed in multiples of R100.00,\n\t\t\t  for an account with an outstanding balance of R300.00.\n\t\t\t  The issuer has a maximum limit of R1500.00 but at least the\n\t\t\t  full outstanding amount has to be settled\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      30000 |             10000 |     30000 |    150000 |\n---\n<br/>\n\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": 0,\n    \"response_message\": \"Success\",\n    \"req_session_id\": \"ae0f751d-b204-4da3-93a4-ef50e8ec15d4\",\n    \"req_device_id\": \"ST01-L14\",\n    \"req_transaction_id\": \"26630540\",\n    \"req_platform\": \"Mobile\",\n    \"req_date_time\": \"2021-01-10T19:35:27.001+02:00\"\n  },\n  \"transaction_detail\": {\n    \"tx_date_time\": \"2021-01-10T19:35:47.001+02:00\",\n    \"tx_log_id\": 756608,\n    \"tx_Status\": \"Delivered\"\n  },\n  \"voucher_detail\": {\n    \"provider\": \"DSTV\",\n    \"tendered_value\": 2000,\n    \"description\": \"Premium package\",\n    \"account_holder\": \"MATLHODI/KGWAKGWE\",\n    \"account_number\": \"3000050635\",\n    \"address\": \"\",\n    \"min_vend\": 500,\n    \"max_vend\": 10000,\n    \"outstanding\": 6000\n  },\n  \"input_list\": [\n    {\n    \"name\": \"payment_period\",\n    \"option_list\": [\n      {\n        \"option_to_present\": \"1 Month @ K30.00\",\n        \"value_to_return\": \"1 Month @ K30.00\"\n      },\n      {\n        \"option_to_present\": \"2 Month @ K60.00\",\n        \"value_to_return\": \"2 Month @ K60.00\"\n      },\n      {\n        \"option_to_present\": \"3 Month @ K90.00\",\n        \"value_to_return\": \"3 Month @ K90.00\"\n      },\n      {\n        \"option_to_present\": \"Quarterly @ K120.00\",\n        \"value_to_return\": \"Quarterly @ K120.00\"\n      },\n      {\n        \"option_to_present\": \"Annually @ K1 440.00\",\n        \"value_to_return\": \"Annually @ K1 440.00\"\n      }\n    ]\n  }\n  ],\n  \"payment_api_tx_object_id\": 312,\n  \"data_reference_number\": \"12345647234546564\",\n  \"requester_data\": {\n    \"requester_field1\": \"123456\",\n    \"requester_field2\": \"abcd\"\n  }\n}"},{"id":"21301347-603e-4af7-9657-576aaf73e8e7","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"6af59538-3cac-4c8e-b77a-35c71492c2ce\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"918bb8be-dd67-42d7-80ea-52dbf52abcd6\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 516,\n    \"parameters\": {\n      \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//bill_lookup","description":"This endpoint is intended to be a single endpoint for the vast majority of bill payment transactions where the bill payment process consist our of a two-step process with fist step response returning information about the account, amount owed, payment options available, etc.\n\n  \nBecause it has to be able to cater for a diverse set up products (electricity bills, pay TV bills, water meter bills, municipal bills, etc), new fields can be added at any time. Therefore, if a field is returned that is not expected by you, you have to ignore it. However, all fields specified in the response schema wil lbe returned with the exception of the following:  \na) The fields starting with \"req_\" in the meta section. Since most of these fields are optional in the request, and their value is simply echoed back in the response, if they are not sent in the request they will not appear in the response.  \nb) The requester_data section. This section is also optional in the request and is simply echoed back in the response. Therefore, if no requester_data is sent in the request, it will not appear in the response.\n\nThe response has a generic structure, therefore some fields may return empty as the specific provider might not require the detail to show.\n\namount_due, acceptMultiplesOf, min_vend and max_vend specifies payment limits and rules that apply to the transaction.\n\n**Example 1.** Exact payment of R150.00 required:\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      15000 |                 - |     15000 |     15000 |\n---\n<br/>\n\n**Example 2.**  The account has an outstanding balance of R220.00, but any\n\t\t\t  amount between R50 and R1000 is allowed as payment.\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      22000 |                 - |      5000 |    100000 |\n---\n<br/>\n\n**Example 3.**  Premium-style over-payment allowed in multiples of R100.00,\n\t\t\t  for an account with an outstanding balance of R300.00.\n\t\t\t  The issuer has a maximum limit of R1500.00 but at least the\n\t\t\t  full outstanding amount has to be settled\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      30000 |             10000 |     30000 |    150000 |\n---\n<br/>\n\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"400\",\n    \"response_message\": \"Bad Request\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\"\n  },\n  \"error\": {\n    \"error_code\": \"400008\",\n    \"error\": \"invalid_request\",\n    \"error_description\": \"Missing parameter value\"\n  }\n}"},{"id":"7b6c4516-0a79-4aff-bcd6-829e3846a0fd","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"2966c69d-7a16-4aa6-a881-bd6117250dab\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"ff91d82d-63a2-48ae-b733-4f9a77f78d36\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 516,\n    \"parameters\": {\n      \"account_number\": \"115989999999994\",\n      \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//bill_lookup","description":"This endpoint is intended to be a single endpoint for the vast majority of bill payment transactions where the bill payment process consist our of a two-step process with fist step response returning information about the account, amount owed, payment options available, etc.\n\n  \nBecause it has to be able to cater for a diverse set up products (electricity bills, pay TV bills, water meter bills, municipal bills, etc), new fields can be added at any time. Therefore, if a field is returned that is not expected by you, you have to ignore it. However, all fields specified in the response schema wil lbe returned with the exception of the following:  \na) The fields starting with \"req_\" in the meta section. Since most of these fields are optional in the request, and their value is simply echoed back in the response, if they are not sent in the request they will not appear in the response.  \nb) The requester_data section. This section is also optional in the request and is simply echoed back in the response. Therefore, if no requester_data is sent in the request, it will not appear in the response.\n\nThe response has a generic structure, therefore some fields may return empty as the specific provider might not require the detail to show.\n\namount_due, acceptMultiplesOf, min_vend and max_vend specifies payment limits and rules that apply to the transaction.\n\n**Example 1.** Exact payment of R150.00 required:\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      15000 |                 - |     15000 |     15000 |\n---\n<br/>\n\n**Example 2.**  The account has an outstanding balance of R220.00, but any\n\t\t\t  amount between R50 and R1000 is allowed as payment.\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      22000 |                 - |      5000 |    100000 |\n---\n<br/>\n\n**Example 3.**  Premium-style over-payment allowed in multiples of R100.00,\n\t\t\t  for an account with an outstanding balance of R300.00.\n\t\t\t  The issuer has a maximum limit of R1500.00 but at least the\n\t\t\t  full outstanding amount has to be settled\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      30000 |             10000 |     30000 |    150000 |\n---\n<br/>\n\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"401\",\n    \"response_message\": \"Authorization failed\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\"\n  },\n  \"error\": {\n    \"error_code\": \"401005\",\n    \"error\": \"unauthorized_client\",\n    \"error_description\": \"Invalid 'authorization token'\"\n  }\n}"},{"id":"05200531-9b89-42d7-b381-c1e09bd87939","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"05c1f488-2f0c-41df-bdbf-44529dba19f1\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"2cfba807-92e5-4383-84e7-ced28ded4048\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 516,\n    \"parameters\": {\n      \"account_number\": \"115989999999994\",\n      \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//bill_lookup","description":"This endpoint is intended to be a single endpoint for the vast majority of bill payment transactions where the bill payment process consist our of a two-step process with fist step response returning information about the account, amount owed, payment options available, etc.\n\n  \nBecause it has to be able to cater for a diverse set up products (electricity bills, pay TV bills, water meter bills, municipal bills, etc), new fields can be added at any time. Therefore, if a field is returned that is not expected by you, you have to ignore it. However, all fields specified in the response schema wil lbe returned with the exception of the following:  \na) The fields starting with \"req_\" in the meta section. Since most of these fields are optional in the request, and their value is simply echoed back in the response, if they are not sent in the request they will not appear in the response.  \nb) The requester_data section. This section is also optional in the request and is simply echoed back in the response. Therefore, if no requester_data is sent in the request, it will not appear in the response.\n\nThe response has a generic structure, therefore some fields may return empty as the specific provider might not require the detail to show.\n\namount_due, acceptMultiplesOf, min_vend and max_vend specifies payment limits and rules that apply to the transaction.\n\n**Example 1.** Exact payment of R150.00 required:\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      15000 |                 - |     15000 |     15000 |\n---\n<br/>\n\n**Example 2.**  The account has an outstanding balance of R220.00, but any\n\t\t\t  amount between R50 and R1000 is allowed as payment.\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      22000 |                 - |      5000 |    100000 |\n---\n<br/>\n\n**Example 3.**  Premium-style over-payment allowed in multiples of R100.00,\n\t\t\t  for an account with an outstanding balance of R300.00.\n\t\t\t  The issuer has a maximum limit of R1500.00 but at least the\n\t\t\t  full outstanding amount has to be settled\n\n| amount_due | acceptMultiplesOf | min_vend  | max_vend  |\n| -----------|-------------------|-----------|-----------|\n|      30000 |             10000 |     30000 |    150000 |\n---\n<br/>\n\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"500\",\n    \"response_message\": \"Internal Server Error\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\"\n  },\n  \"error\": {\n    \"error_code\": \"500000\",\n    \"error\": \"internal_server\",\n    \"error_description\": \"The server has experienced an error.\"\n  }\n}"}],"_postman_id":"9f8efed9-ae50-4d06-9b55-c4d9a184f28b"},{"name":"bill_payment","event":[{"listen":"test","script":{"id":"a8f86c14-b762-40ba-93c3-bcadd3388d0f","exec":["var jsonData = JSON.parse(responseBody);\r","\r","if (pm.response.code !== 500) {\r","  if (jsonData.meta.response_code == 0) {\r","    \r","    postman.setEnvironmentVariable(\"org_req_transaction_id\", jsonData.meta.req_transaction_id);\r","    postman.setEnvironmentVariable(\"org_tx_log_id\", jsonData.transaction_detail.tx_log_id);\r","\r","  };\r","}\r",""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"packages":{},"type":"text/javascript","id":"cb0f125d-a2e4-409f-a3d2-2027f8aae291"}}],"id":"b9353ee5-9bf3-47ab-b7fc-7a674af8480c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"753934eb-a600-498e-ae0d-127a285b82ad\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_transaction_id\": \"1981dab7-5ba0-45d4-a3a2-17131fe75375\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"api_tx_object_id\": 517,\r\n    \"data_reference_number\": \"12345647234546564\",\r\n    \"parameters\": {\r\n        \"account_number\": \"115989999999994\",\r\n        \"transaction_value\": 1000\r\n    },\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"123456\",\r\n        \"requester_field2\": \"abcd\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//bill_payment","description":"<p>The account number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.</p>\n<p>As the response is generic through different providers, countries and bill products, some fields maybe returned emptied depending on the requirements of the service provider.</p>\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n\n<p>The <strong>token details</strong> section return an array in which each token is specified with its type, token number and units, if applicable.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["bill_payment"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"596278c0-86d4-42f9-8565-a50eb148af50","name":"200: Successful payment","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"-49488824"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"26cb65d9-7cd8-4638-baf2-68426db24626\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"741b9777-1c9a-4571-933f-4b391320403d\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 517,\n    \"data_reference_number\": \"12345647234546564\",\n    \"parameters\": {\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/bill_payment","description":"The account number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.\n\nAs the response is generic through different providers, countries and bill products, some fields maybe returned emptied depending on the requirements of the service provider.\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n\nThe **token details** section return an array in which each token is specified with its type, token number and units, if applicable."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"Success\",\n        \"req_session_id\": \"8a801fab-8c39-4a46-9a38-f6c2a2356669\",\n        \"req_device_id\": \"928-123-765\",\n        \"req_transaction_id\": \"78245234\",\n        \"req_platform\": \"WEB\",\n        \"req_date_time\": \"2021-01-12T09:36:55.012+02:00\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2021-01-12T09:36:57.005+02:00\",\n        \"tx_log_id\": 1677131,\n        \"tx_status\": \"Delivered\"\n    },\n    \"voucher_detail\": {\n        \"provider\": {\n            \"name\": \"DSTV\",\n            \"vat_number\": \"\",\n            \"address\": \"\",\n            \"contact_number\": \"\"\n        },\n        \"description\": \"DSTV Premium\",\n        \"external_reference\": \"371404\",\n        \"transaction_id\": \"\",\n        \"receipt\": \"37256/604\",\n        \"account_detail\": {\n            \"account_holder\": \"MR A Kriel\",\n            \"account_number\": \"428\",\n            \"address\": \"\"\n        },\n        \"balance\": 100000\n    },\n    \"transaction_value\": {\n        \"currency\": \"BWP\",\n        \"tendered_value\": \"<integer>\",\n        \"tendered_breakdown\": [\n            {\n                \"description\": \"Debt Repayment\",\n                \"value\": \"5000\"\n            },\n            {\n                \"description\": \"VAT\",\n                \"value\": \"652\"\n            }\n        ],\n        \"tokens\": [\n            {\n                \"token_type\": \"Smart card load\",\n                \"token_number\": \"01234567890123456789\"\n            }\n        ],\n        \"instructions\": [\n            \"Enter the token numbers into your set box\"\n        ]\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"f4874858-81e5-40c9-84e0-2eee2400515c","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"-49488824"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"83695469-08e2-4de3-a45e-91048326b995\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"e57b6025-a007-4724-913f-55957c1a1552\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 517,\n    \"parameters\": {\n        \"account_number\": \"115989999999994\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//bill_payment","description":"The account number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.\n\nAs the response is generic through different providers, countries and bill products, some fields maybe returned emptied depending on the requirements of the service provider.\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n\nThe **token details** section return an array in which each token is specified with its type, token number and units, if applicable."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"400\",\n    \"response_message\": \"Bad Request\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\"\n  },\n  \"error\": {\n    \"error_code\": \"400008\",\n    \"error\": \"invalid_request\",\n    \"error_description\": \"Missing parameter value\"\n  }\n}"},{"id":"e7d0e894-33b5-48aa-bf42-d1c06b5250b8","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"-49488824"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"eacd80b6-7757-4cf1-ab02-e82022f303e6\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"36ebd424-a279-4ee7-983c-eea421d2d6d8\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 517,\n    \"data_reference_number\": \"12345647234546564\",\n    \"parameters\": {\n        \"account_number\": \"115989999999994\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//bill_payment","description":"The account number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.\n\nAs the response is generic through different providers, countries and bill products, some fields maybe returned emptied depending on the requirements of the service provider.\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n\nThe **token details** section return an array in which each token is specified with its type, token number and units, if applicable."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"401\",\n    \"response_message\": \"Authorization failed\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\"\n  },\n  \"error\": {\n    \"error_code\": \"401005\",\n    \"error\": \"unauthorized_client\",\n    \"error_description\": \"Invalid 'authorization token'\"\n  }\n}"},{"id":"fcac66db-f6e9-4bdf-a734-b37e0ebfdc56","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"-49488824"},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"8fcca8c4-0d99-402d-802f-5346526f4f72\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"48f3ac41-6813-4e13-a544-3bc5db3c08d9\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 517,\n    \"data_reference_number\": \"12345647234546564\",\n    \"parameters\": {\n        \"account_number\": \"115989999999994\",\n        \"transaction_value\": 1000\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//bill_payment","description":"The account number and sale value needs to form part of the POST request. Should lookup be a requirement, the lookup's transaction log id should be included as well.\n\nAs the response is generic through different providers, countries and bill products, some fields maybe returned emptied depending on the requirements of the service provider.\n\n<p>To see what fields are required for the various bill payment providers, as well as what data will be available in the response, see <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n\nThe **token details** section return an array in which each token is specified with its type, token number and units, if applicable."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"response_code\": \"500\",\n    \"response_message\": \"Internal Server Error\",\n    \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n    \"req_device_id\": \"E00932\",\n    \"req_store_id\": \"store001\",\n    \"req_transaction_id\": \"40569911\",\n    \"req_date_time\": \"2020-12-10 07:41:30.001\"\n  },\n  \"error\": {\n    \"error_code\": \"500000\",\n    \"error\": \"internal_server\",\n    \"error_description\": \"The server has experienced an error.\"\n  }\n}"}],"_postman_id":"b9353ee5-9bf3-47ab-b7fc-7a674af8480c"},{"name":"voucher_sale","id":"f53c5719-310c-46cb-a8a6-69f878223d63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"req_transaction_id\": \"<string>\",\n  \"api_tx_object_id\": \"<integer>\",\n  \"parameters\": {\n    \"pin\": \"<string>\",\n    \"transaction_value\": \"<integer>\"\n  },\n  \"entity_id\": \"<string>\",\n  \"req_device_id\": \"<string>\",\n  \"req_store_id\": \"<string>\",\n  \"req_date_time\": \"<dateTime>\",\n  \"req_platform\": \"<string>\",\n  \"requester_Data\": {}\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_sale","description":"<p>This can require none/any/all of three input parameters, depending on the specific voucher criteria.</p>\n<ol>\n<li>transaction_value: In the case of vouchers that accept variable amounts, the value that the voucher needs to be issued for needs to be supplied. In the case of vouchers that has a fixed value, no transaction_value need to be supplied.</li>\n<li>pin: Some vouchers require that the voucher be protected by a purchaser supplied pin. The PIN has to be at minimum 4 characters in length and not more than 10 charcaters. It can contain alpha-numeric as well as numeric characters</li>\n<li>msisdn: Some vouchers require a mobile number. This is typically used to send an SMS to the mobile number that contains information regarding the voucher</li>\n</ol>\n<p>The transaction can have only one of two responses:</p>\n<ul>\n<li><p>Success: A voucher token was generated.</p>\n</li>\n<li><p>Failed: If a voucher token could not be generated, this will be indicated in the structured error message.</p>\n</li>\n</ul>\n<p>More information regarding the specific voucher product criteria (variable/fixed amount, pin required, minimum value, maximum value, etc), can be found here:<a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["voucher_sale"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"9d3523db-ebcf-4f83-90ab-f4419f126014","name":"200: Successful payment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer <token>","description":"Added as a part of security scheme: bearer"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"ac694eac-188f-451d-9013-01c1f030020c\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 942,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"transaction_value\": 60000\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/voucher_sale"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_device_id\": \"AB00932\",\n        \"req_transaction_id\": \"c6e9c05b-330a-49a0-9c2e-aa37cb51ea17\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2025-07-28T14:13:53.592+02:00\",\n        \"tx_log_id\": 67236898,\n        \"tx_status\": \"DELIVERED\"\n    },\n    \"previous_api_tx_object_id\": \"0\",\n    \"next_api_tx_object_id\": \"0\",\n    \"next_api_tx_object\": {},\n    \"money_flow_direction\": \"IN\",\n    \"voucher_detail\": {\n        \"description\": \"MyMoolah Voucher\",\n        \"expiry_date\": \"2028-07-27\",\n        \"serial_number\": \"EYy_EtpRyjcwmYTmiEqM\",\n        \"token\": \"8896628365134769\"\n    },\n    \"transaction_value\": {\n        \"currency\": \"ZAR\",\n        \"transaction_value\": 60000\n    },\n    \"instructions\": [\n        \"Redeem the voucher at many retailers\"\n    ],\n    \"print_output\": [\n        {\n            \"key\": \"Description\",\n            \"value\": \"MyMoolah Voucher\"\n        },\n        {\n            \"key\": \"Value\",\n            \"value\": \"ZAR 600\"\n        },\n        {\n            \"key\": \"Expiry date\",\n            \"value\": \"2028-07-27\"\n        },\n        {\n            \"key\": \"Serial#\",\n            \"value\": \"EYy_EtpRyjcwmYTmiEqM\"\n        },\n        {\n            \"key\": \"Token\",\n            \"value\": \"8896 6283 6513 4769\",\n            \"accentuate\": true\n        }\n    ],\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"ccb71b9c-a5f9-4d99-829b-a2a7255b0e6e","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"392852ce-e59f-432a-be63-a21cd87a7b56\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 660,\n    \"parameters\": {\n        \"transaction_value\": 60000\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_sale"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"f02b656d-8475-4bd3-adba-90e938fdff5a","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"efbbcfa4-24dc-4cc7-b327-e4b8b9f62e8f\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 660,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"transaction_value\": 60000\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_sale"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"4d839138-8e95-449e-917a-9c6a9096af74","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"2619aac0-94e8-471d-8525-a251b600e27c\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 660,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"transaction_value\": 60000\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_sale"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"f53c5719-310c-46cb-a8a6-69f878223d63"},{"name":"voucher_redeem","event":[{"listen":"test","script":{"id":"8627684b-07cb-4c19-918f-0d5e5cc68c3d","exec":["var jsonData = JSON.parse(responseBody);\r","\r","if (pm.response.code !== 500) {\r","  if (jsonData.meta.response_code == 0) {\r","    \r","    postman.setEnvironmentVariable(\"org_req_transaction_id\", jsonData.meta.req_transaction_id);\r","    postman.setEnvironmentVariable(\"org_tx_log_id\", jsonData.transaction_detail.tx_log_id);\r","\r","  };\r","}\r",""],"type":"text/javascript","packages":{}}}],"id":"aec0cd42-e5fa-42f7-becb-f7ff0ca819c9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"8df814a9-ff45-4cc9-aaee-c64d024259f7\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 661,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"token\": \"qHzzE2jyVHtU2Nj9\",\n        \"transaction_value\": 15950\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_redeem","description":"<p>Note that some vouchers require that the voucher be protected by a purchaser supplied pin. The PIN has to be at minimum 4 characters in length and not more than 10 characters. It can contain alpha-numeric as well as numeric characters. If the voucher product being redeemed requires a PIN, the PIN must be included in the request</p>\n<p>Some vouchers also require a msisdn to be supplied at the time of redemption. This is typically used in the case of partial redemptions where the mobile number is then used to send an SMS regarding a new voucher issue for the remainder of the balance, or information regarding the remainder of the balance.</p>\n<p>The transaction can have only one of two responses:</p>\n<ul>\n<li><p>Success: The voucher was redeemed.</p>\n</li>\n<li><p>Failed: The voucher could not be redeemed. There can be multiple reasons why a voucher cannot be redeemed  </p>\n<ol>\n<li>The voucher token could not be found  </li>\n<li>An invalid PIN was supplied in a case where the voucher requires a PIN  </li>\n<li>The voucher has already been redeemed  </li>\n<li>The voucher has expired</li>\n</ol>\n<p>  More information regarding the specific voucher product criteria (variable/fixed amount, pin required, minimum value, maximum value, etc), can be found here:</p>\n<p>  <a href=\"https://docs.google.com/spreadsheets/d/1F_TH6IK-cqfh3WhrTL52ZiFZTy79McoGCjTQu2KMe5c/edit?usp=sharing\">Additional B2B API information</a></p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["voucher_redeem"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"96aa8350-5898-47dc-a5fd-7b4d78427eb7","name":"200: Successful payment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer <token>","description":"Added as a part of security scheme: bearer"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"a954796a-a1b7-47ca-95a1-289b182b26bd\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 661,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"token\": \"qHzzE2jyVHtU2Nj9\",\n        \"transaction_value\": 15950\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/voucher_redeem"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_device_id\": \"AB00932\",\n        \"req_transaction_id\": \"d3851e24-0ea9-41f3-8ef0-95448e98eb84\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2024-08-13T10:54:56.949+02:00\",\n        \"tx_log_id\": 64335020,\n        \"tx_status\": \"DELIVERED\"\n    },\n    \"previous_api_tx_object_id\": \"0\",\n    \"next_api_tx_object_id\": \"0\",\n    \"next_api_tx_object\": {},\n    \"voucher_detail\": {\n        \"description\": \"Lottoland cash-in\",\n        \"expiry_date\": \"2027-08-13\",\n        \"serial_number\": \"Walp9xtVQcCSzmQ67OVj\",\n        \"token\": \"10374727951123022833\"\n    },\n    \"transaction_value\": {\n        \"currency\": \"ZAR\",\n        \"transaction_value\": 15950\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}"},{"id":"9547a71c-e5c3-46dd-abb5-ce4dcf39a21a","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"30031415-e501-4b7a-9b37-d2c7caeb2687\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 661,\n    \"parameters\": {\n        \"pin\": \"1234\"\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_redeem"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"8871dc3b-a21a-4d50-9141-c88324cc90a1","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"98cae3df-77db-4a95-84f3-8dc0ff2c5510\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 661,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"token\": \"qHzzE2jyVHtU2Nj9\"\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_redeem"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"074e0dd4-64ef-4d18-9d56-d2e4b43ed10a","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"c38c7e4b-45ba-4b47-a641-eb6034a85787\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"api_tx_object_id\": 661,\n    \"parameters\": {\n        \"pin\": \"1234\",\n        \"token\": \"qHzzE2jyVHtU2Nj9\"\n    },\n        \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//voucher_redeem"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"aec0cd42-e5fa-42f7-becb-f7ff0ca819c9"},{"name":"confirmation","event":[{"listen":"test","script":{"id":"d1dc11f4-b69c-49fa-b220-e8ad9b3c1bd4","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"779727a2-e6e3-49bb-bc96-f48a9dc270b0","exec":[""],"type":"text/javascript"}}],"id":"aa57e2f2-0ae6-4d2c-9bf1-3687eaa40d3e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"5f6e2aa4-d06d-4434-93f2-767f46e36bd0\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"d033398f-32c6-4b17-9a9d-fcb887917f34\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"original_tx\": {\r\n        \"org_req_transaction_id\": \"16484647844\"\r\n    },\r\n    \"update_fields\": {\r\n        \"tx_status\": \"Received\",\r\n        \"payment_method\": [\r\n            {\r\n                \"type\": \"credit\",\r\n                \"amount\": 1000\r\n            },\r\n            {\r\n                \"type\": \"cash\",\r\n                \"amount\": 1000\r\n            }\r\n        ]\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//confirmation","description":"<p>Using the confirmation method the integrating party must update the status of the transaction. The updated status is used for recon purposes, and in many cases, for finalisation of the transaction such as for bill payments.</p>\n<p>The confirmation step is used to confirm whether a transaction has been successfully performed after the fact. The normal process is REQUEST, RECEIVE the token (for example). This confirmation step is one to let Finclude know that you have received the token (TOKEN RECEIVE CONFIRMED) or that you have received payment from you provider.</p>\n<p><em><strong>From April 2022, /confirmation calls are compulsory for all vending transactions, especially so for bill payments.</strong></em></p>\n<p>The tx_status can be updated to one of the following.</p>\n<ul>\n<li><p>Received</p>\n</li>\n<li><p>NotReceived</p>\n</li>\n</ul>\n<p>An optional field payment_method can be used to specify the payment method used to perform the transaction. The possible methods are:</p>\n<ul>\n<li><p>cash</p>\n</li>\n<li><p>debit</p>\n</li>\n<li><p>credit</p>\n</li>\n<li><p>mobile_wallet</p>\n</li>\n<li><p>voucher</p>\n</li>\n<li><p>store</p>\n</li>\n<li><p>gift</p>\n</li>\n<li><p>combination</p>\n</li>\n<li><p>other</p>\n</li>\n</ul>\n<p>The payment method can aid in the recon and reporting processes.</p>\n<blockquote>\n<p><strong>Note:</strong> If an transaction has not been received the user should perform a transaction_status call to determine the status of the transaction.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["confirmation"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"f6235737-fd02-4998-96b9-6f110fcbaf90","name":"200: Confirmation successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}]","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"dacad847-3d33-45b0-8eae-0a484e396f95\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"d6672bfd-6048-4520-a7b1-b662192d255b\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    },\n    \"update_fields\": {\n        \"tx_status\": \"Received\",\n        \"payment_method\": [\n            {\n                \"type\": \"credit\",\n                \"amount\": 1000\n            },\n            {\n                \"type\": \"cash\",\n                \"amount\": 1000\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/confirmation","description":"Using the confirmation method the integrating party must update the status of the transaction. The updated status is used for recon purposes, and in many cases, for finalisation of the transaction such as for bill payments.<p>\n\nThe confirmation step is used to confirm whether a transaction has been successfully performed after the fact. The normal process is REQUEST, RECEIVE the token (for example). This confirmation step is one to let Finclude know that you have received the token (TOKEN RECEIVE CONFIRMED) or that you have received payment from you provider.<p>\n\n<b><i>From April 2022, /confirmation calls are compulsory for all vending transactions, especially so for bill payments.</i></b><p>\n\nThe tx_status can be updated to one of the following.<p>\n\n+ Received\n+ NotReceived<p>\n\nAn optional field payment_method can be used to specify the payment method used to perform the transaction. The possible methods are:<p>\n\n+ cash\n+ debit\n+ credit\n+ store\n+ gift\n+ combination\n+ other<p>\n\nThe payment method can aid in the recon and reporting processes.<p>\n\n> **Note:** If an transaction has not been received the user should perform a transaction_status call to determine the status of the transaction."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"7ec445ea-81d7-4035-bf71-a04e97a69d05\",\n        \"req_device_id\": \"AB00932\",\n        \"req_store_id\": \"21398jsdf98\",\n        \"req_transaction_id\": \"a64ab0b4-68c7-48b2-8fad-b998e983c2da\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"tx_log_id\": 59017188,\n    \"updated_fields\": {\n        \"tx_status\": \"RECEIVED\",\n        \"payment_method\": [\n            {\n                \"type\": \"credit\",\n                \"amount\": 1000\n            },\n            {\n                \"type\": \"cash\",\n                \"amount\": 1000\n            }\n        ]\n    }\n}"},{"id":"e141aeb1-341b-4c47-a8a3-b97a4f65783e","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}]","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"2272ab0c-e10a-4f78-ad1d-027dd83e8d3f\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"e1eb1f1a-3b7c-4871-b66f-5c16a8de116f\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n    },\n    \"update_fields\": {\n        \"tx_status\": \"Received\",\n        \"payment_method\": [\n            {\n                \"type\": \"credit\",\n                \"amount\": 1000\n            },\n            {\n                \"type\": \"cash\",\n                \"amount\": 1000\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//confirmation","description":"Using the confirmation method the integrating party must update the status of the transaction. The updated status is used for recon purposes, and in many cases, for finalisation of the transaction such as for bill payments.<p>\n\nThe confirmation step is used to confirm whether a transaction has been successfully performed after the fact. The normal process is REQUEST, RECEIVE the token (for example). This confirmation step is one to let Finclude know that you have received the token (TOKEN RECEIVE CONFIRMED) or that you have received payment from you provider.<p>\n\n<b><i>From April 2022, /confirmation calls are compulsory for all vending transactions, especially so for bill payments.</i></b><p>\n\nThe tx_status can be updated to one of the following.<p>\n\n+ Received\n+ NotReceived<p>\n\nAn optional field payment_method can be used to specify the payment method used to perform the transaction. The possible methods are:<p>\n\n+ cash\n+ debit\n+ credit\n+ store\n+ gift\n+ combination\n+ other<p>\n\nThe payment method can aid in the recon and reporting processes.<p>\n\n> **Note:** If an transaction has not been received the user should perform a transaction_status call to determine the status of the transaction."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"2a08cf7a-68ff-4bbc-9035-5d13009bc4c0","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}]","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"c1895a0b-f272-4831-b91f-8fcb57b0da5e\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"9d538a3a-69bc-4fde-b5e8-f28ababed2f4\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    },\n    \"update_fields\": {\n        \"tx_status\": \"Received\",\n        \"payment_method\": [\n            {\n                \"type\": \"credit\",\n                \"amount\": 1000\n            },\n            {\n                \"type\": \"cash\",\n                \"amount\": 1000\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//confirmation","description":"Using the confirmation method the integrating party must update the status of the transaction. The updated status is used for recon purposes, and in many cases, for finalisation of the transaction such as for bill payments.<p>\n\nThe confirmation step is used to confirm whether a transaction has been successfully performed after the fact. The normal process is REQUEST, RECEIVE the token (for example). This confirmation step is one to let Finclude know that you have received the token (TOKEN RECEIVE CONFIRMED) or that you have received payment from you provider.<p>\n\n<b><i>From April 2022, /confirmation calls are compulsory for all vending transactions, especially so for bill payments.</i></b><p>\n\nThe tx_status can be updated to one of the following.<p>\n\n+ Received\n+ NotReceived<p>\n\nAn optional field payment_method can be used to specify the payment method used to perform the transaction. The possible methods are:<p>\n\n+ cash\n+ debit\n+ credit\n+ store\n+ gift\n+ combination\n+ other<p>\n\nThe payment method can aid in the recon and reporting processes.<p>\n\n> **Note:** If an transaction has not been received the user should perform a transaction_status call to determine the status of the transaction."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"5a0f6a82-cf4a-4f52-ae67-b2b839254d91","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"a06f8feb-5415-4fe0-a930-10ea45f71513\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"d3f706ca-8c58-49a6-83ea-2c9da22c6f5e\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    },\n    \"update_fields\": {\n        \"tx_status\": \"Received\",\n        \"payment_method\": [\n            {\n                \"type\": \"credit\",\n                \"amount\": 1000\n            },\n            {\n                \"type\": \"cash\",\n                \"amount\": 1000\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//confirmation"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"sit et dolore es\",\n        \"response_message\": \"magna\",\n        \"req_session_id\": \"amet tempor\",\n        \"req_device_id\": \"reprehenderit\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"cupidatat voluptate in\",\n        \"req_date_time\": \"ex nostrud sed est\"\n    },\n    \"error\": {\n        \"error_code\": \"cupidatat dolor tempor\",\n        \"error\": \"non dolore aliquip\",\n        \"error_description\": \"cillum in incididunt\"\n    }\n}"}],"_postman_id":"aa57e2f2-0ae6-4d2c-9bf1-3687eaa40d3e"},{"name":"reprint","event":[{"listen":"test","script":{"id":"82e57768-f69c-4cb4-935a-b7de38c5da31","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"99cb5c05-75c2-42a8-951c-ce54d200a853","exec":[""],"type":"text/javascript","packages":{}}}],"id":"a7b81734-223b-483f-80e8-c7bcc01987e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"627b5a66-7aad-4fc6-b7a7-2f5d1a0b03dc\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"a109c872-1c29-45cd-a2af-759da41e63fe\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"original_tx\": {\r\n        \"org_req_transaction_id\": \"{{org_req_transaction_id}}\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//reprint","description":"<p>Transaction detail can be retrieved by using the reprint functionality. The tx_log_id or the org_req_transaction_id of the original transaction is needed for this GET request.</p>\n<p>The reprint method will return the complete transaction response as it was provided with the original transaction.</p>\n<blockquote>\n<p><strong>Note:</strong> If requester_data is passed into the reprint request, the same requester_data will be returned in the reprint response. If no requester_data is passed into the request, then the requester data of the original transaction that is being reprinted (if requester data is available), will be returned in the reprint response.</p>\n</blockquote>\n<blockquote>\n<p><strong>Note:</strong> The JSON format of the reprint response will depend on the type of the original transaction that is being reprinted. The response for the reprint of a /pin_airtime_data transaction will be different to the response for a /prepaid_utility_sale transaction. To know what the response for a reprint request will look like, you have to look at the response structure of the transaction type that is being reprinted.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["reprint"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"aa07c9cd-7cc5-4dfa-a7f6-fea45bdd1539","name":"200: Successful voucher reprint","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"2222b934-8810-43ab-b1ef-0334d98f90b9\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"30549894-e169-43d8-8a3c-fc106e3eac24\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/reprint","description":"Transaction detail can be retrieved by using the reprint functionality. The tx_log_id or the org_req_transaction_id of the original transaction is needed for this GET request.\n\nThe reprint method will return the complete transaction response as it was provided with the original transaction.\n\n> **Note:** If requester_data is passed into the reprint request, the same requester_data will be returned in the reprint response. If no requester_data is passed into the request, then the requester data of the original transaction that is being reprinted (if requester data is available), will be returned in the reprint response.\n\n> **Note:** The JSON format of the reprint response will depend on the type of the original transaction that is being reprinted. The response for the reprint of a /pin_airtime_data transaction will be different to the response for a /prepaid_utility_sale transaction. To know what the response for a reprint request will look like, you have to look at the response structure of the transaction type that is being reprinted."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"97a5eb22-ba11-4336-8d1a-773e565d2105\",\n        \"req_device_id\": \"AB00932\",\n        \"req_store_id\": \"21398jsdf98\",\n        \"req_transaction_id\": \"a83f1f17-6e44-44e0-b922-5d72a92e162e\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"transaction_detail\": {\n        \"tx_date_time\": \"2024-01-04T18:25:14.591+02:00\",\n        \"tx_log_id\": 59017188,\n        \"tx_status\": \"DELIVERED\"\n    },\n    \"voucher_detail\": {\n        \"provider\": {\n            \"name\": \"Savannacom Water\",\n            \"vat_number\": \"\",\n            \"address\": \"\",\n            \"contact_number\": \"\"\n        },\n        \"description\": \"Savannacom Water Payment\",\n        \"transaction_id\": \"\",\n        \"receipt\": \"\",\n        \"account_detail\": {\n            \"account_holder\": \"\",\n            \"account_number\": \"12345678\",\n            \"address\": \"\"\n        }\n    },\n    \"transaction_value\": {\n        \"currency\": \"ZK\",\n        \"tendered_value\": \"1000\",\n        \"unit_cost\": 0,\n        \"tendered_breakdown\": []\n    },\n    \"previous_api_tx_object_id\": \"503\",\n    \"next_api_tx_object_id\": \"0\",\n    \"next_api_tx_object\": {},\n    \"data_reference_number\": \"345121\",\n    \"requester_data\": {\n        \"requester_field1\": \"123456\",\n        \"requester_field2\": \"abcd\"\n    },\n    \"print_output\": [\n        {\n            \"key\": \"Provider\",\n            \"value\": \"Savannacom Water\"\n        },\n        {\n            \"key\": \"Account number\",\n            \"value\": \"12345678\"\n        },\n        {\n            \"key\": \"Payment value\",\n            \"value\": \"ZK 10\"\n        },\n        {\n            \"key\": \"Reference#\",\n            \"value\": \"345121\"\n        }\n    ]\n}"},{"id":"e44d5fca-00e9-426b-a9f4-af2f2056bae4","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"5b172a95-60ca-4896-82f8-8d7c9f14c3f3\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"0b087d0a-7767-4d40-8638-5c2f7101c4d0\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//reprint","description":"Transaction detail can be retrieved by using the reprint functionality. The tx_log_id or the org_req_transaction_id of the original transaction is needed for this GET request.\n\nThe reprint method will return the complete transaction response as it was provided with the original transaction.\n\n> **Note:** If requester_data is passed into the reprint request, the same requester_data will be returned in the reprint response. If no requester_data is passed into the request, then the requester data of the original transaction that is being reprinted (if requester data is available), will be returned in the reprint response.\n\n> **Note:** The JSON format of the reprint response will depend on the type of the original transaction that is being reprinted. The response for the reprint of a /pin_airtime_data transaction will be different to the response for a /prepaid_utility_sale transaction. To know what the response for a reprint request will look like, you have to look at the response structure of the transaction type that is being reprinted."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"ada2f08e-cc6b-4db2-aaf1-882d91d48df9","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"c43c9d34-6a32-439e-b945-48549c7d33ed\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"e7b66118-c366-4c66-b85c-e1aa1c24e6ba\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"//reprint","description":"Transaction detail can be retrieved by using the reprint functionality. The tx_log_id or the org_req_transaction_id of the original transaction is needed for this GET request.\n\nThe reprint method will return the complete transaction response as it was provided with the original transaction.\n\n> **Note:** If requester_data is passed into the reprint request, the same requester_data will be returned in the reprint response. If no requester_data is passed into the request, then the requester data of the original transaction that is being reprinted (if requester data is available), will be returned in the reprint response.\n\n> **Note:** The JSON format of the reprint response will depend on the type of the original transaction that is being reprinted. The response for the reprint of a /pin_airtime_data transaction will be different to the response for a /prepaid_utility_sale transaction. To know what the response for a reprint request will look like, you have to look at the response structure of the transaction type that is being reprinted."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"fc1f509f-f901-496b-86e4-5bc7336e29cd","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n  \"id_token\": \"{{id_token}}\",\n  \"req_transaction_id\": \"{{your_unique_transaction_id}}\",\n  \"req_session_id\": \"d93cb012-ff0d-4231-9c19-0c8d3b2a97cc\",\n  \"req_device_id\": \"AB00932\",\n  \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n  \"req_platform\": \"POS\",\n  \"original_tx\": {\n    \"org_req_transaction_id\": \"{{org_req_transaction_id}}\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"//reprint","description":"Transaction detail can be retrieved by using the reprint functionality. The tx_log_id or the org_req_transaction_id of the original transaction is needed for this GET request.\n\nThe reprint method will return the complete transaction response as it was provided with the original transaction.\n\n> **Note:** If requester_data is passed into the reprint request, the same requester_data will be returned in the reprint response. If no requester_data is passed into the request, then the requester data of the original transaction that is being reprinted (if requester data is available), will be returned in the reprint response.\n\n> **Note:** The JSON format of the reprint response will depend on the type of the original transaction that is being reprinted. The response for the reprint of a /pin_airtime_data transaction will be different to the response for a /prepaid_utility_sale transaction. To know what the response for a reprint request will look like, you have to look at the response structure of the transaction type that is being reprinted."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"a7b81734-223b-483f-80e8-c7bcc01987e6"},{"name":"requestCancellation","event":[{"listen":"test","script":{"id":"8a0d02f8-bba7-4550-91cf-229f730fb91d","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"0ba8aa2a-2b97-409d-85a8-4de4ad9d4cae","exec":[""],"type":"text/javascript","packages":{}}}],"id":"8fd417cf-df83-4d63-9150-5251363a1433","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"req_session_id\": \"085f0166-4499-4754-8e57-590811bffb31\",\r\n    \"req_device_id\": \"AB00932\",\r\n    \"req_store_id\": \"21398jsdf98\",\r\n    \"req_transaction_id\": \"9e9aacab-aab6-417f-832f-7e0fed034bca\",\r\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\r\n    \"req_platform\": \"POS\",\r\n    \"original_tx\": {\r\n        \"org_req_transaction_id\": \"{{org_req_transaction_id}}\"\r\n    },\r\n    \"cancel_reason_code\": \"void\",\r\n    \"cancel_description\": \"The client has walked out\",\r\n    \"requester_data\": {\r\n        \"requester_field1\": \"abcd\",\r\n        \"requester_field2\": \"xyz\"\r\n    }\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"//requestCancellation","description":"<p>The cancellation of a transaction can be requested for some transaction objects. The method that will be used to grant a cancellation would depend on the transaction object, provider, timeframe and contracts between the different parties.</p><p></p>\n<p>The following reasons can be used:</p><p></p>\n<ul>\n<li>wrongInput: The parameters that were send have incorrect values.</li>\n<li>wrongObject: The incorrect transaction object were used.</li>\n<li>void: The client has walked out, are unable to pay or some other kind of human error. Void were done by the cashier</li>\n<li>autoVoid: The POS system initiated the void, the transaction have been suspended</li>\n<li>timeout: The transaction has timed out before the response were received.<p></p></li>\n</ul>\n<p>The reason description is optional and can be used to provide detail towards why the request are done.</p><p></p>\n<p><b>Different Cancel Types that can be returned in the response</b></p><p></p>\n<p><b>Manual</b> \nWhen the response return a manual cancel type it means that the cancellation involves some human intervention and would therefore not happen immediately. It will typically form part of recon process and might even involve some other form of communication between the requester and the Finclude Team.</p><p></p>\n<p><b>Automatic</b> \nThis type on cancelled transaction are cancelled and the transaction reversed by the system and are therefore completed as indicated by the Cancelled transaction status.</p><p></p>\n<p><b>Not Allowed</b> \nThis means the transaction cannot be cancelled and therefore no further action will be taken.</p><p></p>\n<blockquote>\n<p><strong>Note:</strong> This method allows for requesting cancellation, requesting does not mean that the cancellation were granted.      </p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["requestCancellation"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"e5dd28c3-b65e-4bdb-b23a-1c8fdb7b273a","name":"200: Cancellation request received","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"0f0578f9-8e5e-4155-9acf-4521653e414b\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"ef986d03-28f7-4f21-9d54-5d7558b15130\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    },\n    \"cancel_reason_code\": \"void\",\n    \"cancel_description\": \"The client has walked out\",\n    \"requester_data\": {\n        \"requester_field1\": \"abcd\",\n        \"requester_field2\": \"xyz\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/requestCancellation","description":"The cancellation of a transaction can be requested for some transaction objects. The method that will be used to grant a cancellation would depend on the transaction object, provider, timeframe and contracts between the different parties.<p>\n\nThe following reasons can be used:<p>\n\n+ wrongInput: The parameters that were send have incorrect values.\n+ wrongObject: The incorrect transaction object were used.\n+ void: The client has walked out, are unable to pay or some other kind of human error. Void were done by the cashier\n+ autoVoid: The POS system initiated the void, the transaction have been suspended\n+ timeout: The transaction has timed out before the response were received.<p>\n\nThe reason description is optional and can be used to provide detail towards why the request are done.<p>\n\n<b>Different Cancel Types that can be returned in the response</b><p>\n\n<b>Manual</b> \nWhen the response return a manual cancel type it means that the cancellation involves some human intervention and would therefore not happen immediately. It will typically form part of recon process and might even involve some other form of communication between the requester and the Finclude Team.<p>\n\n<b>Automatic</b> \nThis type on cancelled transaction are cancelled and the transaction reversed by the system and are therefore completed as indicated by the Cancelled transaction status.<p>\n\n<b>Not Allowed</b> \nThis means the transaction cannot be cancelled and therefore no further action will be taken.<p>\n\n> **Note:** This method allows for requesting cancellation, requesting does not mean that the cancellation were granted.      "},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"c8d77d87-32c2-4e7e-b24c-d5d67b3239f6\",\n        \"req_device_id\": \"AB00932\",\n        \"req_store_id\": \"21398jsdf98\",\n        \"req_transaction_id\": \"abb5b629-3a06-4e4c-a660-22c0e2460ca5\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"cancelDetail\": {\n        \"cancel_req_reason\": \"The client has walked out\",\n        \"tx_status\": \"REQUESTCANCEL\",\n        \"cancel_type\": \"Manual\",\n        \"cancel_message\": \"Manual cancellation takes time, a notification would be send when it is approved\"\n    },\n    \"requester_data\": {\n        \"requester_field1\": \"abcd\",\n        \"requester_field2\": \"xyz\"\n    }\n}"},{"id":"9f3b7cce-d636-4c26-9afb-9cac7a20f703","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"75420e02-ea7b-4f8a-b774-7daf47bac340\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"79afd6ae-9459-496c-822d-4d0151f8b28a\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n    },\n    \"cancel_reason_code\": \"void\",\n    \"cancel_description\": \"The client has walked out\",\n    \"requester_data\": {\n        \"requester_field1\": \"abcd\",\n        \"requester_field2\": \"xyz\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"//requestCancellation","description":"The cancellation of a transaction can be requested for some transaction objects. The method that will be used to grant a cancellation would depend on the transaction object, provider, timeframe and contracts between the different parties.<p>\n\nThe following reasons can be used:<p>\n\n+ wrongInput: The parameters that were send have incorrect values.\n+ wrongObject: The incorrect transaction object were used.\n+ void: The client has walked out, are unable to pay or some other kind of human error. Void were done by the cashier\n+ autoVoid: The POS system initiated the void, the transaction have been suspended\n+ timeout: The transaction has timed out before the response were received.<p>\n\nThe reason description is optional and can be used to provide detail towards why the request are done.<p>\n\n<b>Different Cancel Types that can be returned in the response</b><p>\n\n<b>Manual</b> \nWhen the response return a manual cancel type it means that the cancellation involves some human intervention and would therefore not happen immediately. It will typically form part of recon process and might even involve some other form of communication between the requester and the Finclude Team.<p>\n\n<b>Automatic</b> \nThis type on cancelled transaction are cancelled and the transaction reversed by the system and are therefore completed as indicated by the Cancelled transaction status.<p>\n\n<b>Not Allowed</b> \nThis means the transaction cannot be cancelled and therefore no further action will be taken.<p>\n\n> **Note:** This method allows for requesting cancellation, requesting does not mean that the cancellation were granted.      "},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"400\",\n        \"response_message\": \"Bad Request\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"400008\",\n        \"error\": \"invalid_request\",\n        \"error_description\": \"Missing parameter value\"\n    }\n}"},{"id":"871b9e29-e41e-49ce-931c-5a3d5f57d77a","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"3714473e-63ab-44d5-8372-f8506962dc34\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"5e083573-4d5d-4118-91ce-8e3863168bf0\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    },\n    \"cancel_reason_code\": \"void\",\n    \"cancel_description\": \"The client has walked out\",\n    \"requester_data\": {\n        \"requester_field1\": \"abcd\",\n        \"requester_field2\": \"xyz\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"//requestCancellation","description":"The cancellation of a transaction can be requested for some transaction objects. The method that will be used to grant a cancellation would depend on the transaction object, provider, timeframe and contracts between the different parties.<p>\n\nThe following reasons can be used:<p>\n\n+ wrongInput: The parameters that were send have incorrect values.\n+ wrongObject: The incorrect transaction object were used.\n+ void: The client has walked out, are unable to pay or some other kind of human error. Void were done by the cashier\n+ autoVoid: The POS system initiated the void, the transaction have been suspended\n+ timeout: The transaction has timed out before the response were received.<p>\n\nThe reason description is optional and can be used to provide detail towards why the request are done.<p>\n\n<b>Different Cancel Types that can be returned in the response</b><p>\n\n<b>Manual</b> \nWhen the response return a manual cancel type it means that the cancellation involves some human intervention and would therefore not happen immediately. It will typically form part of recon process and might even involve some other form of communication between the requester and the Finclude Team.<p>\n\n<b>Automatic</b> \nThis type on cancelled transaction are cancelled and the transaction reversed by the system and are therefore completed as indicated by the Cancelled transaction status.<p>\n\n<b>Not Allowed</b> \nThis means the transaction cannot be cancelled and therefore no further action will be taken.<p>\n\n> **Note:** This method allows for requesting cancellation, requesting does not mean that the cancellation were granted.      "},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"401\",\n        \"response_message\": \"Authorization failed\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"401005\",\n        \"error\": \"unauthorized_client\",\n        \"error_description\": \"Invalid 'authorization token'\"\n    }\n}"},{"id":"0f763dd7-f73f-4310-9f0b-849e76c39c65","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"description":"{{ignore_header}}","key":"x-mock-response-code","value":"200"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"059758a2-8cea-437c-9dd0-02a69cfdc650\",\n    \"req_device_id\": \"AB00932\",\n    \"req_store_id\": \"21398jsdf98\",\n    \"req_transaction_id\": \"4e7a539f-8cd2-4d82-9720-585574497bbb\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"original_tx\": {\n        \"org_req_transaction_id\": \"16484647844\"\n    },\n    \"cancel_reason_code\": \"void\",\n    \"cancel_description\": \"The client has walked out\",\n    \"requester_data\": {\n        \"requester_field1\": \"abcd\",\n        \"requester_field2\": \"xyz\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"//requestCancellation","description":"The cancellation of a transaction can be requested for some transaction objects. The method that will be used to grant a cancellation would depend on the transaction object, provider, timeframe and contracts between the different parties.<p>\n\nThe following reasons can be used:<p>\n\n+ wrongInput: The parameters that were send have incorrect values.\n+ wrongObject: The incorrect transaction object were used.\n+ void: The client has walked out, are unable to pay or some other kind of human error. Void were done by the cashier\n+ autoVoid: The POS system initiated the void, the transaction have been suspended\n+ timeout: The transaction has timed out before the response were received.<p>\n\nThe reason description is optional and can be used to provide detail towards why the request are done.<p>\n\n<b>Different Cancel Types that can be returned in the response</b><p>\n\n<b>Manual</b> \nWhen the response return a manual cancel type it means that the cancellation involves some human intervention and would therefore not happen immediately. It will typically form part of recon process and might even involve some other form of communication between the requester and the Finclude Team.<p>\n\n<b>Automatic</b> \nThis type on cancelled transaction are cancelled and the transaction reversed by the system and are therefore completed as indicated by the Cancelled transaction status.<p>\n\n<b>Not Allowed</b> \nThis means the transaction cannot be cancelled and therefore no further action will be taken.<p>\n\n> **Note:** This method allows for requesting cancellation, requesting does not mean that the cancellation were granted.      "},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": \"500\",\n        \"response_message\": \"Internal Server Error\",\n        \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n        \"req_device_id\": \"E00932\",\n        \"req_store_id\": \"store001\",\n        \"req_transaction_id\": \"40569911\",\n        \"req_date_time\": \"2020-12-10 07:41:30.001\"\n    },\n    \"error\": {\n        \"error_code\": \"500000\",\n        \"error\": \"internal_server\",\n        \"error_description\": \"The server has experienced an error.\"\n    }\n}"}],"_postman_id":"8fd417cf-df83-4d63-9150-5251363a1433"},{"name":"paygate/geturl","id":"f5d467ee-b254-49bf-86e0-9cdd6ccd76c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"758fad6e-c522-4e8c-8f17-75b1ddb7e22d\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"e8fd7e21-2d4d-4e40-b2e4-2e02b46c118a\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"parameters\": {\n        \"api_tx_object_id\": 6,\n        \"transaction_value\": 12345,\n        \"redirect_URL\": \"https://www.mydomain.com/payment_response_html\",\n        \"callback_API_URL\": \"https://www.mydomain.com/payment_response_api\"\n    },\n    \"requester_data\": {\n        \"customer_id\": \"123456\",\n        \"account\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//paygate/getURL","description":"<p>Whenever calling paygate/payUI, a key needs to be passed in on the URL as a parameter. Calling /paygate/getURL allows you to retrieve that key. Note that the key will change every time /paygate/getURL is called. The key is also time stamped and valid for only a couple of minutes.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["paygate","getURL"],"host":["/"],"query":[],"variable":[]}},"response":[{"id":"70a09d80-14e2-4b5d-9435-6eb245e1984c","name":"200: Successful URL key retrieval","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"3337e2eb-31b1-403c-b24d-adbcfa405297\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"7087cb74-9f02-48e6-8ef0-c4dd68241a7d\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"parameters\": {\n        \"api_tx_object_id\": 6,\n        \"transaction_value\": 12345,\n        \"redirect_URL\": \"https://www.mydomain.com/payment_response_html\",\n        \"callback_API_URL\": \"https://www.mydomain.com/payment_response_api\"\n    },\n    \"requester_data\": {\n        \"customer_id\": \"123456\",\n        \"account\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/paygate/getURL"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"meta\": {\n        \"response_code\": 0,\n        \"response_message\": \"SUCCESS\",\n        \"req_session_id\": \"e3338a0a-ea76-4cc5-980f-032fb8bc423c\",\n        \"req_device_id\": \"AB00932\",\n        \"req_transaction_id\": \"56242ecd-7617-429d-bfef-0e2710361d07\",\n        \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n        \"req_platform\": \"POS\"\n    },\n    \"key\": \"lL%2FIQJfcBWGn7GPnS4eaBwRTe5tfo87JoNBdmyJdEpklozL6yBgInfe%2Fa31bOkkJz%2BXeFvGCaHUAtTCsALMaChs7RnaSs4UdyKqgJCAARMkXrqMifsMU5JpEObxZkHw6WJHuBrPmQdenP%2BKFzjB%2B%2BYrIIpN2vpKtbG1HI9EqbGWWVvNu9K7Pnjo28NBsKk5XsZaUkvDbYG8pzBXWJuKHntBe8jMdiuR3qWgrFbTATiPPo6oHUnTwsz4zIkhNx4z0gKrZA6j2DSlfsCH0D%2BQwtuxoYznL9ES5kBJqbCqfkUc6Kf8IHQ3VSU%2FfrzmF%2BMZQX9BNv91As91R%2BruMBE25rZ5PiQruJ6PjDSTBP9rKWhNX0pK8pTIlvbOawiHHmbWXadD%2BBNC6%2FsrBCnatvoj%2BWdPc5TGU6wiKdvIwOHfW8sHoF5HMd2AUj7qA6tZPKkG65xxXDbhzoH4yigdxAi7gTUP9dhiUST5LK2I3cEZuaC6wPJ35vlXO4jUDln%2FyxCBcZ3JLqf4SWMmIhZFPu7TxZhfk9LfK8OGucLnTEVpIGX9YrJZgNPH0ks2Y3SdQo6T%2Bi4MIGa7Jd4rK5I6HsLPbSaYnvKOkdgwb4e8vx2G53ZuMXJ99YYWxVpAtlP7fdlWH%2Fo5s1Qt3Tb5pTeW4yPJ5sThwcrKPAxpzkyiakG711Ydw3jF3QwxUouIRvGwEDr4z0Bf1fE29DQBoMaZGAP5nX5p5BV1JUmNs%2BpXLxwVcKh1RYDqmbb%2F%2BmSRxav9c%2B962xG7YBV6l2ZLu0F5UJrNt6%2B124AJ4Viz0LiReKHluEu%2FGxKveCPLwyiuNc5tkJzwhHMnoPvW1otEwI%2FaLGe0MSfU%2FPwOcKh%2Bi9xjWiWKG57118h%2FFtVHU9f6ERVNQpj1EBp0WUsp%2Fw3w3QCXq1RHH497E02WxhzZmcHp1Mfs%2FWi06BMtJMGyBKO1wZMBByazk9SZaN7gWbH%2FLAJ5ijowb0hD%2FdQznvtV3YuyR76rRQxMU4eZmcba7Qm8Ra2gh%2BqPmxSVJgJxC85nQnZ4xRDSMcdLhPliSvf6hVCWN462PKOl3kNgcs%2FeNy9ADv2xWRokE7zI4sTcef0kPjwqBKkWbucHsCk9vMLQGp3L0biAv76t9hToH9KZOzchCRHOK7FYV7OWs5nHWTwpF3qqDo%2BisPzfJ%2B%2FCfKwTcLH3mBxjUKOhsX425jewvMgSW%2FULC5M72iPO5Di8Kx4tarqWPsNn8XPOxPNVIA313KIsDMIsNBEk7TnSX4VNqNBc8bBkc89s%2B1ZNC1d3vSMdQ7lctwgaDmunMZVHIEmpBsvy9QPqZh8yUCCvqHbYynWll%2FSCDE4lKzb%2FvRJXkl9%2FNNjacE8svDg%3D%3D\",\n    \"requester_data\": {\n        \"customer_id\": \"123456\",\n        \"account\": \"abcd\"\n    },\n    \"submit_key\": \"cs6p5GBN4zxz0IYLVi7jN22shQ6ec1O99r01s0DCggdoeHNiF/yGHFyr5Srw2SX50CHY4jowyAFAAVLMn6AUVW/F6oPIcWrYEo3zH1hiegFa7YauNjXKDLi56/j4wZwsrjcEUL9AV2DlsCoVJQ4rOrh/AiFromFcVDdIp/BYH78o6VKbhVvxEkTjp12/ay/pX4kXAvgCVx1Y+EZjwEuwtDlCA4goPSMV1jap9VIL8fZTcUtuVDPDRQjocLyEVQvtjYzHvD3dYbuHqxFJFUZhGuHjALLloCmcq7nHXDdm9w7mgs9qkb71p/3p+vLagBB5a9Jp5+iohyZ7axzXWSCzjQ==\"\n}"},{"id":"f86e2027-7d40-48b0-9017-d08bdb497bd5","name":"400 Error: Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"459cc9d2-8177-4611-94b0-f71c68954c58\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"5f4f53bd-4790-4987-b8a8-93772fb5fd73\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"parameters\": {\n        \"api_tx_object_id\": 6,\n        \"redirect_URL\": \"https://www.mydomain.com/payment_response_html\",\n        \"callback_API_URL\": \"https://www.mydomain.com/payment_response_api\"\n    },\n    \"requester_data\": {\n        \"customer_id\": \"123456\",\n        \"account\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//paygate/getURL"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n \"meta\": {\n  \"response_code\": \"400\",\n  \"response_message\": \"Bad Request\",\n  \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n  \"req_device_id\": \"E00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"40569911\",\n  \"req_date_time\": \"2020-12-10 07:41:30.001\"\n },\n \"error\": {\n  \"error_code\": \"400008\",\n  \"error\": \"invalid_request\",\n  \"error_description\": \"Missing parameter value\"\n }\n}"},{"id":"2ce51000-eb69-4f70-a027-f6ca989bdb05","name":"401 Error: Unauthorized","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"0ffc8f03-1eb7-4fe9-b9df-f0fb65343a2f\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"08edece1-8a4d-4358-950b-9fef139e549d\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"parameters\": {\n        \"api_tx_object_id\": 6,\n        \"transaction_value\": 12345,\n        \"redirect_URL\": \"https://www.mydomain.com/payment_response_html\",\n        \"callback_API_URL\": \"https://www.mydomain.com/payment_response_api\"\n    },\n    \"requester_data\": {\n        \"customer_id\": \"123456\",\n        \"account\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//paygate/getURL"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n \"meta\": {\n  \"response_code\": \"401\",\n  \"response_message\": \"Authorization failed\",\n  \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n  \"req_device_id\": \"E00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"40569911\",\n  \"req_date_time\": \"2020-12-10 07:41:30.001\"\n },\n \"error\": {\n  \"error_code\": \"401005\",\n  \"error\": \"unauthorized_client\",\n  \"error_description\": \"Invalid 'authorization token'\"\n }\n}"},{"id":"4b84ce26-559a-4739-ae09-a20d1f6b2788","name":"500 Error: Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"body":{"mode":"raw","raw":"{\n    \"req_session_id\": \"bafb637f-4b3f-4035-aa83-9c197537d02f\",\n    \"req_device_id\": \"AB00932\",\n    \"req_transaction_id\": \"94c90b4c-42ae-4a69-8f46-e28395adb885\",\n    \"req_date_time\": \"2020-12-10T12:41:00.001+02:00\",\n    \"req_platform\": \"POS\",\n    \"parameters\": {\n        \"api_tx_object_id\": 6,\n        \"transaction_value\": 12345,\n        \"redirect_URL\": \"https://www.mydomain.com/payment_response_html\",\n        \"callback_API_URL\": \"https://www.mydomain.com/payment_response_api\"\n    },\n    \"requester_data\": {\n        \"customer_id\": \"123456\",\n        \"account\": \"abcd\"\n    }\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"//paygate/getURL"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n \"meta\": {\n  \"response_code\": \"500\",\n  \"response_message\": \"Internal Server Error\",\n  \"req_session_id\": \"befab77d-b6df-3974-c987-3b896ec534635\",\n  \"req_device_id\": \"E00932\",\n  \"req_store_id\": \"store001\",\n  \"req_transaction_id\": \"40569911\",\n  \"req_date_time\": \"2020-12-10 07:41:30.001\"\n },\n \"error\": {\n  \"error_code\": \"500000\",\n  \"error\": \"internal_server\",\n  \"error_description\": \"The server has experienced an error.\"\n }\n}"}],"_postman_id":"f5d467ee-b254-49bf-86e0-9cdd6ccd76c0"},{"name":"paygate/payUI","id":"88a94180-060d-4068-9668-b33869194f42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text/html"}],"url":"//paygate/payUI?key=<string>","description":"<p>Request a HTML UI that will present a user with a method to make an alternative form of payment such as a Mobile Wallet payment or redeeming a voucher.</p>\n<p>If a redirect_URL or a callback_API_URL was specified when the key was retrieved (paygate/getURL), a JSON response will be sent to these when the transaction is completed. \nNote that the format of the JSON will depend on the specific payment product that was used. For example, if the payment type was a Mobile Wallet payment, the JSON response will be as it is described for the /mobile_pay endpoint. \nIf on the other hand, the type of payment was redeeming a voucher, the JSON response will be in the format that is specified for the endpoint that deals with voucher redeeming.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"255ff211-3d7b-424f-852d-48e19328ebdb","id":"255ff211-3d7b-424f-852d-48e19328ebdb","name":"Finclude B2B API","type":"collection"}},"urlObject":{"path":["paygate","payUI"],"host":["/"],"query":[{"description":{"content":"<p>(Required) The key received in the response from calling /paygate/getURL.</p>\n","type":"text/plain"},"key":"key","value":"<string>"}],"variable":[]}},"response":[{"id":"da9018e9-46df-4300-b980-6847480a62f1","name":"200 Successful UI HTML page retrieval","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text/html"},{"description":"Added as a part of security scheme: bearer","key":"Authorization","value":"Bearer <token>"}],"url":{"raw":"https://europe-west2-development-191509.cloudfunctions.net/babelfish/paygate/payUI?key=<string>","protocol":"https","host":["europe-west2-development-191509","cloudfunctions","net"],"path":["babelfish","paygate","payUI"],"query":[{"description":"(Required) The key received in the response from calling /paygate/getURL.","key":"key","value":"<string>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/html"}],"cookie":[],"responseTime":null,"body":"<string>"}],"_postman_id":"88a94180-060d-4068-9668-b33869194f42"}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]}},"event":[{"listen":"prerequest","script":{"id":"9dc0fcd9-8394-4794-947b-c58a48949b70","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"447d850e-e22e-4741-84bc-7f86d739208b","type":"text/javascript","exec":[""]}}],"variable":[{"id":"8a5db48c-111b-4c03-abf5-b10638263ecd","key":"baseUrl","value":"/","type":"string"}]}