Skip to content

Test users

Let colleagues open your app in Gerege App and pay in test mode while it is a draft or in review. Time: 5 minutes. You need: an app in the console, and the person must be an active member of your organisation.

Who can be a test user

  • Only an active member of the organisation that owns the app. You cannot add an outsider by name — an unapproved app must not appear in a stranger's launcher, and the platform has no safe way to look strangers up.
  • To invite a friend, first make them a member of your organisation (the organisation's invitation or join link), then add them as a test user.
  • At most 50 test users per app. A wider beta is what review and publication are for.
  • A suspended app takes no new test users (409 suspended).

What a test user can do

  • See and open a draft or in-review app in their launcher, like its owner.
  • Their launch code is a «tester» code — the app's test credential exchanges it for tokens, and only that one: the live credential gets 400 invalid_grant (1.13.0; the owner's own launch too). So a test user's launch reaches your test backend with test-mode tokens, and their payments are livemode: false.
  • The app's owner and its test users are the only people who may claim a test claimless intent (qr, redirect, terminal) — to everybody else it does not exist (404). At a terminal a test user is offered the test basket first. They scan a /pay/… link with Gerege App's (iOS build 122+) QR button, "Scan NFC" or the camera and confirm the test payment with Face ID — no money moves (Sandbox).
  • The console's simulation (test_user_id) plays only a test user or the owner — 409 not_a_test_user.

API (console)

With a console session (organisation permissions miniapp.read / miniapp.manage):

Method Path Body / answer
GET /api/v1/miniapp/dev/apps/{id}/test-users the list
POST /api/v1/miniapp/dev/apps/{id}/test-users {"user_id": "<uuid>"} or {"email": "…"} (exactly one), "note" ≤ 120 → 201 new, 200 already added
DELETE /api/v1/miniapp/dev/apps/{id}/test-users/{user_id} removes
{"email": "dev2@example.mn", "note": "iPhone 15 — QA"}
HTTP code When
400 validation_error both or neither of user_id and email; user_id is not a UUID; note longer than 120
404 user_not_found the person is not an active member of your organisation
409 too_many_test_users the app already has 50 test users
409 suspended the app is suspended
503 directory_unavailable the member list could not be read just now — try again

Adding and removing are written to the organisation's audit log.