Integrate our products into your software. Let's make payment happen together!
Look at all the possibilitiesIn Belgium, there is a phenomenon that originally goes by the name of meal voucher cards but nowadays known as electronic vouchers. A bearer of this card can use it to pay for products that are in specific categories. These cards are issued by Pluxee, Monizze and Edenred.
Voucher cards (transactions) refer to prepaid or gift cards that can be redeemed for specific products, services, or discounts. Accepting vouchers means the POS must restrict the products in the Tender to what is allowed for the applicable voucher. That means the normal payments may only be done with regular debit and credit cards but not with vouchers.
Today’s electronic vouchers contain multiple purses/wallets (accounts), namely a wallet for:
These wallets, all present on one card, are listed in the table below. A wallet may only be used for products that fit into the category of that wallet.
To access a specific purse or product code, the element acquirerDiscretionaryData must contain the corresponding string. When the element acquirerDiscretionaryData is not present or does not contain a correct value, the purse accessed will be the Meal Voucher (Product code 01).
Product Code | Product Description | Value |
---|---|---|
01 | Lunch Pass - Meal Vouchers - lunch-Voucher | 200001# |
02 | Eco Pass - Eco Cheques - eco-Voucher | 200002# |
03 | Cadeau Pass - Gift Vouchers - cadeau-Voucher | 200003# |
04 | Sport Pass - Culture Vouchers - sport culture-Voucher | 200004# |
05 | Book Pass - Book Vouchers - book-Voucher | 200005# |
06 | Transport Pass - transport-Voucher | 200006# |
07 | Consumption Vouchers | 200007# |
201 | Meal Vouchers LU | 200201# |
203 | Gift Vouchers LU | 200203# |
Depending on the type of business a shop does/articles sold, it may or may not use the Purse/Product code listed above.
Accepting vouchers means the POS must restrict the products in the Tender to what is allowed for the applicable voucher. That means the normal payments my only be done with regular debit and credit cards but not with vouchers.
To enable the restriction to regular debit and credit cards the POS must first know which brands are active on the terminal. It’s possible to receive the active brands via Get Card Circuits documented here.
To restrict the payment to debit and credit cards or in case the payment must be restricted to voucher cards the element ‘cardCircuits’ must be used. More information on how to do that can be found on this page.
The issuers of the Electronic Mealvouchers in Belgium are:
The issuers of Electronic Mealvouchers in Luxembourg are:
The respective cardCircuits for these brands are:
Card Brand | Card Circuit |
---|---|
Pluxee | SODX |
Monizze | EDRD |
Edenred | PAYF |
When the POS accepts Electronic Meal vouchers, it could be that there are insufficient funds on the card. The voucher cards may use partial approval meaning that only a part is paid.
Therefore the supportOfPartialApproval(true) must be set in the payment, which also is show in the next example.
The following code snippet demonstrates a meal voucher transaction where partial approval is allowed.
createTerminal(ExternalTerminal.TerminalType.OPI_NL); PaymentApi paymentService = new PaymentService(); PaymentDelegate paymentDelegate = new PaymentDelegate() { @Override public void onPaymentSuccess(PaymentResult result) { // The payment is completed successful! // The paymentResult contains all information about the transaction } @Override public void onError(Error error) { // The payment failed // The Error object contains information about what went wrong } }; CardCircuitCollectionRequest cardCircuitCollectionRequest = CardCircuitCollectionRequest.builder().cardCircuits(List.of("SODX", "EDRD", "PAYF")).build(); Payment payment = Payment .builder() .type(Payment.Type.SALE) .amount(new Money(amount, Currency.getInstance("EUR"))) .cardCircuitCollectionRequest(cardCircuitCollectionRequest) .supportOfPartialApproval(true) .build(); paymentService.payment(terminal, payment, delegate);