Syntra Systems
Cases Services Products About Blog IT Caravan
+998 70 010 68 44 +7 999 900 22 12
RusEngUzb
A half-open laptop glowing blue and red in the dark — an article about billing and payments on a web platform
Websites and platforms

Billing and Payments on a Web Platform

By Shohista Azizova · · 8 min read · updated

The payment layer of a web platform is not a pay button but a record of who pays for what and on which plan: invoices and their statuses, subscriptions, refunds and reconciliation with the provider. For an Uzbek audience it connects to Payme, CLICK and Uzum Bank, while the card data stays on the provider's side.

Key takeaways

  • Billing is not a pay button but a record of who pays for what and on which plan: invoices and statuses, subscriptions, refunds and reconciliation.
  • Support for Payme, CLICK and Uzum Bank is not required by law, but without it a platform loses most of its paying audience.
  • Card data is stored and processed by the payment provider; the platform receives only the transaction status and the charge identifier.
  • Recurring charges work only if the provider supports saving a card; otherwise a subscription runs on invoices and reminders.
  • Connecting systems that already run in the company starts at $4,000, a dedicated module for one job at $8,000.

How billing differs from a pay button

A pay button charges the money once and stops there. Billing remembers what was paid for, on which plan, how much of it has already been used and when the next charge is due.

The difference shows up as soon as payment stops being a one-off: the platform gains plans with limits, renewals, prorated plan changes and refunds. All of it has to be counted in one place, otherwise the numbers in the product, at the provider and in accounting drift apart.

If payments are also needed inside Telegram, they follow different rules — see payments in a Telegram bot and automatic notifications.

What a platform's payment layer is made of

The layer is assembled from five parts, each responsible for its own stretch of the money's journey. The split matters not for architectural elegance: it is what lets you add a new provider without rewriting the product.

Tip Build in support for several providers from day one, even if you launch with a single one. Rewriting the payment module for a second system always costs more than separating the generic invoice logic from provider specifics up front.

How Payme, CLICK and Uzum Bank are connected

All three are connected the same way: a provider contract, a test environment, an implementation of the protocol on the platform's side and a switch to live keys. The differences lie in who calls whom and which methods you have to implement.

ProviderHow the integration worksWhat else is availableDocumentation
PaymeMerchant API: the provider calls the platform's billing with methods to check, create, perform and cancel a transactionSubscribe API for saving a card, payment page initialisation, Telegram bot connectiondeveloper.help.paycom.uz
CLICKSHOP API: the platform implements the Prepare and Complete requests, after which the service becomes available across CLICK interfacesMerchant API, CLICK Pass, payment links and card paymentsdocs.click.uz
Uzum BankAPI integration of payment methods for a website, an app and a Telegram botQR payments at the point of sale: static and dynamic QR, FastPaymerchants.uzumbank.uz

The key trait of Payme and CLICK is that the initiative sits with the provider: it calls your server and asks whether such an order exists and whether a payment can be made against it. That means your billing has to be reachable from outside, answer fast and answer identically to repeated requests.

Support for local systems is not required by law, but without it a platform loses most of its paying audience: people pay with the app already installed on their phone. Uzcard and Humo cards are served through local gateways, and an international provider is added for payments from abroad.

The subscription lifecycle: from plan to renewal

A subscription differs from a one-off sale in that it has to be managed over time rather than simply charged. Most losses in subscription products come not from customers leaving but from technical breaks in that cycle.

  1. The customer picks a plan, and the platform calculates the price by period, volume or number of users.
  2. The first charge goes through, access opens, and the plan's limits are recorded on the account.
  3. A warning with the amount and the date goes out before the next charge.
  4. The charge runs on schedule if the provider supports saving a card; if not, the platform issues an invoice and waits.
  5. On a plan change, the unused part of the period is recalculated.
  6. If a charge fails, the platform retries and restricts access gradually.
  7. On cancellation, access lasts until the end of the paid period and the customer's data stays in place.

Recurring card charges are not always possible: they depend on whether the provider supports saving a card and issuing a token, and on the contract terms. Without that option, a subscription runs on invoices and reminders — almost the same for the customer, but a different notification logic underneath.

Refunds, partial payments and failed charges

The paths where something goes wrong deserve to be designed alongside the happy path, not after launch. This is exactly where a platform either keeps a customer or loses both the money and the trust.

