GH GambleHub

Billing API va hisobot

1) Nima uchun API uchun o’z billingi

Shaffof monetizatsiya: aloqa usage → tushum.
Skalatsiya va nazorat: kvotalar, overage, kreditlar, rejalar bo’yicha prays-buklar.
Moliyaviy aniqlik: soliqlar/QQS, multivalyutalik, dalolatnomalar va yopiq hujjatlar.
Mijozlarning ishonchi: batafsil usage-hisobotlar, vebxuklar, o’z-o’ziga xizmat ko’rsatish portali.

2) Billing arxitekturasi (yuqori darajali)

Producers (API-shlyuz, servislar) → Usage Event Bus (Kafka/Queue) → Metering & Rating → Billing DB → Invoicing/Taxes → Payments (PSP) → Reporting DWH → Mijoz portali/Webhooks.

Komponentlar:
  • Metring - usage yig’ish va normallashtirish (so’rovlar, kreditlar, hajmlar).
  • Reyting (rating) - voqea qiymatini prays-bukka/reja bo’yicha baholash.
  • Invoysing - davr uchun agregatsiya, proreyt, soliqlar, chegirmalar, kreditlar.
  • To’lovlar - hisobdan chiqarish/refand, deyting (dunning).
  • Hisobot - MRR/ARPU/LTV, kogort churn, cost-to-serve.
  • Audit - idempotentlik, o’zgarmas jurnallar.

3) Mohiyat va identifikatorlar

Account (tenant), Plan, Entitlements (ruxsatnomalar/kvotalar), Usage Event, Invoice, Credit Note, Tax Profile.
Hayotiy ahamiyatga ega: idempotency_key usage/invoice/payment, source (gateway/batch), version sxemalari.

4) Iste’mol hodisasi (usage): etalon sxemasi

json
{
"event_id": "use_01HXYZ...",
"idempotency_key": "key_6a2f-2025-11-03T18:02:09Z",
"occurred_at": "2025-11-03T18:02:05Z",
"ingested_at": "2025-11-03T18:02:09Z",
"tenant_id": "t_123",
"api_key_id": "k_456",
"plan_id": "pro-2025",
"endpoint": "POST /v1/reports/run",
"unit": "credit",
"quantity": 5,
"region": "eu-west-1",
"metadata": { "request_id": "r_789", "ip": "203. 0. 113. 5" },
"signature": "hmac_sha256_base64(...)",
"schema_version": 2
}

Qoidalar: voqealar faqat qo’shiladi; tahrirlash -’event _ id’ga havola qilingan tuzatish adjustment events orqali amalga oshiriladi.

5) Ombor va agregatsiyalar qatlami

5. 1 OLTP (Billing DB)

Таблицы: `tenants`, `plans`, `plan_prices`, `entitlements`, `usage_events`, `rated_lines`, `invoices`, `invoice_lines`, `tax_rates`, `credits`, `payments`, `refunds`, `disputes`.

5. 2 DWH (tahliliy)

Факты: `f_usage`, `f_billing`, `f_payments`; o’lchovlar:’d _ tenant’,’d _ plan’,’d _ endpoint’,’d _ region’,’d _ date’.

5. 3 SQL agregatsiyasi namunasi usage → billed lines

sql
-- 1) Reduce usage per day by units create materialized view mv_daily_usage as select tenant_id, plan_id, endpoint, date_trunc ('day', occurred_at) d,
unit, sum(quantity) qty from usage_events where occurred_at >=:period_start and occurred_at <:period_end group by 1,2,3,4,5;

-- 2) Price book (tiered) applicable
select u. tenant_id, u. plan_id, u. d, u. unit, u. qty,
p. tier_from, p. tier_to, p. price_per_unit,
least(greatest(u. qty - p. tier_from + 1, 0), p. tier_to - p. tier_from + 1) as billable_units,
price_per_unit least(...) as amount from mv_daily_usage u join plan_prices p on p. plan_id = u. plan_id and p. unit = u. unit and u. qty >= p. tier_from;

6) Prays-buk va rating (baholash)

flat, tiered, volume, bundled credits, pay-as-you-go va overage modellarini qo’llab-quvvatlang.

