Live balance
WalletAccount stores balance and pendingBalance as separate fields so you always know what is available right now versus queued.
Vectis is not a payroll engine. It is an invoice and payout layer. Contractors raise invoices, you approve them, funds flow to their wallet, they withdraw to their bank.
Every tile below maps to a real column on a real table. Nothing synthetic, nothing for show.
One wallet per organization by default, more when cycles call for it. Withdrawals leave a paper trail with method, bank details, reference, and a failure reason if something goes sideways.
WalletAccount stores balance and pendingBalance as separate fields so you always know what is available right now versus queued.
The method column plus a bankDetails JSON payload covers local rails, SEPA, wires, and anything finance configures per payout.
When a payout fails we write the reason to failureReason on the withdrawal row, keep the status honest, and leave the money on the wallet.
Reference, requestedBy, processedAt, status, timestamps on every withdrawal. The whole history reads top to bottom for an auditor.
Approve an invoice, watch the wallet move, book a withdrawal, read the audit trail. The whole loop takes less time than forwarding a PDF for signature.