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
Login to https://app.treez.io/ as the primary Admin user
Navigate to Org Settings > User Management
Select “Add User”
Input required user details
Assign a Role
Assign Store(s)
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
Navigate to Org Settings > Role Management
Find desired role && select “Edit”
Treez offers a variety of default roles or ability to create a "custom" role within this view
Navigate to TreezPay Platform permission set
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
Scroll down to TreezPay permission set
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)
Save Role
Step 4: Confirm Access to TreezPay Portal & Virtual Terminal
Upon user creation, navigate to Org Dashboard > TreezPay
Alternatively, navigate directly to https://app.treezpay.com
Login = same credentials as Organization login
Select desired store from the list
Expect to be logged into your TreezPay Portal
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)
Navigate to Settings > Location Configuration
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)
Locate your approved provider
Click “Configure” to nav into the provider’s settings
Ensure the following:
Checkout Enabled is toggled ON
Set as Default is selected
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)
While still in Payment Configuration, under the selected provider:
Click Add Payment Device
Input:
Terminal Name (e.g.,
Terminal 1
)POS Location (e.g.,
POS1
)Register ID (provided by support or terminal provider)
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
Return to Virtual Terminal
Select a location from dropdown (e.g.,
POS1
)Enter amount & hit “Process Payment”
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
Navigate to the Virtual Terminal module in the TreezPay Portal
Select a store location (e.g.,
POS1
) from the dropdown listOptional but recommended: Enter customer information (phone/email)
Phone number is required for credit modalities due to KYC/SMS delivery requirements
Optional: Enter Reference ID
Use your POS order number (or Treez Ticket Alpha if applicable)
Helps reconcile transactions for support or auditing purposes
Input a Payment Amount (any valid number)
Click “Process Payment
Step 2: Test Integrated Card Terminal Flow (if applicable)
Click Charge Integrated {Card Payment Type}
If the terminal is set up correctly, the device will activate and display the payment screen to the customer
Customer adds tip (if enabled), swipes card, submits payment
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 variancePro 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.