Mobile Payments
A set of endpoints dedicated for mobile payment solution providers integrating with SkyTab POS systems.
Payment Flow
The following diagram illustrates the simplified mobile payment flow:
The mobile payment flow consists of these steps:
- Retrieve Check - The third party sends a request to retrieve a check by order number
- Check List Response - The third party receives a list of checks matching the provided order number
- Execute Payment - The third party sends a request to execute a payment transaction using an access token obtained via the Auth Token process, as described in Access Token Exchange Flow
- Payment Success - The third party receives payment data upon a successful sale
- Register Payment - The third party registers the payment data for the specific check
- Confirm Registration - The third party receives the payment identifier and the remaining amount due, if applicable
Access tokens are obtained through the Auth Token exchange process. See the Payment Auth Token documentation for details on retrieving and exchanging auth tokens.
Retrieve checks for a location
Retrieve checks for a specific location, optionally filtered by order number. Returns a list of checks with their details including items, totals, and payment status.
Path parameters
- Name
locationId- Type
- integer
- Description
The location identifier. Required.
Query parameters
- Name
filter[orderNumber]- Type
- string
- Description
Filter checks by order number. Optional.
- Name
offset- Type
- number
- Description
Pagination offset. Default: 0.
- Name
limit- Type
- number
- Description
Results per page. Default: 100, Max: 1000.
Request
curl -X GET \
'https://conecto-api.shift4payments.com/api/pos/v2/244/checks?filter[orderNumber]=ORDER-123' \
-H 'x-access-key: YOUR_CLIENT_ID' \
-H 'x-timestamp: 1709251200' \
-H 'x-signature: YOUR_SIGNATURE'
Response
{
"results": [
{
"guid": "check_abc123",
"posRef": "CHK-1001",
"orderNumber": "ORDER-123",
"tableName": "Table 5",
"employeeName": "John Doe",
"totalAmount": 4850,
"totalPaid": 0,
"totalDue": 4850,
"status": "open",
"createdAt": "2024-03-15T18:30:00Z",
"items": [
{
"name": "Burger",
"quantity": 2,
"unitPrice": 1299,
"totalPrice": 2598
},
{
"name": "Fries",
"quantity": 2,
"unitPrice": 499,
"totalPrice": 998
}
],
"taxes": [
{
"name": "Sales Tax",
"amount": 254
}
]
}
],
"meta": {
"total": 1,
"offset": 0,
"limit": 100
}
}
Retrieve a check for a location
Retrieve a specific check by its POS reference ID. Returns complete check details including all items, modifiers, payments, and totals.
Path parameters
- Name
locationId- Type
- integer
- Description
The location identifier. Required.
- Name
posRef- Type
- string
- Description
The POS check reference identifier. Required.
Request
curl -X GET \
'https://conecto-api.shift4payments.com/api/pos/v2/244/checks/CHK-1001' \
-H 'x-access-key: YOUR_CLIENT_ID' \
-H 'x-timestamp: 1709251200' \
-H 'x-signature: YOUR_SIGNATURE'
Response
{
"guid": "check_abc123",
"posRef": "CHK-1001",
"orderNumber": "ORDER-123",
"tableName": "Table 5",
"employeeName": "John Doe",
"employeeRef": "emp_123",
"totalAmount": 4850,
"totalItems": 3596,
"totalTax": 254,
"totalPaid": 0,
"totalDue": 4850,
"status": "open",
"guestCount": 2,
"createdAt": "2024-03-15T18:30:00Z",
"updatedAt": "2024-03-15T18:35:00Z",
"items": [
{
"guid": "item_001",
"posRef": "item_burger",
"name": "Burger",
"quantity": 2,
"unitPrice": 1299,
"totalPrice": 2598,
"modifiers": [
{
"name": "Extra Cheese",
"quantity": 2,
"unitPrice": 100,
"totalPrice": 200
}
]
},
{
"guid": "item_002",
"posRef": "item_fries",
"name": "Fries",
"quantity": 2,
"unitPrice": 499,
"totalPrice": 998
}
],
"payments": [],
"taxes": [
{
"name": "Sales Tax",
"rate": {
"type": "percent",
"percent": 82500
},
"amount": 254
}
]
}
Pay for a specific check
Register a payment for a specific check. This endpoint is used after successfully processing a payment transaction through the i4go gateway. The payment data is associated with the check in the POS system.
Path parameters
- Name
locationId- Type
- integer
- Description
The location identifier. Required.
- Name
posRef- Type
- string
- Description
The POS check reference identifier. Required.
Request body attributes
- Name
amount- Type
- integer
- Description
Payment amount in US cents. Required.
- Name
transactionId- Type
- string
- Description
Transaction identifier from the payment gateway. Required.
- Name
paymentMethod- Type
- string
- Description
Payment method used (e.g., "credit_card", "debit_card"). Required.
- Name
last4- Type
- string
- Description
Last 4 digits of the payment card. Optional.
- Name
cardBrand- Type
- string
- Description
Card brand (e.g., "visa", "mastercard", "amex"). Optional.
- Name
tipAmount- Type
- integer
- Description
Tip amount in US cents. Optional, default: 0.
Request
curl -X POST \
'https://conecto-api.shift4payments.com/api/pos/v2/244/checks/CHK-1001/pay' \
-H 'Content-Type: application/json' \
-H 'x-access-key: YOUR_CLIENT_ID' \
-H 'x-timestamp: 1709251200' \
-H 'x-signature: YOUR_SIGNATURE' \
-d '{
"amount": 4850,
"transactionId": "txn_abc123xyz",
"paymentMethod": "credit_card",
"last4": "4242",
"cardBrand": "visa",
"tipAmount": 750
}'
Response
{
"paymentId": "pay_xyz789",
"checkGuid": "check_abc123",
"posRef": "CHK-1001",
"amount": 4850,
"tipAmount": 750,
"totalPaid": 5600,
"remainingDue": 0,
"status": "paid",
"processedAt": "2024-03-15T19:45:00Z"
}
Check Object
The Check object represents a POS check (also known as a ticket) and contains comprehensive information about the transaction.
- Name
guid- Type
- string
- Description
Unique check identifier in UUID format.
- Name
posRef- Type
- string
- Description
POS check reference identifier. Unique per location.
- Name
orderNumber- Type
- string
- Description
Order number associated with the check. Used for mobile payment lookup.
- Name
tableName- Type
- string
- Description
Table identifier for dine-in orders.
- Name
employeeName- Type
- string
- Description
Name of employee who created or owns the check.
- Name
employeeRef- Type
- string
- Description
Employee reference identifier.
- Name
totalAmount- Type
- number
- Description
Total check amount including items, taxes, and fees in US cents.
- Name
totalItems- Type
- number
- Description
Subtotal of all items before taxes and fees in US cents.
- Name
totalTax- Type
- number
- Description
Total tax amount in US cents.
- Name
totalPaid- Type
- number
- Description
Amount already paid on the check in US cents.
- Name
totalDue- Type
- number
- Description
Remaining amount due on the check in US cents.
- Name
status- Type
- string
- Description
Check status: "open", "paid", or "closed".
- Name
guestCount- Type
- number
- Description
Number of guests for this check.
- Name
createdAt- Type
- string
- Description
ISO 8601 timestamp when the check was created.
- Name
updatedAt- Type
- string
- Description
ISO 8601 timestamp when the check was last updated.
- Name
items- Type
- array
- Description
Array of CheckItem objects representing ordered items.
- Name
payments- Type
- array
- Description
Array of CheckPayment objects representing payments made on the check.
- Name
taxes- Type
- array
- Description
Array of Tax objects representing taxes applied to the check.
Check Item
- Name
guid- Type
- string
- Description
Unique item identifier.
- Name
posRef- Type
- string
- Description
POS item reference.
- Name
name- Type
- string
- Description
Item name as displayed in POS.
- Name
quantity- Type
- number
- Description
Quantity ordered.
- Name
unitPrice- Type
- number
- Description
Price per unit in US cents.
- Name
totalPrice- Type
- number
- Description
Total price (unitPrice × quantity) in US cents.
- Name
modifiers- Type
- array
- Description
Array of modifier objects applied to this item.
Check Payment
- Name
guid- Type
- string
- Description
Unique payment identifier.
- Name
amount- Type
- number
- Description
Payment amount in US cents.
- Name
tipAmount- Type
- number
- Description
Tip amount in US cents.
- Name
paymentMethod- Type
- string
- Description
Payment method used.
- Name
transactionId- Type
- string
- Description
Payment gateway transaction identifier.
- Name
last4- Type
- string
- Description
Last 4 digits of payment card.
- Name
cardBrand- Type
- string
- Description
Card brand (visa, mastercard, amex, etc.).
- Name
processedAt- Type
- string
- Description
ISO 8601 timestamp when payment was processed.
Best practices
Query by order number
When retrieving checks for mobile payment, always filter by order number to find the specific check associated with the customer's order. This avoids confusion with other open checks at the location.
Verify amounts
Before processing a payment, verify the totalDue amount on the check matches what the customer expects to pay. This prevents overpayment or underpayment issues.
Handle partial payments
The API supports partial payments. Check the remainingDue field in the response to determine if additional payment is needed.
Process payments atomically
- First, process the payment through the i4go gateway
- Only if successful, register the payment with the check using the
/payendpoint - If registration fails, consider reversing the gateway transaction
Currency handling
All amounts are in US cents:
- Display: Divide by 100 (4850 cents = $48.50)
- Always use integer arithmetic to avoid rounding errors
Error handling
Implement proper error handling:
- Check not found (404): Order number may be incorrect or check already closed
- Payment failed (400): Check amount mismatch or validation error
- Server error (500): Retry with exponential backoff
Security
- Never expose access tokens in client-side code
- Store transaction IDs securely for reconciliation
- Implement request timeouts to prevent hanging connections
- Always use HTTPS for all API communications