Skip to content
ONXCODE

Fintech · EducationLive, behind a login

OSJ Pay

School payments platform

A payment gateway for Saudi schools on Moyasar: guardians pay tuition by card, mada, Apple Pay or Google Pay, and every edge case between the click and the settled payment is handled.

Screenshot: The public landing page, Arabic-first, with the accepted networks named up front. Everything past the login is private.
The public landing page, Arabic-first, with the accepted networks named up front. Everything past the login is private.

Results

  • 6

    Ways to pay on one checkout

    • Visa
    • Mastercard
    • mada
    • Amex
    • Apple Pay
    • Google Pay
  • Live

    In production, collecting real school fees

    Real payments from real guardians

  • AR / EN

    Arabic-first and right-to-left, with an English switch

The challenge

Schools in Saudi Arabia needed to collect tuition online. School owners sign up as merchants, and guardians pay their children's fees with whatever they carry: Visa, Mastercard, mada, American Express, Apple Pay or Google Pay. In payments, "it works" is not the bar. Every path a payment can take, including the ones where the network drops halfway, has to end with the money and the records agreeing.

What mattered most

  1. 1Six ways to pay on one checkout
  2. 2Money and records must always agree
  3. 3Many schools, kept apart

What we built

  1. 01Payments

    Moyasar, integrated end to end

    Card payments with 3-D Secure, mada for the local debit network, and wallet payments, all through Moyasar. Each payment carries the invoice it settles, so any charge traces back to one school, one guardian and one fee without guesswork.

  2. 02Wallets

    Apple Pay and Google Pay, done properly

    Domain verification, merchant validation and wallet buttons that only appear on devices that can use them. On a phone, a guardian settles a term's fees with Face ID in a couple of seconds, with no card number to type.

  3. 03Security

    The redirect is never the source of truth

    A customer returning from the payment page proves nothing. The status is fetched from Moyasar on the server, and the amount and currency are checked against the invoice before anything is marked paid. A tampered callback cannot mark a fee as settled.

  4. 04Reliability

    Webhooks and redirects that race each other

    The webhook and the redirect can arrive in either order, twice, or not at all. Status changes are idempotent and keyed on the payment, so whichever arrives first does the work and the rest are harmless. If neither arrives, reconciliation still catches the payment.

  5. 05Edge cases

    The edge cases that cost real money

    Double-clicks that must not charge twice, 3-D Secure challenges abandoned halfway, a connection lost after the card was charged, amounts handled in halalas rather than floating-point numbers, partial refunds, and declines explained in plain Arabic instead of a raw gateway code.

  6. 06Multi-tenant

    Many schools and families, kept apart

    Each school is its own merchant with its own fees, invoices and history, and a guardian with several children pays every child's fees from one account. Separation is enforced where the data is read, not just hidden in the interface.

The outcome

A live payment platform that schools trust with their fees: guardians pay in seconds with the method they already use, and the money and the records always agree.

Let's build

Have a bottleneck worth solving?

Tell us where your platform is holding you back. A senior engineer will map the fastest route from problem to production.