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.
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"
}'
| Field | Type | Notes |
|---|---|---|
branchId | number | The branch the invitation is scoped to |
role | string | admin 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β
| Role | Onboarding | Notes |
|---|---|---|
owner | Full onboarding (personal + business information), once | Always required β the business cannot exist without an owner |
admin | None | Optional extension of the owner; no personal/business information requested |
cashier | None | Optional 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β
- Overview β hardware model, processors, and settlement
- SDK install β provision a device for a branch
- Transaction flow β the terminal payment flow
- Cancel a transaction β update a terminal payment status