Services · Mobile app development · Subscription billing apps

Subscription billing built for how Riyadh companies sell and get paid.

We design and build subscription billing systems for Riyadh software companies, membership businesses and enterprise service providers. Plans, seats, usage, renewals, ZATCA compliant e-invoices, mada and card payments and a customer portal in Arabic and English run from one platform you own. Finance stops reconciling spreadsheets at month end, and sales can launch a new plan without waiting for a developer. Our Riyadh team can run discovery with you in person.

Packaged billing tools often assume a foreign tax regime, a card-only customer and English invoices. Saudi buyers expect Arabic tax invoices, mada at checkout, bank transfer for large contracts and purchase orders for corporate accounts. Custom subscription billing software development starts from those expectations instead of working around them.

Built for
SaaS and fintech companies, regional headquarters, training providers and membership chains based in Riyadh and selling across the Kingdom.
Typical timeline
Scope and release order are agreed in discovery and the dates written down before design begins; gateway and ZATCA integration usually set the pace.
What you own
Source code, billing database, pricing rules, gateway accounts and ZATCA onboarding credentials, all held in your company's own accounts.
Rated
4.7 / 5 from 23 Google reviews

200+ companies servedFrom a first store to an ADX listed developer

Modon
Majid Al Futtaim
HP
Belkin
Dulsco Group
OneClickDrive
Hanayen
HMS
Clocksprings
Ghezlan

What we build

Billing parts Riyadh finance and sales teams ask for first.

Riyadh companies tend to outgrow their first billing setup in a familiar order. It starts as a card subscription on a gateway dashboard. Then enterprise customers ask for annual contracts paid by bank transfer, procurement wants a purchase order number on every invoice, and the finance team needs revenue split by month for the auditors. By that point the gateway dashboard, an accounting package and a sheet of manual adjustments all tell slightly different stories. We build the billing layer that sits between your product, your payment providers and your accounting system, and treat it as the single record of who owes what and why. The components below are the ones capital-based B2B and membership businesses most often need, and we choose and order them with you rather than building everything at once.

Explain your project
  • Seat and tier pricing

    Price per user, per branch or per tier, with volume bands and annual commitments. When a client in Olaya adds twenty users halfway through a contract, the system calculates the prorated charge, raises the invoice and updates the entitlement in your product without anyone in finance touching it. Annual commitments can be invoiced upfront, quarterly or monthly, as each contract says.

    Upgrades are billed correctly on the day they happen.

  • Quote to subscription

    Sales builds a quote with discounts and contract terms, the customer signs, and the subscription is created directly from the signed quote. Discount approvals follow your internal rules, so a large enterprise discount waits for the commercial lead before it reaches the customer.

    No retyping between the CRM, the contract and the billing record.

  • Purchase orders and corporate invoicing

    Corporate and semi-government buyers in Riyadh often need a PO number, a cost centre reference and a named approver on each invoice, and they pay by bank transfer on agreed terms. The system stores those references per account and follows up unpaid invoices on the terms written in the contract.

    Invoices that procurement departments accept the first time.

  • ZATCA e-invoicing

    Every renewal, upgrade and credit note produces a compliant tax invoice with Arabic content, the QR code and the XML your Fatoora integration requires. Standard B2B invoices go through clearance before they are sent, and simplified invoices for individual subscribers are reported within the required window.

    Tax compliance built into the invoice run, not added afterwards.

  • Usage metering

    API calls, transactions processed, messages sent or storage consumed are recorded as events and rated against each customer's plan at the close of the period. Customers watch their running usage in the portal, so the invoice never arrives as a surprise. Thresholds can trigger an alert to the account manager before a client crosses into a higher band.

    Usage-based plans that customers trust and finance can audit.

  • mada, card and Apple Pay collection

    Tokenised card storage through your SAMA licensed gateway lets renewals charge automatically on mada, Visa and Mastercard where the gateway supports recurring payments, with Apple Pay for the first purchase. Card data stays with the gateway and your system keeps only the token.

    Renewals collected without asking customers to pay by hand each month.

  • Revenue and SaaS metrics

    Monthly recurring revenue, churn, expansion and deferred revenue, calculated from the billing record instead of estimated in a spreadsheet. Board packs and investor updates draw on the same numbers finance uses to close the month.

    One set of numbers for the board, the auditors and sales.

  • Multi-entity billing for regional headquarters

    Groups running a regional headquarters in Riyadh frequently invoice from more than one legal entity. Each entity keeps its own tax registration, invoice sequence and bank details, while customers and contracts are managed from one place.

    Group billing without mixing up entities or tax numbers.

  • Accounting and ERP sync

    Invoices, payments and credit notes post to the accounting or ERP package your finance team already runs, such as Odoo or Microsoft Dynamics 365 Business Central, so the ledger and the billing system agree at every close.

    Month end closes from data that already matches.

  • Customer self-service portal

    Account owners at your client companies download invoices, update billing contacts, add seats, change plans and pay outstanding balances without emailing your team. Approval rules stop a junior user from upgrading the whole company, and every change is logged with the person who made it.

    Fewer billing emails reaching your account managers.

