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

Payout данс

Хүний төлсөн мөнгө аль дансанд орохыг тайлбарлана: апп-ын payout данс (байгууллагын админ өөрийн дансаар, бусад дансыг оператор тохируулна), байгууллагын Gerege Wallet данс, олон эзэмшигчтэй платформын дэд худалдагч бүрийн payout данс (данс эзэмшигч өөрөө Gerege App-д батална). Уншихад ~8 минут. Алхам алхмаар интеграц: Gerege App-аар төлөх.

Апп-ын payout данс

  • Байгууллагын админ апп-ын орлогыг байгууллагынхаа өөрийн Gerege Wallet данс руу консолоос өөрөө чиглүүлнэ (доорх «Байгууллагын данс руу»). Өөр ямар ч дансыг (өөр байгууллагын, хүний) оператор тохируулна — гэрээ, бизнесийн шалгалтын (KYB) дараа. Таны server integration-д (client credential) payout тохируулах API байхгүй, санаатай: апп-ын орлогыг өөр данс руу чиглүүлэх нь алдагдсан credential-ийг хулгайлсан мөнгө болгох цорын ганц засвар.
  • Оператор дансыг дэвтэрт шалгаж (идэвхтэй, MNT), эзэмшигчийг (хүн эсвэл байгууллага) бүртгэлд тэмдэглэнэ.
  • Payout данс байхгүй үед live intent үүсгэхэд 409 payouts_not_configured — хүнд амжилтгүй болох төлбөрийн цонх хэзээ ч харуулахгүйн тулд үүсгэх үед татгалзана. Test горимд payout данс шаардахгүй.
  • Данс солигдсон ч өмнө capture хийгдсэн төлбөрүүд хуучин дансандаа үлдэнэ; тэдгээрийн буцаалт тэр данснаас гарна.
  • Тооцоо асаагүй апп-д (одоогийн бүх апп) capture бүр мөнгийг шууд энэ данс руу шилжүүлж, буцаалт ч энэ данснаас гарна (Буцаалт); асаалттай бол тооцоогоор (Тооцоо).

Байгууллагын Gerege Wallet данс

Худалдагчийн орлогод хамгийн тохиромжтой нь байгууллагын өөрийн Gerege Wallet данс. Байгууллагад Gerege Wallet суусан байх ба админ (impersonate хийсэн session зөвхөн уншина) нээнэ:

Method Зам Хариу
GET /api/v1/bank/org/{tenant}/accounts 200 {"accounts": [Account]}
POST /api/v1/bank/org/{tenant}/accounts {"name"?} (≤ 60) 201 шинэ данс, 200 байгаа данс — байгууллагад нэг данс

Дансны эзэмшигчийн нэр нь платформд бүртгэлтэй байгууллагын хуулийн нэр (ба регистр). Энэ данснаас бодит банк руу мөнгө гаргах — Банк руу гаргах.

Байгууллагын данс руу (консол, админ)

Консолын Үлдэгдэл → Апп-ын payout → «Байгууллагын данс руу» (PUT /api/v1/miniapp/dev/apps/{id}/payout {"account_id": "<байгууллагын дансны id>"}, server-to-server биш) нь апп-ын — mini app ч, худалдагч ч — payout-ыг байгууллагын өөрийн данс болгоно:

  • Зөвхөн байгууллагын админ (impersonate хийсэн session биш), дахин нэвтэрсний дараа (10 минутын дотор) — sandbox байгууллагад биш.
  • Данс нь танай байгууллагын (GET /api/v1/bank/org/{tenant}/accounts-ийн) идэвхтэй MNT данс байх ёстой. Өөр данс → 422 account_not_owned — тэр дансыг оператор тохируулна.
  • Оператор тохируулсан өөр дансыг ч ингэж өөрийн дансаар сольж болно; audit-д өмнөх данс (сүүлийн 4 орон) ба дахин нэвтэрсэн цаг бичигдэж, операторт мэдэгдэл очно. Payout-ыг арилгах нь операторынх.
  • Хариу нь апп (payouts_configured: true, payout_account: "******1234") ба terms — энэ данс руу орсон төлбөрийн буцаалт (90 хоногийн дотор) энэ данснаас хасагдана; консол үүнийг товчны дэргэд харуулна.
  • Өмнө capture хийгдсэн төлбөр, тэдгээрийн буцаалт хуучин дансандаа; тооцоо асаалттай бол хүлээгдэж буй/алдаатай тооцоо хадгалсан дансаараа, дараагийнх нь шинэ данс руу.
  • Go-live checklist-ийн payout алхам (who: admin) ногоон болно.

Дэд худалдагчийн payout холболт

Олон эзэмшигчтэй платформд (жишээ нь машин бүр өөр эзэнтэй вендинг) дэд худалдагч бүр өөрийн payout дансаар мөнгө авна. Таны серверийн үг дангаараа хэн нэгний орлогыг дурын данс руу хэзээ ч чиглүүлэхгүй — дансны эзэмшигч Gerege App-д баталсан үед л.