Prays-bukning namunasi (YAML):
yaml plan_id: pro-2025 currency: USD units:
request:
tiers:
- { from: 1, to: 250_000, price_per_1k: 2. 5 }
- { from: 250_001, to: 1_000_000, price_per_1k: 2. 0 }
credit:
flat: { price_per_unit: 0. 001} # 1 credit = $0. 001 overage:
policy: "postpaid"
rounding: "ceil_1k"
minimum_commit: 99 # basic subscription/month

7) Invoysing: hisobvaraqlarni shakllantirish

Bosqichlar:

1. Cutoff davri (hisobning lokali boʻyicha).

2. Reja ap/daun-greydida proreyt (kunlar bo’yicha).

3. Reyting usage + fiksatsiya invoice lines.

4. Mijozning joylashuvi va xizmat ko’rsatish joyi bo’yicha soliqlar (VAT/GST).

5. Kreditlar/chegirmalar/kuponlar.

6. Imzolash va e’lon qilish, to’lov uchun yuborish (PSP), vebxuklar.

Invoys-line (misol):
json
{
"line_id": "invln_01",
"type": "usage",
"description": "API requests (first 250k)",
"unit": "request",
"quantity": 250000,
"unit_price": 0. 0025,
"amount": 625. 00,
"currency": "USD",
"tax_rate": "VAT20",
"amount_tax": 125. 00
}

8) Soliqlar va multivalyutlilik

QQS/VAT/GST: Tax Profile (mamlakat, VAT-ID, B2B/B2C) saqlang.
Sana (versiya) bo’yicha soliq stavkalari, Yevropa Ittifoqida B2B uchun reverse charge.
FX-konvertatsiya: invoys sanasidagi kurs (ESV/provayder), kurs manbaini saqlang.
Hujjatlar: invoys, credit note, debet-nota - tartib raqami va seriyasi bilan.

9) To’lovlar, deyting va munozaralar

PSP (Stripe/Braintree/Adyen): tokenized to’lovlar, retralar rad etilganda, dunning (1-3-7 kun).
Disputes/chargebacks: statuslarni tuzatish, invoys bilan bog’lash, vaqt oralig’ida o’zaro hamkorlik qilish.
Refunds: qisman/toʻliq,’payment _ id’va’invoice _ id’bilan bogʻliq.
Frod-signallar: geo/ASN-anomaliyalar, usage portlashlari, turli xaritalar - billingdagi bayroqlar.

10) Kreditlar, chegirmalar, SLA-kreditlar

Promo-kreditlar (hamyon), service credits SLAni buzganlik uchun (keyingi davrda avtomatik hisob).
Kuponlar: fix/foiz, eng kam muddat, reja/endpindlar bo’yicha cheklovlar.
Shaffoflik: portalda kreditlar balansi va hisobdan chiqarish tarixini ko’rsating.

11) Idempotentlik va tuzatishlar

Idempotency-Key orqali barcha write operatsiyalari.
Tuzatishlar faqat adjustments (ijobiy/salbiy) hodisalari orqali, asl nusxasini tuzatmasdan amalga oshiriladi.
Reconciliation: kundalik taqqoslash usage, rated_lines, invoices, PSP.

12) Xavfsizlik va komplayens

HMAC/JWT imzosi.
mTLS ingest uchun, chorshanba uchun alohida kalitlar (prod/stage).
PII-minimallashtirish (PAN/pochtani zaruratsiz saqlamang), DSAR/Legal Hold.
Moliyaviy operatsiyalar uchun o’zgarmas (append-only) audit-log.

13) Billing portalining API (OpenAPI parchalari)

yaml paths:
/v1/billing/usage:
get:
summary: Usage breakdown parameters: [ {name: from, in: query}, {name: to, in: query}, {name: unit, in: query} ]
responses: {"200": {description: OK}}
/v1/billing/invoices:
get: { summary: List invoices }
/v1/billing/invoices/{id}:
get: { summary: Get invoice (PDF/JSON) }
/v1/billing/credits:
get: { summary: Credit wallet balance }
/v1/webhooks/billing:
post:
summary: Billing webhooks description: "invoice. created, invoice. finalized, payment. succeeded, credit. applied"

Asosiy API javoblaridagi sarlavhalar:’X-Quota-Remaining’,’X-RateLimit-Remaining’,’X-Usage-Period’.

