Skip to content

POS quickstart

Follow these steps to connect a PAX payment terminal to Finix and process your first in-person payment.

Step 1: Power on the terminal

Place the payment terminal where you'll use it to process payments, then power it on.

To set up the payment terminal, you'll need:

  • A Wi-Fi network and router.
  • The Wi-Fi network's name and password.
  • Physical access to the payment terminal being activated.

Once the terminal is on, connect it to your Wi-Fi network and open the Finix Payment App.

Step 2: Create and activate a Device

Create a Device

Create a Device under the Merchant provisioned to process in-person payments. Include the model of the payment terminal you'll be using to process cards.

Choose the payment terminal that best fits your business needs. View our available devices to compare options.

curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/merchants/MUwfZPNW3r4EqLMzwgr6txw4/devices \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "configuration": {
      "allow_debit": true,
      "allow_standalone_authorizations": false,
      "allow_standalone_refunds": false,
      "allow_standalone_sales": false,
      "bypass_device_on_capture": true,
      "check_for_duplicate_transactions": true,
      "display_tip_on_receipt": false,
      "prompt_amount_confirmation": true,
      "prompt_manual_entry": false,
      "prompt_receipt_confirmation": true,
      "prompt_tip_on_screen": false,
      "tipping_details": {
        "allow_custom_tip": true,
        "fixed_options": [
          100,
          150,
          200
        ],
        "percent_options": [
          18,
          20,
          22
        ],
        "percent_tipping_threshold": 0
      }
    },
    "description": "Cashier One",
    "integration_mode": "PAYMENT_APP",
    "model": "PAX_A800",
    "name": "My PAX_A800 Finix Device",
    "serial_number": "1904626094"
  }'
Model PAX_A800 Device
{
  "id": "DVoDo7F6yYCnX2d6Fj9hvsd",
  "created_at": "2025-11-14T19:01:04.638451Z",
  "updated_at": "2025-11-14T19:01:04.638451Z",
  "configuration_details": {
    "allow_debit": true,
    "check_for_duplicate_transactions": true,
    "prompt_amount_confirmation": true,
    "prompt_manual_entry": false,
    "signature_threshold_amount": 10000,
    "bypass_device_on_capture": true,
    "prompt_receipt_confirmation": true,
    "display_tip_on_receipt": false,
    "prompt_tip_on_screen": false,
    "allow_standalone_authorizations": false,
    "allow_standalone_sales": false,
    "allow_standalone_refunds": false,
    "tipping_details": {
      "percent_tipping_threshold": 0,
      "percent_options": [
        18,
        20,
        22
      ],
      "fixed_options": [
        100,
        150,
        200
      ]
    },
    "idle_message": null,
    "idle_image_file_id": null,
    "automatic_receipt_delivery_methods": null,
    "available_receipt_methods": null,
    "prompt_for_signature": "NEVER",
    "surcharge_basis_points": null
  },
  "description": "Cashier One",
  "enabled": false,
  "idle_message": null,
  "integration_mode": "PAYMENT_APP",
  "merchant": "MUsMvN47nRtdgUkE23SRHDC6",
  "model": "PAX_A800",
  "name": "My PAX_A800 Finix Device",
  "serial_number": "1234567891",
  "tags": {},
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/devices/DVoDo7F6yYCnX2d6Fj9hvsd"
    },
    "merchant": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUsMvN47nRtdgUkE23SRHDC6"
    },
    "transfers": {
      "href": "https://finix.sandbox-payments-api.com/transfers"
    },
    "authorizations": {
      "href": "https://finix.sandbox-payments-api.com/authorizations"
    }
  }
}

Activate the Device

Once the Device is created and the serial_number is set, you can link the Device resource with the payment terminal by sending an activation request.

To activate the Device:

  • The Device must be online and connected to the network.
  • The Finix Payment App is open on the Device.
Activate Device
curl -i -X PUT \
    -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
    https://finix.sandbox-payments-api.com/devices/DV7DvjGoZ2AEdhAKhtKXVv4b \
    -H 'Accept: application/hal+json' \
    -H 'Content-Type: application/json' \
    -H 'Finix-Version: 2022-02-01' \
    -d '{
        "action": "ACTIVATE"
    }'

A successful request returns enabled: true.

Optionally check the device connection.

Step 3: Create a sale

With the payment terminal connected, you can begin processing in-person payments. Use the Device you enabled to create a sale.