curl -sS https://geregeapp.mn/api/v1/miniapp/sub-merchants/9a7c5e3b-1d2f-4e6a-8b0c-7d9e1f3a5b7c/payout-link \
  -u "$GEREGE_LIVE_CLIENT_ID:$GEREGE_LIVE_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"account": "MN75 0098 0009 8123 4560"}'

account — IBAN (MN + 18 орон) эсвэл 10 оронтой дансны дугаар; зай, зураас зөвшөөрнө. Зөвхөн live түлхүүр, scope payout_links:write (test → 403 live_only; жагсаалт GET …/payout-links нь sub_merchants:read). Rate limit — минутад 30 (хүсэлт бүр хэн нэгэнд push илгээдэг).

Хариу 201:

{
  "id": "…",
  "object": "payout_link",
  "sub_merchant": "9a7c5e3b-1d2f-4e6a-8b0c-7d9e1f3a5b7c",
  "status": "pending",
  "account_masked": "******2345",
  "requested_at": "2026-10-27T09:00:00Z",
  "expires_at": "2026-11-03T09:00:00Z",
  "decided_at": null,
  "terms": {
    "mn": "Энэ данс руу орсон төлбөрүүдийн буцаалтыг (төлбөрөөс хойш 90 хоногийн дотор) энэ данснаас хасна.",
    "en": "Refunds of payments made into this account (within 90 days of each payment) are taken back from this account."
  }
}
  • Хэнээс асуух нь дэвтрийн эзэмшигчээс: хүний данс → тэр хүн; байгууллагын данс → тэр мөчийн бүх идэвхтэй админ (нэг нь батлахад хангалттай). Тэд Gerege App-д мэдэгдэл авна — текст нь зөвхөн апп-ын батлагдсан нэр (таны бичсэн юу ч биш).
  • Хүсэлт 7 хоног хүчинтэй. Шинэ хүсэлт өмнөх pending-ийг canceled болгоно.
  • terms — батлах нь юу гэсэн үг: энэ данс руу орсон төлбөрийн буцаалт (90 хоногийн дотор) энэ данснаас хасагдана. Хүсэлт, мэдэгдэл, батлах дэлгэц гурвуулаа үүнийг хэлнэ.
  • Батлах агшинд платформ дахин шалгана: данс идэвхтэй MNT, батлагч нь эзэн (эсвэл өнөөдөр байгууллагын админ). Батлагдмагц дэд худалдагчийн payout_account (******2345) болж payouts_configured: true, өмнөх approved нь superseded.
  • GET /sub-merchants/{sid}/payout-links — хүсэлтүүд, шинэ нь эхэнд (≤ 50). Хүсэлт, хариу нь түүх (устгагдахгүй).
status Утга
pending эзэмшигчийн хариуг хүлээж байна
approved баталсан — одоогийн payout
declined эзэмшигч татгалзав
canceled шинэ хүсэлтээр солигдов
superseded дараа нь өөр холболт батлагдав
expired 7 хоногт хариугүй

Эзэмшигч Gerege App-д (iOS) Тохиргоо → Хэтэвч → «Payout холболт»-оос (эсвэл хүсэлтийн мэдэгдлээс) хүсэлтийг харж, нөхцөлийг уншаад Face ID-аар батална эсвэл татгалзана. Байгууллагын дансны хүсэлтийг тэр байгууллагын аль ч идэвхтэй админ батлахад хангалттай.

Алдаа

HTTP code Хэзээ
400 validation_error account буруу хэлбэр, олдсонгүй, идэвхгүй эсвэл MNT биш
403 live_only test credential-аар хүсэлт илгээв
409 sub_merchant_disabled дэд худалдагч идэвхгүй
409 payouts_not_configured live intent: апп-ын payout алга, эсвэл дэд худалдагчийн payout батлагдаагүй
422 account_unsupported дансны эзэмшигч Gerege App-ын хүн ч, байгууллага ч биш
422 account_not_owned консол, «Байгууллагын данс руу»: данс танай байгууллагынх биш — оператортой холбогдоно
422 account_unavailable консол, «Байгууллагын данс руу»: данс олдсонгүй, идэвхгүй эсвэл MNT биш
403 admin_required · impersonated · fresh_sign_in_required консол: админ биш · өөр хүний нэрээр · дахин нэвтэрнэ
422 no_admin байгууллагын данс, гэхдээ асуух админ алга
502 core_unavailable core banking хариу өгсөнгүй — дахин оролд
503 directory_unavailable байгууллагын админуудыг түр тодорхойлж чадсангүй («мэдэхгүй», «үгүй» биш) — дахин оролд
503 payments_unavailable core banking идэвхгүй

Бүтэн жагсаалт: Алдааны код.