esr-code-line
Version:
A code line generator for orange payment slips used in Switzerland
63 lines (42 loc) • 3.46 kB
Markdown
# Code Line Generator for Orange Payment Slips used in Switzerland
This package contains utility functions for generating the code line on the orange payment slips used in Switzerland. The code is shown on the bottom right of the slip inside the white area:

| Statements | Branches | Functions | Lines |
| --------------------------- | ----------------------- | ------------------------- | -------------------- |
|  |  |  |  |
## Specification
The slip is known under these different names and abbreviations depending on the language:
- English: _Orange inpayment slip with reference number (ISR)_
- German: _Oranger Einzahlungsschein mit Referenznummer (ESR)_
- French: _Bulletin de versement orange avec numéro de référence (BVR)_
- Italian: _Polizza di versamento arancione con numero di riferimento (PVR)_
The technical specification is from chapter 5 of the [Postfinance manual](https://www.postfinance.ch/content/dam/pfch/doc/cust/download/inpayslip_isr_man_en.pdf#page=23).
Please note that the **QR-Bill replaces this standard** (see [paymentstandards.ch](https://www.paymentstandards.ch/)). Depending on the project it may be viable to skip ahead to this newer one.
## Installation
```bash
npm install esr-code-line
```
## Usage
The code line consists of information already on the payment slip, except for the slip type:

The parameters are:
-  `slipType` a code defining the type of the slip. E.g. "01" for a ISR in CHF. See section 5.1 of the [manual](https://www.postfinance.ch/content/dam/pfch/doc/cust/download/inpayslip_isr_man_en.pdf#page=26).
-  `amountFrancsOrEuros` the main currency unit in either CHF or EUR.
-  `amountRappenOrCents` the fractional currency unit in Rappen or Cents.
-  `referenceNumber` the reference number with or without spaces.
-  `customerNumber` the ISR customer number in CHF or EUR. Formatted VV-XXX-C. See section 5.1 of the [manual](https://www.postfinance.ch/content/dam/pfch/doc/cust/download/inpayslip_isr_man_en.pdf#page=26).
```js
const { codeLine } = require("esr-code-line");
const code = codeLine({
slipType: "01",
amountFrancsOrEuros: "3949",
amountRappenOrCents: "75",
referenceNumber: "12 00000 00000 23447 89432 16899",
customerNumber: "01-162-8",
}); // returns "0100003949753>120000000000234478943216899+ 010001628>"
```
The codeLine function does not add check digits to the reference or customer numbers. They can however be added using the `attachCheckDigit` function included in the module.
```js
const { attachCheckDigit } = require("esr-code-line");
attachCheckDigit("04"); // returns "042"
```