Skip to main content
Migo Docs

Terminal Payments (Tap to Phone)

Tap to Phone turns an Android phone into a contactless terminal β€” no dedicated POS hardware. A single Android app, built on Migo's SDK, uses the phone's NFC reader to accept card-present payments and connects to Migo's payment platform to also accept alternative (non-card) payments from the same device.

info

The app is Android only. Card reading runs on the device NFC through the Migo SDK; alternative payments are handled by Migo's platform.

How the module works β€” at a glance​

1. Create the lead (business prospect) POST /leads ──► returns an invitationCode
β”‚
β–Ό
2. Register the owner with that code POST /users { deviceId, invitationCode, ... }
β”‚ provisions in one call: user Β· business Β· branch Β· terminal Β· payment methods
β–Ό
3. Activate the terminal
β”œβ”€ Card-present after information verification + acquiring-processor onboarding
└─ Alternative pays instant activation
β”‚
β–Ό
4. Charge & settle settlement vehicle: card Β· balance Β· bank account (T+1 or as agreed)

Add more users later (admin / cashier): POST /users/invitation-code β†’ new code β†’ POST /users

1. Create the lead​

A lead captures the business prospect and the payment methods it will offer (card rails plus alternative rails) and the SDK product to enable. Creating the lead returns an invitationCode β€” you use it directly to register the owner in step 2 (there is no separate code-generation step for the owner).

curl -X POST https://api.ali.app/rest/leads \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"businessName": "Example Store",
"commercialName": "Example Store",
"firstName": "Example",
"lastName": "Owner",
"country": "GT",
"paymentMethods": [
{ "slug": "akisiQR", "acquirerSlug": "akisi" }
],
"sdk": "MIGO_LINK_USD"
}'

Response β€” the lead is returned with its invitationCode:

{
"success": true,
"data": {
"_id": "...",
"invitationCode": "25DC4D1"
}
}

See Leads for the full field reference and response.

2. Register the owner​

Register the owner with the invitationCode returned by the lead. This single call provisions the user, business, branch, terminal, and assigns the payment methods declared on the lead.

curl -X POST https://api.ali.app/rest/users \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "device-0000",
"invitationCode": "25DC4D1",
"username": "owner@example.com",
"password": "<password>",
"confirmPassword": "<password>",
"termsAndConditionsAccepted": true
}'

Response β€” the standard envelope with the created user under data:

{ "success": true, "data": { } }

See Cardholder management for the full registration reference.

3. Add admin or cashier users (optional)​

The owner is registered with the code returned by the lead. To add admin or cashier users to the same branch, generate a new invitation code with POST /users/invitation-code and have the new user register with it (step 2). These users are extensions of the owner β€” they do not repeat the business onboarding.

curl -X POST https://api.ali.app/rest/users/invitation-code \
-H "Authorization: Bearer <token>" \
-H "x-user-token: <user-token>" \
-H "Content-Type: application/json" \
-d '{
"branchId": 24,
"role": "cashier"
}'
FieldTypeNotes
branchIdnumberThe branch the invitation is scoped to
rolestringadmin or cashier

Response β€” the generated invitation code:

{
"success": true,
"data": { "invitationCode": "B1685DA" }
}

The new user then registers with that invitationCode exactly as in step 2.

Terminal activation​

  • Card-present charging is enabled after information verification and onboarding with the acquiring processor. Until then, the terminal cannot run card transactions.
  • Alternative payments are activated instantly β€” the terminal can accept them as soon as the user is registered.

Settlement​

Payments captured by the terminal are settled to the settlement vehicle associated with the business. The vehicle can be a card, the balance, or a bank account. Settlement occurs one day or more after the charge (T+1+), or on the schedule agreed with your commercial contact.

Roles​

RoleOnboardingNotes
ownerFull onboarding (personal + business information), onceAlways required β€” the business cannot exist without an owner
adminNoneOptional extension of the owner; no personal/business information requested
cashierNoneOptional extension of the owner; no personal/business information requested

admin and cashier are added by issuing additional invitation codes with the matching role β€” they reuse the onboarding the owner already completed.

Multiple terminals per branch​

A branch can run more than one terminal. Register additional devices under the same branch to add terminals.

Reference pages​