Terminal Setup
Completing the PCE Terminal setup gives you a registered, configured terminal device ready to process card-present payments — connected to your merchant account and authenticated through the PCE Terminal API.
Before You Begin
| Requirement | Details | Where to get it |
|---|---|---|
| Active PCE Merchant Account | The merchant must be fully onboarded, underwritten, and approved on PCE before a terminal device can be ordered or activated. | PCE Account Management team |
| Partner Access | Terminal device ordering is initiated through your Partner, who submits the Equipment Order Form on your behalf. | Your assigned PCE Partner |
| Consumer Key and Consumer Secret | Required to obtain a JWT bearer token for Terminal API authentication. | PCE Account Management team |
| HTTPS Connection | The terminal device requires a stable internet connection — Wi-Fi or Ethernet — for real-time authorization. | Your network environment |
Integration Overview
Terminal setup follows six sequential steps. Complete each step before proceeding to the next.
- Onboard your merchant account — Complete merchant onboarding and receive account approval.
- Order your terminal device — Submit a device order through your Partner or directly from Priority.
- Configure your terminal — Priority builds the configuration file for your terminal based on your environment (retail or restaurant).
- Authenticate with the Terminal API — Obtain a JWT bearer token using your Consumer Key and Consumer Secret.
- Verify your terminal — Confirm the device is registered and in
ENABLEDstatus via the Terminal API. - Test your integration — Run end-to-end transaction tests in the sandbox environment before going live.
Step 1: Onboard Your Merchant Account
Before ordering or activating a terminal device, your merchant account must be fully onboarded and approved on PCE.
Note — Terminal device ordering and activation cannot proceed until the merchant account status is Approved. Contact the PCE Account Management team to confirm account status.
Step 2: Order Your Terminal Device
Once the merchant account is approved, a terminal device can be ordered through one of two pathways:
| Pathway | How it Works | When to Use |
|---|---|---|
| Order from Priority | The merchant contacts their Partner, who submits an Equipment Order Form to the Priority team. Priority ships the device and builds the configuration file. | Preferred pathway — Priority manages the full setup. |
| Order from a Supplier | The Partner orders the terminal from a third-party vendor and submits a file build request to Priority for configuration. | Use when sourcing hardware independently from a preferred supplier. |
Order process:
- The merchant contacts their Partner to request a terminal device.
- The Partner submits an Equipment Order Form to the Priority team.
- The Priority team reviews and approves the order.
- The terminal is shipped to the designated delivery address.
Once the order is approved, Priority configures the terminal's encryption keys, payment applications, and connection settings before shipment. You do not need to configure these manually.
Step 3: Configure Your Terminal
Terminal devices are configured by Priority during the file build process. The configuration is based on your business environment:
| Environment | Configuration | Notes |
|---|---|---|
| Retail | Standard card-present configuration. Supports EMV, NFC, and magnetic stripe. | Default configuration for most merchants. |
| Restaurant | Includes tip collection support at the point of sale. | Requires restaurant-specific file build. Contact PCE Account Management to request this configuration. |
Note — Tip collection must be enabled during the file build process. It cannot be activated after the terminal has been configured and shipped. Confirm your environment type with the PCE Account Management team before submitting the order.
Step 4: Authenticate with the Terminal API
All PCE Terminal API endpoints require a valid JWT bearer token in the Authorization header. Obtain your token using your Consumer Key and Consumer Secret before making any Terminal API calls.
curl --request POST \
--url 'https://api2.mxmerchant.com/security/v1/application/authorize' \
--header 'content-type: application/json' \
--data '{
"consumerKey": "{your_consumer_key}",
"consumerSecret": "{your_consumer_secret}"
}'Store the returned JWT bearer token and pass it in the Authorization header of every Terminal API request:
Authorization: Bearer {your_jwt_token}
JWT tokens expire after a set period. Implement token refresh logic in your integration to prevent authentication failures during active terminal sessions.
Step 5: Verify Your Terminal
Before processing transactions, confirm that your terminal device is registered and in ENABLED status under your merchant account.
- Make a
GETrequest to/terminal/v1/merchantid/{merchantId}to retrieve all registered terminals.
{
"records": [
{
"id": "TRM-001",
"name": "Front Counter Terminal",
"status": "Active",
"enabled": true,
"merchantId": "1000156763",
"device": "MXMAPI01"
}
]
}- Confirm the following fields in the response before proceeding:
| Field | Expected Value | Action if Incorrect |
|---|---|---|
enabled | true | Contact PCE Account Management to activate the device. |
status | Active | Contact PCE Account Management if status is not Active. |
id | Unique terminal ID | Store this value — required for all transaction requests. |
Step 6: Test Your Integration
Validate your complete terminal workflow in the sandbox environment before going live.
Sandbox environments:
| Environment | Terminal API Base URL |
|---|---|
| Sandbox | https://sandbox-api2.mxmerchant.com/terminal/v1/ |
| Production | https://api2.mxmerchant.com/terminal/v1/ |
Test the following scenarios before going live:
| Scenario | How to Simulate | Expected Result |
|---|---|---|
| Successful sale | Submit a Sale transaction with a test card | status: approved |
| Declined transaction | Use a test card configured for decline | status: declined |
| Transaction cancellation | Cancel before the customer presents their card | status: canceled |
| Polling timeout | Do not complete the transaction within 2 minutes | Surface timeout error in your application |
| Final record retrieval | Call GET /checkout/v3/payment with the replayId | Full payment object returned |
Go Live Checklist
| Item | How to Verify |
|---|---|
| Merchant account approved | Confirm Approved status in the PCE dashboard. |
| Terminal device received and powered on | Device displays Ready on startup. |
Terminal registered and enabled: true | Confirmed via GET /terminal/v1/merchantid/{merchantId}. |
| JWT authentication implemented | Bearer token obtained and passed in Authorization header. |
| Token refresh logic implemented | Integration handles token expiry without session interruption. |
replayId generated uniquely per transaction | Each transaction uses a new client-generated UUID. |
devicePaymentAuditId stored on transaction creation | Stored immediately from Step 2 response for polling. |
| Polling timeout capped at 2 minutes | Integration surfaces an error if no final state is reached. |
| Final payment record retrieved from Checkout API | GET /checkout/v3/payment called after every final state. |
| All test scenarios validated in sandbox | Approved, declined, canceled, and timeout flows tested. |
| Production API credentials in place | Live Consumer Key and Consumer Secret configured. |
Troubleshooting
| Issue | Likely Cause | Action |
|---|---|---|
| Terminal not appearing in API response | Device not yet registered or activation pending. | Contact the PCE Account Management team to confirm activation. |
enabled: false in terminal response | Device is inactive or decommissioned. | Contact PCE Account Management to reactivate the device. |
| Authentication failure on Terminal API | JWT token expired or invalid credentials. | Refresh the JWT token using your Consumer Key and Consumer Secret. |
Transaction stuck in SENTTOTERMINAL | Device is offline or not responding. | Check network connectivity. Confirm the device displays Ready. |
canceled status returned immediately | Terminal rejected the request before card presentation. | Verify terminalId is correct and the device is powered on and connected. |
| Payment record not found on Checkout API | replayId does not match the value submitted at transaction creation. | Confirm the replayId was stored immediately and passed without modification. |