Skip to main content

TreezPay Virtual Terminal

An in-dept guide to navigating the new TreezPay Virtual Terminal

Treez Support avatar
Written by Treez Support
Updated this week

Feature Overview

TreezPay Virtual Terminal (VT) is a TreezPay-hosted interface that enables integrated payments for cannabis retailers operating outside the SellTreez POS ecosystem. By decoupling payments from POS, Treez opens its payment gateway to a broader market of retailers who need access to a variety of cannabis payment solutions without transitioning to SellTreez.

Why Use Virtual Terminal?

Whether at the counter, on the move, or managing payments centrally, VT enables smoother workflows, better data, and faster customer experiences.

Here’s what makes VT a powerful upgrade to any POS environment:

1. Enhanced Checkout Efficiency & Customer Experience

  • Keep terminals customer-facing at all times—no need to pass devices behind the counter

  • Ideal for delivery, curbside, and floating budtender workflows

  • Speeds up checkout and reduces bottlenecks with easy handoff to customers

2. Intuitive & Error-Resistant Workflow

  • Launch payments from a streamlined, browser-based UI instead of interacting directly with a terminal

  • Eliminates fat-finger mistakes and reduces miskeyed amounts or payment type selections

  • Greatly improves confidence in execution, especially with large tickets or tips

3. Automatic Attribution for Clean, Actionable Data

  • Payments are automatically associated with users—no need for clerks to self-identify on the terminal

  • Location-level attribution is tied to each transaction for better store and org-level reporting

  • Solves one of the major limitations of standalone ACH workflows, which otherwise lack user-level attribution

4. Unified & Actionable Reporting

  • Consolidated view of all payments across modalities and processors

  • Access to purpose-built reports:

    • Transaction Summary & Details

    • Tip Reporting & Reconciliation

    • Customer detail views for dispute resolution

  • Easily exportable CSV reports for reconciliation with processor deposits

5. Fallback Support to Keep Operations Moving

  • Ensures 100% traceability even when something goes awry

  • Switch to Fallback Providers on a dime, Retry failed payments, retroactively Verify Sale, or log successful outcomes using Record Sale

6. Permission-Based Access Control

  • Tasks like manual sale recording and provider setup can be limited to trusted users

  • Protects against misuse and ensures compliant, auditable operations

  • Built-in roles align with user permissioning for granular control


Implementation Guide

This section outlines the fundamentals and preconditions for getting started with Virtual Terminal.

Create Org Users & Assign Pay Permissions

These steps will guide you towards creating org and store level users and assigning them appropriate TreezPay permissions allowing you and your employees to access the payment portal and Virtual Terminal

Note: A primary Admin user will first be created by Treez with all the necessary permissions to create new users and assign permissions.

Step 1: Create User

  1. Login to https://app.treez.io/ as the primary Admin user

  2. Navigate to Org Settings > User Management

  3. Select “Add User”

  4. Input required user details

  5. Assign a Role

  6. Assign Store(s)

  7. Save

Notes ⚠️:

  • Employee Number is optional, but in many cases will be sent to the payment provider for better attribution

  • Pin is required, but N/A for non-SellTreez POS users

Step 2: Assign TreezPay Platform Permissions to Roles

  1. Navigate to Org Settings > Role Management

  2. Find desired role && select “Edit”

    • Treez offers a variety of default roles or ability to create a "custom" role within this view

  3. Navigate to TreezPay Platform permission set

  4. Assign TreezPay Platform permissions (TreezPay Portal access)

  • Admin users: It is generally safe to provision all TreezPay Platform permissions (less Application Center) to trusted admin users and managers

  • Budtenders: Best practice is to only provision necessary portal visibility to budtenders or front of house staff.

    • View Dashboard - grants access to the portal

    • View Organization - grants access to the transaction page for troubleshooting

    • Virtual Terminal - grants access to the Virtual Terminal module

Note ⚠️: Application Center and Document Management should be reserved for ownership as to not expose sensitive payment underwriting data to staff

Step 3: Assign TreezPay Permissions to Roles

  1. Scroll down to TreezPay permission set

  2. Assign TreezPay permissions (Perform payments)

    • Admin users: Again it is generally safe to give Admin level users all TreezPay permissions

    • Budtenders: Similarily, budtenders and front of house staff should typically only be granted access to the minimum permissions necessary to create and reconcile payments.

      • Create Payments - create a card payment and capture ACH

      • Create Invoices - create an ACH payment

      • Read Entity Configurations - validates enabled provider to surface in Virtual Terminal

      • Read Payments - allows user to view payment status

      • Read Payment Device Locations - validates terminal location to surface in Virtual Terminal

      • Cancel Payments - allows user to cancel a payment (pending provider function availability)

  3. Save Role

