Агуулгыг алгасах

Шимтгэл

Төлбөр бүрийн шимтгэл хэрхэн бодогдох, хэзээ тогтох, буцаалтад буцах эсэх, өөрийн апп-ын дүрмийг хаанаас харахыг тайлбарлана. Уншихад ~5 минут. Шимтгэл зөвхөн тооцоо асаалттай апп-д авагдана (Тооцоо) — одоогоор бүх capture шимтгэлгүй.

Нийтийн үнийн хуудас байхгүй: шимтгэлийг оператор гэрээний дагуу апп бүрт тогтооно.

Төлбөрийн дүрэм

Оператор апп бүрт төлбөрийн дүрэм үүсгэнэ. Дүрэм хувилбартай: effective_from мөчөөс хүчинтэй болж, хожуу effective_from-тэй шинэ хувилбар гартал үйлчилнэ. Хүчин төгөлдөр болсон дүрэм бол түүх — хэзээ ч засагдахгүй, устгагдахгүй (өөрчлөх бол шинэ хувилбар). Хараахан эхлээгүй дүрмийг оператор засаж болно.

Талбар Дүрэм Утга
fee_bps 0 – 5000 хувь, суурь нэгжээр (100 = 1 %, 5000 = 50 %)
fee_fixed 0 – 1 000 000 ₮ төлбөр бүрт нэмэгдэх тогтмол дүн
fee_min · fee_max 0 – 50 000 000 ₮ эсвэл null, min ≤ max доод · дээд хязгаар
refund_fee boolean, анхдагч false буцаалтад шимтгэлийг хувиар нь буцаах эсэх
schedule · settle_time · delay_days Тооцоо тооцооны хуваарь (Улаанбаатарын цаг, T+0 – T+14)

Дүрэм байхгүй бол анхдагч: шимтгэл 0, ажлын өдөр 10:00, T+1.

Томьёо

fee = round_half_up(amount × fee_bps / 10000) + fee_fixed
      → fee_min-ээс багагүй → fee_max-аас ихгүй → amount-аас ихгүй

round_half_up — хамгийн ойрын бүхэл, яг хагас бол дээш; зөвхөн хувийн хэсэгт, төлбөр бүрт нэг удаа
fee_bps amount Тооцоо fee
150 (1.5 %) 10 033 150.495 → 150 150
150 (1.5 %) 10 034 150.51 → 151 151
150 (1.5 %) 100 1.5 → 2 2
200 (2 %) + fee_fixed 50 25 000 500 + 50 550

Intent-ийн fee ба net (amount − fee) нь тооцоо асаалттай апп-д capture хийгдсэн төлбөрт л бичигдэнэ; бусад үед, test-д ба capture-аас өмнө null (Payment intent).

Шимтгэл хэзээ тогтох

Шимтгэл нь capture хийх шаардлагатай болсон мөчид (automatic: хүн баталгаажуулж барьцаа тавигдсан; manual: таны capture дуудлага) тэр мөчид хүчинтэй дүрмээр бодогдож intent-д бичигдэнэ — дахин хэзээ ч бодогдохгүй. Дараа нь оператор дүрмээ сольсон ч, capture дахин оролдогдсон ч өмнө тогтсон шимтгэл хэвээр.

Шимтгэл capture-ийн үед мөнгөнөөс хасагдахгүй: capture бүтэн дүнгээр клиринг рүү орж, шимтгэлийг тооцоо авна (Settlement-ийн fee).

Буцаалтын шимтгэл

  • refund_fee: false (анхдагч): буцаалт шимтгэлийг буцаахгүй — төлбөр болсон, шимтгэл хэвээр. Бүтэн буцаалтын дараа шимтгэлийг авах мөнгө байхгүй бол дараагийн тооцоонд шилжинэ (fee_carried_*).
  • refund_fee: true: буцаалт бүр шимтгэлийн хувиа буцаана:

share(R) = round_half_up(fee × R / amount), буцаалтын хувь = share(өмнөх буцаалтууд + энэ) − share(өмнөх буцаалтууд).

Хэсэгчилсэн буцаалтуудын нийлбэр бүтэн буцаалтад шимтгэлтэй яг тэнцүү. Жишээ: 100₮ шимтгэлтэй төлбөрийг гурван тэнцүү хэсгээр буцаавал 33 + 34 + 33 = 100.

Буцсан шимтгэл тооцооны fee_returned-д, буцаалтын мөрийн fee_returned-д харагдана.

Хаанаас харах

Хөгжүүлэгчийн консолын API — GET /api/v1/miniapp/dev/apps/{id}/payment-rule (байгууллагын session, miniapp.read). Операторын тэмдэглэл, хэн үүсгэсэн нь харагдахгүй:

{
  "current": {
    "id": "8f2c…", "version": 2, "effective_from": "2026-11-01T00:00:00Z", "in_effect": true, "current": true,
    "fee_bps": 150, "fee_fixed": 0, "fee_min": null, "fee_max": 5000, "refund_fee": false,
    "schedule": "weekdays", "settle_time": "10:00", "timezone": "Asia/Ulaanbaatar", "delay_days": 1,
    "created_at": "…", "updated_at": "…"
  },
  "upcoming": [],
  "default": { "fee_bps": 0, "fee_fixed": 0, "schedule": "weekdays", "settle_time": "10:00", "delay_days": 1, "…": "…" },
  "settlements_enabled": true,
  "settlement_since": "2026-11-01T00:00:00Z"
}

current — одоо хүчинтэй дүрэм (null бол default үйлчилнэ), upcoming — хараахан эхлээгүй хувилбарууд (ойрынх нь эхэнд), settlements_enabled — апп-д тооцоо асаалттай эсэх. Server API (API түлхүүр)-аар дүрэм унших — «удахгүй»; одоохондоо консолоос.

Test горим

Test төлбөр шимтгэлгүй (fee = null, тооцоонд орохгүй) — дүрмийн нөлөөг test горимд харах боломжгүй; дээрх томьёогоор бодно уу.