Payments & Payouts

All financial transactions are securely processed through Yoco.

Transaction Flow

When a user completes a purchase:

  • The system creates a YocoTransaction record and a unique checkout session.
  • The user is redirected to Yoco's hosted payment page.
  • After payment, Yoco sends a webhook to /yoco/webhook (CSRF‑exempt).
  • The webhook handler verifies the HMAC signature, checks for replay attacks (via timestamp), and atomically claims the event_id to ensure idempotency.
  • Upon success, the order is fulfilled (tickets issued, rental confirmed, etc.) and the organizer/lessor's account is credited.

Important: Amounts are stored in cents in the database and cast to a Money value object via MoneyCast. Always use ->amount->toRands() or ->amount->toCents() when reading or processing.

Platform Commission Rates

Commissions are automatically deducted. The rate is resolved at runtime:

  • Events (Ticket/Stall): 5%
  • Event Bookings (Spot booking): 5%
  • Venue Bookings: 8%
  • Equipment Rentals: 10%
  • Artist Bookings: 10%
  • Stall Bookings: 7%
  • Cooler Box Orders: 5.5%

Rates can be overridden for specific users by a ROOT admin via PersonCommissionRate, and globally by the commission_rates table. All changes require a signed confirmation link.

Refunds

Refunds can be processed within a 30‑day window from the payment date. Partial refunds are allowed, and they are validated against the remaining balance. Refunds are tracked via YocoRefund records and must be authorized by the event organizer or an admin.

Payouts

Payouts are initiated by a ROOT admin. Recipients must have their Banking Details submitted and verified. Payouts are tracked with AccountPayout records and can be confirmed by the recipient after they receive the funds.

Was this article helpful?

Rate it and leave a comment for other readers.

Log in to rate this article and leave a comment.

No reviews yet — be the first to share your feedback.