Step 4: Confirm Access to TreezPay Portal & Virtual Terminal

  1. Upon user creation, navigate to Org Dashboard > TreezPay

  2. Select desired store from the list

  3. Expect to be logged into your TreezPay Portal

  4. In the left pane navigate to "Virtual Terminal"

Note ⚠️: Navigation between modules is determined by role access and permissions. The above permission assignment is generally suggested, but your experience may differ. Contact [email protected] with any questions regarding permissions and access control.

See: All About User Management in Treez help center for more details

Setting up the Virtual Terminal

Once an organization, users, and stores are provisioned with appropriate permissions, the next step is to configure the TreezPay Virtual Terminal (VT) for initiating payments. This configuration allows payments to be routed through assigned payment terminals at store specific locations.

Step 1: Create Store-Level Locations (POS Stations)

  1. Navigate to Settings > Location Configuration

  2. To add a new location:

    • Click Add Location

    • Input name (e.g., POS3)

    • Save

Note ⚠️: Locations are typically representative of physical POS stations and are important not only for payment attribution and reporting, but also to ensure a payment is fired to the correct terminal assigned to the corresponding POS location.

Step 2: Configure Payment Providers (VT Basics)

  1. Locate your approved provider

  2. Click “Configure” to nav into the provider’s settings

  3. Ensure the following:

    • Checkout Enabled is toggled ON

    • Set as Default is selected

  4. Save

Note ⚠️: Setting default is necessary (card providers) to ensure that if multiple providers exist for the same modality, VT uses the “default” to determine which provider terminal to send requests through.

Step 3: Add & Assign Terminals (Cards Only)

  1. While still in Payment Configuration, under the selected provider:

  2. Click Add Payment Device

    • Input:

      • Terminal Name (e.g., Terminal 1)

      • POS Location (e.g., POS1)

      • Register ID (provided by support or terminal provider)

  3. Click Add Payment Device to save

Note ⚠️: Repeat as needed for each modality (e.g., add a credit terminal and an ATM terminal both at POS1).

Step 4: Verify Setup

  1. Return to Virtual Terminal

  2. Select a location from dropdown (e.g., POS1)

  3. Enter amount & hit “Process Payment”

  4. You should now see available payment options for each configured modality at that respective location


Virtual Terminal Payment Flows

With the Virtual Terminal configured, store locations created, and terminals assigned to their respective locations, we can now walk through the standard payment flows supported by Virtual Terminal. These flows demonstrate how a TreezPay-enabled retailer can process payments in real-time across multiple modalities.

Step 1: Select Location and Enter Payment Info

  1. Navigate to the Virtual Terminal module in the TreezPay Portal

  2. Select a store location (e.g., POS1) from the dropdown list

  3. Optional but recommended: Enter customer information (phone/email)

    • Phone number is required for credit modalities due to KYC/SMS delivery requirements

  4. Optional: Enter Reference ID

    • Use your POS order number (or Treez Ticket Alpha if applicable)

    • Helps reconcile transactions for support or auditing purposes

  5. Input a Payment Amount (any valid number)

  6. Click “Process Payment

Step 2: Test Integrated Card Terminal Flow (if applicable)

  1. Click Charge Integrated {Card Payment Type}

  2. If the terminal is set up correctly, the device will activate and display the payment screen to the customer

  3. Customer adds tip (if enabled), swipes card, submits payment

  4. Upon payment submission:

    • VT UI confirms successful payment and surfaces amount

    • The payment is automatically logged and immediately visible in the Transactions > Details tab

Step 3: Test Integrated ACH Flow (if applicable)

  • Input desired amount (e.g., $10)

  • Customer info is not required for ACH but still helpful for attribution

  • Select an ACH provider (e.g., Stronghold or Aeropay)

  • A QR code will be displayed on screen

    • Important: In V1, payment requires the customer to scan the QR code using their mobile device

  • Once the customer verifies and submits payment:

    • VT UI receives an authorization event

    • In V1, the payment is automatically captured post authorization

      • (Coming in V2: deferred capture support via new "Invoices" tab)

  • Again, ACH payment is automatically logged and immediately visible in Transactions > Details

Notes ⚠️:

  • Reference ID: Encouraged for all payment types for downstream reconciliation

  • ACH Limitations: V1 supports only QR-based ACH flows; Push-to-SMS ACH delivery is planned in V2 to improve usability

  • Real-Time Updates: All successful transactions will immediately reflect in the Transactions dashboard


Virtual Terminal Edge Case Handling

Although rare, edge cases and communication failures between the payment provider and TreezPay Gateway can occur during payment processing. The Virtual Terminal provides a series of recovery tools designed to ensure transactions can be validated, corrected, and properly reconciled, even in the absence of an immediate success response from the processor.

Verify Sale Function