14) Vebxuklar va billing voqealari

Hodisalar:’invoice. created`, `invoice. finalized`, `payment. succeeded|failed`, `dunning. retry`, `credit. applied`, `dispute. opened|closed`.
Talablar: vebxuklarning imzosi, backoff bilan takrorlash,’delivery _ id’deduplikatsiyasi.

15) Biznes hisoboti va metrikasi

Fin KPI:
  • MRR/ARR (reja/geo bo’yicha segmentatsiya), ARPU, LTV/CAC, Churn (logo/daromad), Net Revenue Retention (NRR).
  • Usage → Revenue: «tor joylar» konversiya kartalari (kvotalarga asoslanadi).
  • Cost-to-Serve: infratuzilma/so’rov qiymati → reja bo’yicha marja.
Soʻrov namunalari (DWH):
sql
-- MRR by invoice dates select date_trunc ('month', invoice_date) m, sum (recurring_amount) mrr from f_billing group by 1;

-- ARPU select m, sum(total_amount)/nullif(count(distinct tenant_id),0) arpu from f_billing_monthly group by 1;

-- Cohort by month of activation select cohort_month, month_since_start, sum (total_amount) revenue from f_billing_cohorts;

16) DevEx: o’z-o’ziga xizmat ko’rsatish portali

Ro’yxatdan o’tish, rejalar, kalitlar, usage-grafiklar, invoyslar (PDF/JSON), vebxuklar.
Yangilash/tushirish, hisobni oldindan ko’rish (pro-forma), to’lov usullarini boshqarish.
Bildirishnomalar: «kvota <10%», «overij kiritilgan», «invoys qo’yilgan/to’langan».

17) Test va atrof-muhit

Sandbox billing: soxta PSP, soliqlarning test stavkalari.
Usage-hodisalarning contract-testlari (sxema/majburiy maydonlar).
Replay prod-samplov stagda, regression prays-buka testlari.
Backfill xavfsiz: faqat idempotentlik bilan batch-ingest orqali.

18) FinOps va tariflar iqtisodiyoti

Marjani endpoint/rejalar bo’yicha hisoblang: revenue − cost-to-serve.
Kreditlarga «qimmat» operatsiyalarni ajrating va low-tiers bilan cheklang.
Observability’da query-cost’ni kuzatib boring va billing bilan bogʻlang.

19) Ishga tushirish chek-varaqasi

  • ’usage _ event ’/’ adjustment ’/’ invoice _ line’sxemalari qayd etilgan va versiya qilinadi.
  • Prays-buk sinovdan o’tgan (flat/tiered/volume), prorate/overage to’g’ri.
  • Ingestion va vebxuklarning idempotentligi, append-only audit-log.
  • Soliqlar/QQS/FX to’g "ri, mijozlar profillari to’ldirilgan.
  • Portal: usage, invoyslar, kreditlar, vebxuklar; PSP integratsiyasi va dunning.
  • DWH-hisobot (MRR/ARPU/LTV/Churn/NRR), kundalik reconciliation.
  • SLA-kreditlar va munozaralar siyosati hujjatlashtirilgan.

20) Tez-tez xatolar va anti-patternlar

Idempotentlik yoʻq → dubli usage/ikki marta hisobdan chiqarish.
Og’ir endpointlar uchun kreditsiz «so’rov» narxi → salbiy marja.
Mijoz emas, balki «kompaniya o’rni bo’yicha» soliqlar → komplayens xatolari.
Tafsilotsiz invoyslar → mijozlar bilan nizolar.
Hech qanday reconciliation mavjud emas usage, PSP, invoys → hisobot tafovutlari.

Jami

API uchun kuchli billing - bu metering arxitekturasi, aniq prays-buk, qat’iy idempotentlik, soliqlar bilan to’g’ri invoysing/FX va shaffof hisobot. Foydalanuvchini tushum bilan bog’lang, mijozga tushunarli tafsilotlar bering va voqeadan invoys va MRR-dashbordgacha bo’lgan yo’lni avtomatlashtiring. Bu prognoz qilinadigan daromadlar, kam tortishuvlar va boshqariladigan mahsulot iqtisodiyotini taʼminlaydi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.