Pluxee Meal Voucher Billing
How to implement daily reimbursement notes, B2M transactions, and 4C commission billing using Billerang.
Business Model
Pluxee-style meal voucher platforms serve two sides:
Employer Side
| Component | Description |
|---|---|
| Platform fee | Monthly, tiered by employee count |
| Card issuance | One-time per card |
| 4C Commission | 4% of monthly face-value top-ups |
Merchant Side
| Component | Description |
|---|---|
| Daily reimbursement | Face value of accepted meal transactions |
| Merchant service fee | Monthly fixed fee |
Catalog Structure
Step-by-Step Implementation
1. Employer Platform Fee (Tiered by Employee Count)
POST /api/rest/v2/chargeTemplate/RC_PLATFORM_FEE
{
"chargeType": "RECURRING",
"description": "Monthly platform fee by employee count",
"calendar": "MONTHLY",
"applyInAdvance": true,
"invoiceSubCategoryCode": "ISC_PLATFORM",
"taxClassCode": "TAX_SERVICES",
"pricing": {
"mode": "MATRIX",
"baseCurrency": "EUR",
"dimensions": [
{ "code": "EMPLOYEE_COUNT", "type": "Range_Numeric", "label": "Number of Employees" }
],
"rows": [
{
"priority": 1,
"description": "1-50 employees",
"values": [{ "dimensionCode": "EMPLOYEE_COUNT", "fromDoubleValue": 1, "toDoubleValue": 50 }],
"price": 2.50
},
{
"priority": 2,
"description": "51-200 employees",
"values": [{ "dimensionCode": "EMPLOYEE_COUNT", "fromDoubleValue": 51, "toDoubleValue": 200 }],
"price": 2.00
},
{
"priority": 3,
"description": "201+ employees",
"values": [{ "dimensionCode": "EMPLOYEE_COUNT", "fromDoubleValue": 201, "toDoubleValue": null }],
"price": 1.50
}
],
"autoPublish": true
}
}
2. Card Issuance One-Shot
POST /api/rest/v2/chargeTemplate/OS_CARD_ISSUANCE
{
"chargeType": "SUBSCRIPTION",
"description": "Card issuance fee per card",
"immediateInvoicing": true,
"invoiceSubCategoryCode": "ISC_SETUP",
"taxClassCode": "TAX_SERVICES",
"pricing": {
"mode": "FLAT",
"baseCurrency": "EUR",
"price": 5.00,
"autoPublish": true
}
}
3. 4C Commission (4% of Face Value)
POST /api/rest/v2/chargeTemplate/UC_4C_COMMISSION
{
"chargeType": "USAGE",
"description": "4% commission on face-value top-ups",
"invoiceSubCategoryCode": "ISC_COMMISSION",
"taxClassCode": "TAX_SERVICES",
"filterExpression": "#{edr.parameter1 == 'FACE_VALUE_TOPUP'}",
"pricing": {
"mode": "FORMULA",
"baseCurrency": "EUR",
"priceFormula": "#{walletOperation.quantity * 0.04}",
"autoPublish": true
}
}
4. Merchant Daily Reimbursement
The key feature is multi-instance matching -- each merchant has their own subscription, and CDRs are routed to the correct merchant via filterExpression:
POST /api/rest/v2/chargeTemplate/UC_REIMBURSEMENT
{
"chargeType": "USAGE",
"description": "Daily merchant reimbursement",
"invoiceSubCategoryCode": "ISC_REIMBURSEMENT",
"taxClassCode": "TAX_EXEMPT",
"filterExpression": "#{edr.parameter1 == serviceInstance.getCfValue('MERCHANT_ID')}",
"priority": 1,
"pricing": {
"mode": "PER_UNIT",
"baseCurrency": "EUR",
"price": 1.00,
"autoPublish": true
}
}
How multi-instance matching works:
- Each merchant subscription has a custom field
MERCHANT_ID - When a CDR arrives with
parameter1 = "MERCHANT_12345", the filter expression matches it to the subscription whereMERCHANT_ID = "MERCHANT_12345" - See Multi-Instance Matching for details
5. Merchant Monthly Service Fee
POST /api/rest/v2/chargeTemplate/RC_MERCHANT_FEE
{
"chargeType": "RECURRING",
"description": "Monthly merchant service fee",
"calendar": "MONTHLY",
"applyInAdvance": true,
"invoiceSubCategoryCode": "ISC_SERVICE",
"pricing": {
"mode": "FLAT",
"baseCurrency": "EUR",
"price": 15.00,
"autoPublish": true
}
}
6. Create Products and Offers
# Employer products
POST /api/rest/catalog/products
{ "code": "EMPLOYER_PLATFORM", "description": "Employer platform access" }
POST /api/rest/catalog/products/EMPLOYER_PLATFORM/addCharges
{ "productCharges": [
{ "chargeTemplateCode": "RC_PLATFORM_FEE" },
{ "chargeTemplateCode": "OS_CARD_ISSUANCE" }
]}
POST /api/rest/catalog/products
{ "code": "FACE_VALUE_COMMISSION", "description": "Face value commission tracking" }
POST /api/rest/catalog/products/FACE_VALUE_COMMISSION/addCharges
{ "productCharges": [{ "chargeTemplateCode": "UC_4C_COMMISSION" }] }
# Employer offer
POST /api/rest/catalog/offerTemplate/createOrUpdate
{
"code": "PLUXEE_EMPLOYER",
"description": "Pluxee Employer Package",
"offerProductTemplates": [
{ "productTemplate": { "code": "EMPLOYER_PLATFORM" }, "mandatory": true },
{ "productTemplate": { "code": "FACE_VALUE_COMMISSION" }, "mandatory": true }
]
}
# Merchant products
POST /api/rest/catalog/products
{ "code": "DAILY_REIMBURSEMENT", "description": "Daily reimbursement processing" }
POST /api/rest/catalog/products/DAILY_REIMBURSEMENT/addCharges
{ "productCharges": [{ "chargeTemplateCode": "UC_REIMBURSEMENT" }] }
POST /api/rest/catalog/products
{ "code": "MERCHANT_SERVICE", "description": "Merchant service package" }
POST /api/rest/catalog/products/MERCHANT_SERVICE/addCharges
{ "productCharges": [{ "chargeTemplateCode": "RC_MERCHANT_FEE" }] }
# Merchant offer
POST /api/rest/catalog/offerTemplate/createOrUpdate
{
"code": "PLUXEE_MERCHANT",
"description": "Pluxee Merchant Package",
"offerProductTemplates": [
{ "productTemplate": { "code": "DAILY_REIMBURSEMENT" }, "mandatory": true },
{ "productTemplate": { "code": "MERCHANT_SERVICE" }, "mandatory": true }
]
}
Daily B2M Processing Flow
Monthly Employer Invoice
Invoice: Employer ACME Corp (200 employees)
Date: 2026-04-01
Platform Fee (200 employees * EUR 2.00): EUR 400.00
Card Issuance (15 new cards * EUR 5.00): EUR 75.00
4C Commission (EUR 100,000 face value * 4%): EUR 4,000.00
────────────────────────────────────────────
Subtotal: EUR 4,475.00
VAT (20%): EUR 895.00
Total: EUR 5,370.00
Key Billerang Features Used
| Feature | Purpose |
|---|---|
| Multi-instance matching | Route CDRs to correct merchant subscription |
| filterExpression | EL-based CDR routing via MERCHANT_ID custom field |
| Formula pricing | 4% commission calculated dynamically |
| Matrix pricing | Tiered platform fee by employee count |
| One-shot charge | Card issuance fee |
| Daily billing run | Generate merchant reimbursement notes |
| Monthly billing run | Employer invoicing on 1st of month |
| Custom fields | MERCHANT_ID on ServiceInstance |