Every scenario needs clear wording for the customer and a log entry for support. Otherwise resolving one disputed payment costs the business more time than the payment is worth.

Who stores card data and does a platform need PCI DSS

Card data is stored and processed by the payment provider. The platform receives only the transaction status and the charge identifier — enough to find the operation, issue a refund and reconcile the books.

PCI DSS is a standard of the international card schemes, and it governs work with Visa, Mastercard and other council members. Uzcard and Humo cards are served by local gateways under their own rules, so their requirements are clarified with the provider and the acquiring bank. When the card entry form sits entirely with the provider, a merchant usually needs only a simplified self-assessment: the SAQ A questionnaire is designed exactly for those who do not store, process or transmit card data themselves.

The exact set of requirements is defined by the acquiring bank or the card scheme, so it is fixed in the contract before development starts rather than after the first audit.

Reconciliation: making provider, platform and accounting agree

Reconciliation exists so that discrepancies surface automatically rather than at the end of a quarter. Money travels through several systems, and in each of them an operation can be left in its own status.

Example A customer paid, the provider processed the charge, but the callback never reached the platform because of a network failure. The provider's report shows the operation, the platform still shows the invoice as unpaid, and accounting sees money with no basis. Daily reconciliation finds that operation the next day rather than three months later.

The minimum working order looks like this: the platform regularly requests the list of operations for a period from the provider, matches them against its own invoices by identifier and shows the discrepancies as a separate list. Payme offers a method that returns information about the merchant's transactions; other providers have their own exports.

From there the data goes to the accounting system: amounts, dates, purposes and refunds. How to tie those figures to sellers and settlements is covered in marketplace development, where payouts add one more layer to the payment loop.

What a payment layer costs

There is no separate price tag for billing: it is counted as part of the platform or of an integration project. Connecting systems that already run in the company starts at $4,000, a dedicated module for one job at $8,000.

The scope and prices are listed on the ERP and integrations service page. The provider's commission is not part of that sum: the company pays it separately under its own contract. If the payment layer is for an online shop, see the walkthrough in launching an online store.

How we design billing

Syntra Systems starts with the sales model: what exactly is bought, how often, what happens on cancellation and which employees work with the money. That produces the scheme of invoices and statuses, and only then are the providers chosen.

Next we build the layer with room for a second provider, test it in a sandbox across every scenario — successful, cancelled, repeated and refunded — and switch reconciliation on before launch rather than after the first lost payment. The customer's payment history goes into their customer account, so support does not have to read out statements by hand.

Let’s discuss your project

Tell us what you need, and we will estimate the timeline and cost and suggest a solution.

Discuss a payment layer

Frequently asked questions

Can we start with just one payment system, say only Payme?

You can, but the module is worth building for several providers from the start: shared invoice logic on its own, with Payme, CLICK or Uzum Bank specifics in separate adapters. That way a second system connects without a rewrite, whereas without it the platform loses people used to paying through a different app.

Does the international card security standard PCI DSS apply to Uzcard and Humo payments?

PCI DSS is a set of rules for protecting card data from Visa, Mastercard and other international schemes. Uzcard and Humo run through local gateways under their own rules, so those requirements are confirmed with the payment provider and the acquiring bank. If the card is entered on the provider's own page, international cards usually only need the simplified SAQ A self-assessment.

What should happen when a subscription charge fails?

Set up scheduled retries and a message asking the customer to update the payment method. Access is restricted gradually so that the customer can come back without losing data. A full cut-off makes sense only after several failed attempts and warnings.

How does a provider's payment page differ from a form on the site?

On the provider's page the card is entered by the provider, and the platform never touches that data. A form on the site feels more seamless but shifts noticeably more security obligations onto the company. For most projects the gain in convenience is not worth it.

How do we take payments from customers abroad?

Local systems work with Uzbek cards, so for customers abroad an international provider is connected as one more adapter. The invoice currency, taxes and refund rules are then defined separately from the local payment loop.

Can a client be refunded only part of the amount?

A partial refund is issued when part of an order is cancelled: the sum is recalculated and the remainder stays paid. The provider processes the refund itself under its own rules, while the platform updates the invoice status and includes the refund in the accounting export — otherwise reconciliation stops matching.

Where is payment history kept and who can see it?

The history lives in the platform's own database: amounts, dates, statuses and the provider's transaction identifiers. Access to financial sections is restricted by role, and employee actions are written to a log. The customer sees their own part of it in the customer account.

Read also