Transfer Request
curl -i -X POST \
    -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
    https://finix.sandbox-payments-api.com/transfers \
    -H 'Accept: application/hal+json' \
    -H 'Content-Type: application/json' \
    -H 'Finix-Version: 2022-02-01' \
    -d '{
        "amount": 150,
        "currency": "USD",
        "device": "DV7DvjGoZ2AEdhAKhtKXVv4b",
        "operation_key": "CARD_PRESENT_DEBIT",
        "tags": {
        "order_number": "chris123transfer"
        }
    }'
Transfer Response
{
  "id": "TRarp7Pz21Low4u2Urw5Ub4W",
  "created_at": "2019-04-29T20:44:00.13Z",
  "updated_at": "2022-10-10T05:59:17.59Z",
  "3ds_redirect_url": null,
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "address_verification": null,
  "amount": 3138,
  "amount_requested": 3138,
  "application": "APeUbTUjvYb1CdPXvNcwW1wP",
  "capture_amount": 150,
  "card_present_details": {
    "emv_data": {
      "application_identifier": "A0000001523010",
      "application_label": "DISCOVER",
      "application_preferred_name": null,
      "application_transaction_counter": "0005",
      "cryptogram": "ARCQ F666F8891F870D33",
      "issuer_code_table_index": null,
      "pin_verified": false,
      "tags": null
    },
    "masked_account_number": "************0059",
    "name": "Test Card 05",
    "brand": "DISCOVER",
    "entry_mode": "CHIP_ENTRY",
    "payment_type": "CREDIT",
    "approval_code": "004839"
  },
  "currency": "USD",
  "device": "DVfKLD9GZtsjcJxLtc2yCcfd",
  "expires_at": "2019-05-06T20:44:00.13Z",
  "failure_code": null,
  "failure_message": null,
  "idempotency_id": null,
  "is_void": false,
  "merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
  "merchant_identity": "IDsbTBawhnLBAVeinRb84vFR",
  "messages": [],
  "raw": null,
  "security_code_verification": null,
  "source": "PImTHaz7XVPx4M7mhu9x8gkU",
  "state": "SUCCEEDED",
  "tags": {
    "TicketNumber": "45878"
  },
  "trace_id": "FNX35FSuraeKKJr65wkGVFJni",
  "void_state": "UNATTEMPTED",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/authorizations/AUarp7Pz21Low4u2Urw5Ub4W"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APeUbTUjvYb1CdPXvNcwW1wP"
    },
    "transfer": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRqQCAX7nYHUnkE5YPFTknqd"
    },
    "device": {
      "href": "https://finix.sandbox-payments-api.com/devices/DVfKLD9GZtsjcJxLtc2yCcfd"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDsbTBawhnLBAVeinRb84vFR"
    }
  }
}

You may proceed with managing payouts and the post-payments lifecycle.

Platform setup

If you are a Software Platform or Marketplace that is onboarding sellers, you will have multiple Merchants available to choose from when activating your device. Select the Merchant you want to process in-person payments for before activating your device.

See our Platform Quickstart to learn how to quickly onboard sellers.

Additional functionality

After completing the initial setup, you may also want to verify your device connection or cancel operations as needed.

Checking the connection

Prior to initiating a payment, you can check the connection to verify that the Device is ready to process payments. Checking the connection will confirm that the:

  • Device is powered on.
  • Finix Payment App is open.
  • Device is connected to the internet.
  • Device was able to connect to the Finix Server.

Use the ID of the Device you enabled to check the Connection. Below is a sample request and response.

  • The connection field in the response has two potential values:
    • open: the Device is ready to process payments.
    • closed: the Device has not met the criteria outlined above to process payment.

If the connection is closed and a payment is initiated, the Transfer will fail with an error of DEVICE_UNREACHABLE.

curl -i -X GET \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  'https://finix.sandbox-payments-api.com/devices/DVoDo7F6yYCnX2d6Fj9hvsd?include_connection=true' \
  -H 'Finix-Version: 2022-02-01'
