Dibee Fleet Platform Handbook
On this page

Order-to-cash flow

Reference

Every purchase, work and refuel order follows one money path: the tenant's funds are reserved once the cost is known, the payment is created only after both the tenant and the merchant have confirmed, it is made exactly once, the merchant's VAT invoice is recorded as owed, and the payment is settled when that invoice is matched.

Overview#

The platform runs one money path for all three order types and for every way an order can be paid. The path has five stages: reserve, confirm, pay, invoice, settle. On the standard path, money never leaves the tenant before both sides have confirmed the order; partner-routed fuel follows the station's own completion instead. The VAT invoice is always issued outside the platform; the platform records that an invoice is owed and whether it arrived. This page is the map: each stage below links to the page that holds its detail.

flowchart TD
    reserve["Reserve funds once the cost is known"]
    confirm["Tenant and merchant both confirm"]
    complete["Order completed: one payment created"]
    paid["Payment made: transaction Paid"]
    invoice["Merchant's VAT invoice recorded as owed"]
    settled["Invoice matched: transaction Settled"]
    released["Reservation released"]
    expired["Order Expired (can be re-confirmed)"]
    failed["Settlement status Failed"]
    reserve --> confirm --> complete --> paid --> invoice --> settled
    reserve -. "cancelled or rejected" .-> released
    reserve -. "reservation times out" .-> expired
    expired -. "re-confirm" .-> reserve
    complete -. "payment fails" .-> failed
Diagram source (Mermaid)

Stages#

StageWhat happensDetail
1. ReserveWhen the order's cost is known, the amount is reserved in the tenant's wallet. No reservation is made on an estimate.Order funds holds and expiry
2. ConfirmThe tenant confirms the order and the merchant accepts it. The order can only be completed once both confirmations are recorded.Purchase and work order statuses
3. PayOn the wallet rail, when the order is completed, the platform creates one financial transaction (who owes whom) and one money movement (how it is paid). On the wallet rail the reservation is used for the payment, and the transaction becomes Paid once the money has moved, with the wallet balances updated. If the payment fails after completion, the order stays completed and its settlement status becomes Failed.Settlement rails for orders
4. InvoiceAs soon as the transaction is Paid, the platform records that the merchant owes a VAT invoice for it. The merchant issues the invoice outside the platform.Order settlement status and invoice close-out
5. SettleWhen the VAT invoice is fetched and matched to the transaction, the transaction moves from Paid to Settled. Only a paid transaction can settle.Order settlement status and invoice close-out

What the transaction, money movement and wallet entries are, and how to follow them, is explained in Transactions, money movements and ledger entries. How invoices arrive and are matched is explained in VAT invoices and Invoice match statuses.

Rules#

  • Money moves only after both confirmations. For standard purchase, work and refuel orders the payment is created as part of completing the order, and completion is refused unless both the tenant and the merchant have confirmed. Partner-routed fuel orders complete on the station's own completion or invoice.
  • One payment per order. An order never gets a second financial transaction. Completing an order again, or completing one whose obligation was already recorded, reuses the existing transaction.
  • Completion and the payment record succeed or fail together. If the payment cannot be created — for example the reservation is missing or the credit line cannot cover the amount — the order is not completed, nothing is recorded, and the tenant is notified that completion was blocked. A payment that fails later does not undo the completion; see Order settlement status and invoice close-out.
  • Cancelling releases the money. Cancelling a pending purchase order, cancelling a work or refuel order in any status before Completed, and any merchant or supervisor rejection release the reservation at once; on B2B-Direct the obligation is voided and the credit it used is restored in full.
  • A timed-out reservation does not cancel the order. The order moves to Expired and can be re-confirmed. An order waiting for supervisor approval, or a Petrolimex order waiting for its invoice, keeps its status; the money is still released. See Re-confirm an expired order.
  • Invoices are issued outside the platform on every rail. The platform never issues an order's VAT invoice; it records the request and the outcome.
  • Settling moves no money. Matching an invoice changes only the transaction's status; it does not touch the wallet, the reservation or the payment.

Settlement rails#

The same five stages apply on every rail: wallet, B2B-Direct credit, a voucher redeemed on a B2B credit line, credit allocation, and the partner-routed fuel flows. What changes is what is reserved and what pays:

  • Wallet. Funds are reserved in the tenant's wallet and the payment is sent through the wallet's payment provider.
  • B2B-Direct. No wallet funds are reserved; the order is charged to the credit the merchant extends to the tenant. The obligation is recorded against the credit line when a refuel order is created, or when a purchase or work order is completed. On completion the order's transaction becomes Paid (paid by credit) and the order's settlement status becomes Settled; the transaction becomes Settled when the invoice is matched. A paid B2B-Direct transaction cannot be voided. The tenant repays the credit line as a whole, not order by order.
  • Voucher. A voucher redemption is charged to a B2B credit line. If the tenant and merchant have no active B2B credit account, the redemption is refused; there is no fallback.

Each rail, side by side: Settlement rails for orders. How the platform chooses the rail for a tenant and merchant: Wallet and B2B-Direct settlement between a tenant and a merchant.

Edge cases#

  • The invoice arrives before the payment. The two halves can land in either order. If the invoice is already matched when the transaction becomes Paid, the transaction settles at that moment.
  • Zero-cost order. A purchase or refuel order with a zero total completes without a financial transaction. A work order with no cost cannot be completed until a cost is entered.
  • Reservation gone at completion. On the wallet rail, an order whose reservation is no longer held cannot be completed.
  • Cost changed after the reservation. If the cost went up, the reservation is topped up at completion, and completion is refused if the wallet cannot cover the difference. If it went down, only the final cost is taken and the rest goes back to the wallet.
  • Petrolimex static-QR refuels. These run only for a tenant and merchant settled by B2B-Direct. The order waits for the station's VAT invoice; matching that invoice completes, pays and settles the order in one step, after correcting the order's amount to the invoice total.
  • PVoil refuels. Reservation and payment run on PVoil's own flow, described with refuel orders. Once the payment lands the transaction is Paid, and the invoice and settle stages apply as for every other order.
  • Two settlement statuses. The order's settlement status says whether the merchant has been paid; the transaction's status says where the payment is in its lifecycle. They are separate fields. See Order settlement status and invoice close-out.
Updated 2026-10-30 · Applies to commit afa8d231 · Built 2026-11-02