In some instances, a payment may be fully completed on the terminal (e.g., the customer receives a receipt marked Approved) but remains in a continuous loading state in the Virtual Terminal. This is typically caused by a delayed or dropped status callback from the processor.

How to Perform

  • Upon customer confirmation of payment success && Virtual Terminal does not reflect success

  • Navigate to Transactions > Details

  • Locate the transaction (will be in Initiated status)

  • Click the ellipsis (⋯) on the right side of the transaction row

  • Select Verify Sale

  • If the processor confirms the transaction, the system will:

    • Update the status to Successful

    • Log any associated attributes (tip, cashback, etc.)

Record Sale Function

In rare edge cases, a provider may return a Generic Error back to the Virtual Terminal—even though the customer completed the payment and received an Approved confirmation. This can occur due to unexpected processor-side issues or hardware timeouts.

When neither the real-time status nor Verify Sale can resolve the payment, an admin user may invoke Record Sale to manually update the transaction record. This action should only be used when physical proof (i.e., the receipt) confirms the transaction.

How to Perform

  • Upon customer confirmation of payment success && Virtual Terminal surfaces a generic error

  • Navigate to Transactions > Details

  • Click the ellipsis (⋯) for the payment in question

  • Select Record Sale

  • Enter the following, based on the customer receipt:

    • Total Tendered

    • Tip (if applicable)

    • Cashback (if applicable)

  • Confirm and submit

After submission:

  • Refresh the transaction table to see the transaction updated to Successful

  • Drill into the record to view the recorded-by user attribution, in case further follow-up is needed

Note ⚠️: It is still considered best practice to always attempt a “Verify Sale” before manually recording the sale. That said, if the api returned a generic error after the initial payment, then it will most likely continue to return the same error in subsequent verification attempts. At this point, an Admin should manually record the sale as success.


Reporting & Reconciliation

Virtual Terminal users have access to several built-in reporting modules within the TreezPay Portal that allow for real-time transaction visibility, reconciliation with processor payouts, and end-of-day operations. This section outlines the core reporting areas relevant to merchants using the Virtual Terminal product.

Analytics Overview

When logging into the TreezPay Portal, users will land on the Analytics Dashboard by default. This view offers a high-level snapshot of payment performance across a specified time period and intended to give operators quick insight into payment health.

Key Metrics:

  • Gross Receipts

  • Total Transactions

  • Average Order Value (AOV)

  • % Change over Time

  • Breakdown by Payment Type (ACH, Debit, ATM, Credit)

Transaction Summary

Navigate to Transactions > Summary for a breakdown of payment activity over a selected time frame. This summary view is most utilized for end of day reporting and reconciliation against payment provider deposits.

Features:

  • Aggregate view by payment type

  • Shows gross totals by specified time period

  • Filters for date range

Note ⚠️: Fee aggregates are included in the summary breakdown by pay type but are excluded from gross totals. This is intentional as fees can have different splits and are typically paid out separately.

Transaction Details

The Transactions > Details view provides a line-item breakdown of all payments, successful or failed. This module is the primary resource for troubleshooting payment issues and confirming transaction resolution status. It's especially useful for identifying edge cases discussed earlier.

Key Capabilities:

  • Search by ticket ID, customer name, or reference ID

  • Filter by payment status (e.g., Successful, Failed, Initiated)

  • Drilldown on failure reasons for advanced troubleshooting

  • View last four digits of card (provider pending) to support dispute resolution

  • Export as CSV for external reconciliation or deeper offline analysis

Tip Summary

Navigate to Tips > Summary for visibility into employee-level tipping performance. Use this view to support transparent and accurate tip payouts for employees across integrated payment methods.

Features:

  • View gross tips by payment type and employee

  • Filter by employee ID or employee name

  • Drill down into Tips > Details for transaction-level attribution

  • Export to CSV for payroll reporting

Tip Details

Similar to Transaction > Details, Tip > Details provides line item insight into any payments that had an associated tip on them. This enhanced reporting view is helpful for understand tipping patterns, and even which customers tend to be the most generous.

Key Capabilities:

  • Payment attribute quick search

  • Advanced filtering

  • Drilldown on tip payments

  • Export as CSV

Notes ⚠️

  • All reports are scoped to user permissions and org/store access levels

  • Reporting modules reflect real-time payment data as returned from processor callbacks or system updates (e.g., verify sale, record sale)

  • Reconciliation best practice: Filter for Successful payments in transactions > details to match line item totals with processor reports if suspect a variance

    • Pro tip - Ensure you are matching processor reports on exact reporting periods and timezones


Support Resources

If interested in getting started with Virtual Terminal, need additional clarity on the topics in this doc, or simply want to explore if the VT is a good fit, please see the following support resources below.

Did this answer your question?