Who this is for

Four kinds of Riyadh business we usually build for.

The capital is home to many of the Kingdom's software startups, ministries, corporate buyers and regional headquarters, so billing here has to cope with procurement rules as often as with consumer cards. Districts such as Olaya, King Abdullah Financial District and the business parks along King Fahd Road hold companies that sell to each other on contract. These are the four situations we see most from Riyadh. Codeeo's Riyadh team works from the city, which makes joint sessions with finance and sales easy to arrange.

01

A SaaS company that has outgrown its gateway dashboard

You launched on a hosted checkout and monthly card plans. Now enterprise clients want annual contracts, invoices with PO numbers and payment by transfer, and your team issues those by hand. We build a billing system around your existing product, migrate current subscribers and their payment tokens where the gateway allows it, and keep card customers renewing without a break during the switch. Seat changes made by customers flow straight into the same invoices, so sales and finance stop arguing over numbers.

Token migration depends on your gateway; we confirm it in discovery.

02

A regional headquarters invoicing Saudi clients

International groups that open a regional headquarters in Riyadh often inherit a global billing tool that cannot produce Arabic tax invoices or connect to Fatoora. Rather than replace the global system, we can build a Saudi billing layer that takes contracts from it, handles local invoicing and collection, and reports back to group finance in the format head office expects. Group reporting can still run in the head office currency while Saudi invoices stay in riyal terms.

Useful when head office will not change its global platform.

03

A fitness, training or education brand with several Riyadh branches

Members join at a branch in the north of the city and then want to train at another one near work. We build memberships that follow the customer across branches, with freezes, family plans and corporate packages paid by an employer, plus a staff app for front desk check-in and renewals at the counter. Corporate wellness packages for Riyadh employers can be billed monthly to the company with one consolidated invoice.

04

A finance team that wants control before the next funding round

Investors and auditors ask for recurring revenue, churn and deferred revenue that tie back to individual invoices. If those numbers currently come from a spreadsheet kept by one person, we build the billing record and the reporting so the figures can be produced on demand and traced to source documents. The same reports then feed a data room without anyone rebuilding them for the occasion.

How a Riyadh billing build runs, in six stages.

  1. 01Discovery at your office or oursWe meet your finance, sales and product leads in Riyadh, map every plan, discount, contract type and payment route, and list the edge cases that currently need manual work.
  2. 02Pricing model and data designPlans, entitlements, proration rules, tax treatment and invoice formats are written down and agreed before code, because changing a pricing model after launch touches every customer record.
  3. 03Gateway, ZATCA and accounting integrationWe connect your payment gateway, complete Fatoora onboarding in the simulation environment first, and set up the accounting sync, testing each one against real invoice scenarios.
  4. 04Portal and admin buildThe customer portal, finance console and sales tools are built in short releases you can review, in Arabic and English, with right to left layouts checked on real devices.
  5. 05Migration and parallel runExisting subscribers, balances and tokens move across, then old and new systems run side by side for one billing cycle so totals can be compared line by line.
  6. 06Support and new pricingAfter go live we handle fixes, ZATCA specification updates and the new plans your sales team wants to test, under a retainer or a dedicated team.

Technology

What we build this with.

We usually build the billing core on Laravel or Node.js with PostgreSQL, the portal in Next.js or React, and mobile screens in Flutter or React Native, hosted in a cloud region inside the Kingdom when data residency matters to you.

01Mobile

  • Swift
  • Kotlin
  • Flutter
  • React Native

02Data and cloud

  • PostgreSQL
  • MySQL
  • MongoDB
  • AWS
  • Azure
  • Docker

03Marketing and tracking

  • GA4
  • Google Tag Manager
  • Search Console
  • Meta Pixel
  • Looker Studio

Questions Riyadh teams ask before building billing software.

It depends on pricing complexity and the number of integrations.

A system with a handful of card plans, one gateway and ZATCA invoicing is a far smaller build than one with seat pricing, usage metering, purchase orders, several legal entities and an ERP sync. Migrating existing subscribers adds time as well. We set out the release order in discovery and put dates in writing before design starts, so you know when each part goes live. Releases are usually ordered so ZATCA invoicing and your main plans go live first, with metering or multi-entity work following.

Tell us what the business needs. We will tell you what to build first.

Schedule a free consultation and get a written recommendation, with costs, before you commit to anything.

Get in touch

PROVEN RESULTS

4.7 / 5from 23 Google reviews