Device
{
  "id": "DVoDo7F6yYCnX2d6Fj9hvsd",
  "created_at": "2025-11-14T19:01:04.638451Z",
  "updated_at": "2025-11-14T19:01:04.638451Z",
  "android_version": "10",
  "configuration_details": {
    "allow_debit": true,
    "check_for_duplicate_transactions": true,
    "prompt_amount_confirmation": true,
    "prompt_manual_entry": false,
    "signature_threshold_amount": 10000,
    "bypass_device_on_capture": true,
    "prompt_receipt_confirmation": true,
    "display_tip_on_receipt": false,
    "prompt_tip_on_screen": false,
    "allow_standalone_authorizations": false,
    "allow_standalone_sales": false,
    "allow_standalone_refunds": false,
    "tipping_details": {
      "percent_tipping_threshold": 0,
      "percent_options": [
        18,
        20,
        22
      ],
      "fixed_options": [
        100,
        150,
        200
      ]
    },
    "idle_message": null,
    "idle_image_file_id": null,
    "automatic_receipt_delivery_methods": null,
    "available_receipt_methods": null,
    "prompt_for_signature": "NEVER",
    "surcharge_basis_points": null
  },
  "connection": "Open", 
  "description": "Cashier One",
  "enabled": false,
  "firmware_version": "PayDroid_10.0.0_Eucalyptus_V20.1.23_20250108",
  "idle_message": null,
  "merchant": "MUsMvN47nRtdgUkE23SRHDC6",
  "model": "PAX_A800",
  "name": "My PAX_A800 Finix Device",
  "payment_app_version": "5.9.0",
  "serial_number": "2210172205",
  "tags": {},
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/devices/DVoDo7F6yYCnX2d6Fj9hvsd"
    },
    "merchant": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUsMvN47nRtdgUkE23SRHDC6"
    },
    "transfers": {
      "href": "https://finix.sandbox-payments-api.com/transfers"
    },
    "authorizations": {
      "href": "https://finix.sandbox-payments-api.com/authorizations"
    }
  }
}

Canceling a Device

To deactivate a Device and prevent it from processing future payments, send a PUT /devices/{device_id} request with the DEACTIVATE action.

Canceling a transaction

To cancel an in-progress transaction, send a PUT /devices/{device_id} request to cancel the transaction.

curl -i -X PUT \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/devices/DVoDo7F6yYCnX2d6Fj9hvsd \
  -H 'Content-Type: application/json' \
  -d '{
    "action": "CANCEL"
  }'

If successful, the failure_code and failure_message on the Transfer resource will indicate the transaction was cancelled.

Cancel Transfer Response
{
  "id": "TRt3LfP6ot6s5HG1ZN9QE5qc",
  "created_at": "2025-07-18T23:20:55.95Z",
  "updated_at": "2025-07-18T23:20:55.95Z",
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_purchase_data": null,
  "address_verification": null,
  "amount": 2000,
  "amount_requested": 2000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "card_present_details": {
    "emv_data": {
      "application_identifier": null,
      "application_label": null,
      "application_preferred_name": null,
      "application_transaction_counter": null,
      "cryptogram": null,
      "issuer_code_table_index": null,
      "network_emv_response": null,
      "pin_verified": false,
      "tags": null
    },
    "masked_account_number": null,
    "name": null,
    "brand": "UNKNOWN",
    "entry_mode": "UNKNOWN",
    "payment_type": null,
    "approval_code": null,
    "digital_signature_file_id": null
  },
  "currency": "USD",
  "destination": null,
  "device": "DVae7HFLS7BXNaFpKhdH1K6x",
  "externally_funded": "UNKNOWN",
  "failure_code": "CANCELLATION_VIA_API",
  "failure_message": "The transaction was canceled via API before the transaction was completed. The cardholder needs to attempt the transaction again.",
  "fee": 0,
  "fee_profile": "FPuizPqrhzYLbmJm88u7aqfj",
  "idempotency_id": null,
  "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
  "merchant_identity": "ID6UfSm1d4WPiWgLYmbyeo3H",
  "messages": ["RAW MESSAGE"],
  "operation_key": "CARD_PRESENT_SALE",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "raw": null,
  "ready_to_settle_at": null,
  "receipt_last_printed_at": null,
  "security_code_verification": null,
  "source": "PIhGjmMzFiT3oorhhBoMHdKc",
  "split_transfers": [],
  "state": "FAILED",
  "statement_descriptor": "FLX*FINIX FLOWERS",
  "subtype": "API",
  "supplemental_fee": null,
  "tags": {
    "order_number": "Test Transaction"
  },
  "tip_amount": null,
  "trace_id": "433ca932-11c4-4667-8a21-90db472b7691",
  "type": "DEBIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRt3LfP6ot6s5HG1ZN9QE5qc"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/ID6UfSm1d4WPiWgLYmbyeo3H"
    },
    "device": {
      "href": "https://finix.sandbox-payments-api.com/devices/DVae7HFLS7BXNaFpKhdH1K6x"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRt3LfP6ot6s5HG1ZN9QE5qc/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRt3LfP6ot6s5HG1ZN9QE5qc/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRt3LfP6ot6s5HG1ZN9QE5qc/fees"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRt3LfP6ot6s5HG1ZN9QE5qc/disputes"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPuizPqrhzYLbmJm88u7aqfj"
    }
  }
}

Next steps