Rushpay automated manual payouts and processes £1m+ each month
£1m+Processed each month
ThousandsPayments handled daily
50%Average reduction in non-cash job rejections
Laravel
Vue
MySQL
AWS
iCabbi
Webhooks
Revolut
Tailwind CSS
Weekly BACS runs were frustrating operators and drivers
Rushpay solved a payments problem that private hire operators had worked around for years. Most taxi and private hire fleets were still paying drivers through weekly manual BACS runs.
That created admin work for operators, banking fees, and frequent disputes about what had been paid. For drivers, card-based jobs could mean waiting up to a week to get paid, which often left them out of pocket.
There was a customer impact too. If non-cash jobs meant slower payment for drivers, drivers had a reason to reject them. That is bad for passengers and bad for operators.
The sector also had a legal wrinkle. Ongoing worker status cases meant fleets needed to avoid anything that looked too much like salaried payroll. The product had to move money quickly without changing the commercial relationship in a risky way.
RoleOwning the iCabbi integration where accuracy moved money
I worked as one half of a two-person contracting team, collaborating closely with the founder.
My responsibility was the iCabbi integration end to end. That meant making sure bookings, fares, driver records, tips, commissions, cancellations, and journey changes were synced accurately enough for money to move without creating disputes.
This was a good fit for the sort of work I enjoy: precise business rules, messy third-party data, auditability, and Laravel jobs that do important work quietly in the background.
SolutionReal-time payment data backed by nightly reconciliation
I built the integration layer in Laravel, using iCabbi webhooks for real-time journey updates and API-based scraping as a fallback.
The system calculated driver payouts from completed work, handled fleet-specific rules, and kept a traceable audit trail for every calculation. That included storing raw payloads and calculation steps so a disputed payment could be inspected rather than guessed at.
Nightly reconciliation jobs resynced completed journeys, detected missing data, and corrected gaps where a webhook had failed or an upstream record had changed after the first event.
The payout logic handled split payments, cancellation rules, commission retention, and driver tips, with the important detail that tips were excluded from commission.
Challenges
Making payouts trustworthy when upstream data changed
Payment systems fail in the gaps between systems.
The hard part was not calling an API. It was making sure the result was correct when bookings changed, webhooks arrived out of order, records were missing, or fleets had slightly different rules for the same kind of journey.
That is why reconciliation mattered as much as the real-time integration. Webhooks made the product feel immediate, but nightly jobs made it trustworthy. The audit trail also gave the support team a way to explain the answer when a driver or operator questioned a payment.
The worker-status constraint shaped the product too. It was not enough to automate payouts. The system had to support the commercial model of private hire operators without creating avoidable legal risk.
Outcome£1m+ processed each month and fewer rejected card jobs
Rushpay now processes more than £1m each month, handles thousands of payments daily, and is used by the majority of the largest UK private hire operators.
The product also halved non-cash job rejection rates on average, which improved the experience for passengers and helped operators offer card-based work without making drivers wait a week to be paid.
The new system processes over £1M in payments every month. Adam was careful with the detail, clear in communication, and understood the importance of getting it right.
