{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"5c9b7d06-e308-4458-b88b-70653f22f49a","name":"Cashier.cloud","description":"### Version 1.0.0\n\n\n---\n\n<br/>\n<br/>\n\n#### Manufacturer\n### Pincho Nation AB\n\n**cashier.cloud@pinchos.se**\n\n*© Pincho Nation AB 2019*\n\n<br/>\n<br/>\n\n---\n\n## Terminology\n\n**A register** - The entity that transactions are registered to, one register per registration unit.\n\n**A purchase transaction** - Mainly consists of order lines and payment methods, the information found on a receipt.\n\n**A refund transaction** - Reverses a selection of order lines and payment amounts on a purchase transaction.\n\n**A training transaction** - Used for practice, but does not affect the registers purchase and refund information.\n\n**A proforma** - Validate a transaction before purchase or refund.\n\n**A receipt** - Each transaction has an electronic receipt created on registration. One receipt copy may be printed.\n\n**An X report** - A summary of registrations since the last Z report, get a view of how much we have sold today.\n\n**A Z report** - A summary of registrations since the last Z report, typically run daily after at closing time.\n\n## What is it?\n\n**A network based cashier system** - All functionality of the system is accessible through the network functions specified in this document. It is up a 3rd party to communicate with it, a straight forward procedure since the system conforms to a (REST) standard. The system is hosted by Pincho Nation AB and is proprietary.\n\n**Complience With Norwegian Law** - The cashier is in compliance with Norwegian law for Norwegian registers, as specified by [Kassasystemforskrifta 2015-12-18-1616](https://lovdata.no/dokument/SF/forskrift/2015-12-18-1616). \n\n> **SAF-T** - The transactions are digitally signed using a cryptographic chain based on the Norwegian SAF-T standard and is by design without gaps. This makes it impossible to tamper with the data, without detection.\n\n> **SAF-T Report** - The integrity of the transactions is inspected via a report of the chryptographic chain.\n\n**Complience With Swedish Law** - The cashier is in full compliance with Swedish law for Swedish registers, as specified by [SKVFS2014-09](https://www.skatteverket.se/download/18.3aa8c78a1466c5845874ba/1402328477762/SKVFS2014-09.pdf)\n\n> **Control Unit** - Cashier.cloud uses Axena Cloud ContolUnit and all transactions are assigned a unique control unit id from Axena upon registration.\n\n**Motivation** - The main motivation of the system is to service the businesses of Pincho Nation AB, where the majority of the transactions are registered from an app on the guests phone.\nThe corresponding receipts are made available through the app as well.\n\nPincho Nation AB also provides a client for the restaurant personnel for managing manual transactions and reports.\n\nTo evaluate the system in a sandboxed environment, send a request by filling out this [form](https://forms.gle/k9yoafBiw1urfepb6)\n\n## Changelog\n- 1.0.0 First version - 20191016\n\n<br/>\n<br/>\n\n---\n\n## Tests\n\nThe testing procedure consists of two steps, an automatic test and a manual acceptance test.\n\n**Acceptance Tests** - A set of manual test steps are performed on a staging environment, all test must be passing in order for the version to be deployed to production.\n - [Manual Acceptance Spec](https://static.pinchos.se/cashier.cloud/spec/Cashier.cloud+Manual+Test+Procedure.pdf)\n\n**Automatic Tests** - Each testable paragraph in SKVFS 2014:9 has been programmatically tested and passed by this system.\nThese tests are run before each production release, and a new release cannot be deployed with failing tests.\n - [SKVFS 2014.9 Test Spec](https://static.pinchos.se/cashier.cloud/SKVFS2014.9.spec.js.html) (The actual source code)\n\n### Test results\n\n  - [Manual Acceptance Result](https://static.pinchos.se/cashier.cloud/v1.0.0/Cashier.cloud+Manual+Test+Results+-+20191015.pdf)\n  - [Norwegian Test Results](https://cashier.pinchos.se/public/html-reports/norwegian.html)\n  - [SKVFS 2014.9 Test Results](https://cashier.pinchos.se/public/html-reports/skvfs.html)\n\n\n<br/>\n<br/>\n\n---\n\n<br/>\n<br/>\n\n\n*Below follows a technical specification of the API in detail.*\n\n\n\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"1640669","team":166699,"collectionId":"5c9b7d06-e308-4458-b88b-70653f22f49a","publishedId":"SVmzvwyJ","public":true,"publicUrl":"https://docs.cashier.cloud","privateUrl":"https://go.postman.co/documentation/1640669-5c9b7d06-e308-4458-b88b-70653f22f49a","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","version":"8.11.4","publishDate":"2019-09-25T07:34:05.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/b7e8fdf017671d92f8e4521921e4514cb2564a4af0af161c6642a872e40360d1","favicon":"https://cashier.cloud/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs.cashier.cloud/view/metadata/SVmzvwyJ"}