From booking to delivery โ here's exactly how every order flows through our network, how locations are selected, and how every euro is distributed.
The customer visits lavvy.eu/booking and sees a map with all active Lavvy locations. Each location is a subsidiary โ an independent laundromat that has joined the Lavvy network.
The customer selects the nearest location from the map or dropdown. Locations are automatically sorted by distance using browser geolocation. Each subsidiary sets their own:
The customer adds 1โ5 bags, picks the wash type for each (Black/Dark 30ยฐC, Colored 40ยฐC, or White 60ยฐC), and lists contents per bag. Each bag gets a unique QR code for tracking.
Time slots are generated using each location's pick-up and delivery hours, machine configuration, current booking load, and the availability of drivers assigned to that location (2-hour windows). The system estimates the earliest delivery from the estimated laundry ready time and the next available delivery slot covered by an available driver.
The customer pays the full amount upfront through Stripe Checkout. The payment is processed as a destination charge using Stripe Connect.
| Bag 1: Colored wash | โฌ10.00 |
| Bag 1: Pick-up & delivery (first bag) | โฌ12.00 |
| Bag 2: Colored wash | โฌ10.00 |
| Bag 2: Pick-up & delivery (extra bag) | โฌ4.00 |
| Total (incl. tax) | โฌ36.00 |
All prices are tax-inclusive. Stripe Automatic Tax calculates applicable VAT based on the customer's billing address.
Stripe uses a destination charge model. The full payment goes through Lavvy's platform account. Stripe automatically splits it:
At checkout, Stripe receives the application_fee_amount which equals 10% of wash + 100% of transport. The subsidiary automatically receives the rest (90% of wash) directly into their Stripe Connect account. Transport is held by the platform and automatically transferred to the driver's Stripe Connect account upon delivery confirmation (or 24-hour auto-confirm).
A driver assigned to the subsidiary receives the booking in their Driver Portal. Each driver sets their weekly availability schedule (working hours, days off, max stops per slot). The slot engine only offers time slots to customers when at least one driver is available. At the customer's door, the driver scans each bag's QR code to confirm pickup. Stripe onboarding is required before drivers can confirm pickups or deliveries.
Drivers can only scan bookings belonging to subsidiaries they are assigned to. A driver assigned to "Lavandaria Porto" cannot scan a booking for "Lavandaria Faro" โ the system returns a 403 Forbidden error. The pickup is timestamped with the driver's ID.
The driver delivers the bags to the subsidiary's laundromat. The subsidiary processes the laundry using their own machines. The system estimates completion time using configured machine capacity (number of washers/dryers, cycle duration), queue length (bags already scheduled for that date), folding/packing time per bag, and a configurable margin. Delivery scheduling also factors in driver availability for the delivery slot.
The driver delivers the clean laundry and scans the QR codes to record the delivery. But the booking is not yet completed โ the customer must confirm receipt first.
Driver scans QR codes at the customer's door. A delivery confirmation QR code appears on the driver's phone screen.
Customer scans the QR on the driver's phone (or clicks the email link). A confirmation page loads where they can confirm receipt or file a dispute.
When the customer confirms everything is correct, the booking status changes to Completed and the driver's transport payout is automatically transferred to their Stripe Connect account (drivers must complete Stripe onboarding to receive payouts; without it, transfers remain pending with automatic retries).
If something is wrong (missing items, damage, wrong items), the customer can file a dispute with a description. The booking status becomes Disputed. The subsidiary is notified and must resolve the issue. The driver's transport payout is on hold until the dispute is resolved.
If the customer doesn't respond within 24 hours, the delivery is automatically confirmed and the driver payout is transferred via Stripe Connect (requires connected account; pending transfers are retried hourly, up to 5 attempts). A cron job checks hourly for expired confirmations.
Who gets what โ with and without affiliate referrals
The subsidiary sets their own wash prices. The wash revenue is split between the subsidiary and the platform.
First bag: โฌ12 ยท Each extra bag: โฌ4
Transport stays with the platform and is distributed to the driver after delivery confirmation.
| Customer pays | |
| Wash: 2 ร Colored โฌ10.00 | โฌ20.00 |
| Transport: โฌ12 + โฌ4 | โฌ16.00 |
| Total | โฌ36.00 |
| Distribution | |
| Subsidiary (90% of wash) | โฌ18.00 |
| Driver (90% of transport) | โฌ14.40 |
| Lavvy Admin (10% wash + 10% transport) | โฌ3.60 |
| Verification | โฌ36.00 |
| Customer still pays | |
| Total | โฌ36.00 |
| Distribution | |
| โ Subsidiary (90% of wash) | โฌ18.00 |
| โ Driver (90% of transport) | โฌ14.40 |
| โ Sub Affiliate (5% of wash) | โฌ1.00 |
| โ Driver Affiliate (5% of transport) | โฌ0.80 |
| โ Lavvy Admin (5% wash + 5% transport) | โฌ1.80 |
| Total | โฌ36.00 |
Who invoices whom โ the legal flow behind the payments
In the Stripe Connect destination charge model, Lavvy is the merchant of record. This means:
Lavvy uses self-billing (EU VAT Directive Art. 224) โ the platform generates invoices on behalf of all service providers. No party needs to manually create invoices.
How it works legally: Each party agrees to self-billing in their Terms & Conditions upon registration. They provide their legal name, tax ID (NIF/BTW/VAT), and billing address. The platform stores these details and uses them to generate compliant invoices automatically. Each party receives a PDF copy by email and remains responsible for their own tax declarations.
SB-2026-00001 (sequential per year)
All prices on Lavvy are tax-inclusive (tax_behavior: inclusive). Stripe Automatic Tax calculates applicable VAT based on the customer's billing address and the laundry service tax code. All prices and charges are in EUR — Lavvy operates exclusively in the Eurozone.
When Stripe processes a destination charge with an application_fee_amount, tax is proportionally allocated between the platform fee and the transfer to the subsidiary. No party bears a disproportionate tax burden.
Every booking follows this lifecycle
Multiple ways to earn by growing the Lavvy network
Refer a laundromat owner. When they register and process bookings, you earn 5% of their wash revenue โ for life.
Refer a driver. When they complete deliveries, you earn 5% of their transport fees โ for life.
Every subsidiary can also refer other subsidiaries and drivers. Earn extra income by growing the network in your area.
Choose your role and start earning today.