# Payments Configuration

# Manage Deposit Types

<p class="callout info">The Manage Deposit Types feature allows administrators to define and manage various categories of deposits, such as those required for permits, equipment, or specific services. Its primary purpose is to accurately track refundable amounts, provide clear financial oversight, and ensure proper accounting for deposited funds within the system. This article is intended for OPS-COM administrators responsible for financial configurations and managing user deposits.</p>

## Setup and Configuration

This feature is a core administrative tool used to establish financial deposit requirements within the system.

**Admin Side:** Administrators must have the appropriate system role permissions enabled to access the payments configuration menus and manage the list of deposit types.

## Using this Feature

Administrators can use the following instructions to navigate the management interface to seamlessly add, edit, or delete various deposit types.

### Accessing the Management Interface

1. Hover over **System Configuration**, click **Payments**, then **Manage Deposit Types**.

### Adding a Deposit Type

1. Click the **Add Deposit Type** button.
2. Enter a descriptive identifier in the **Label** field (e.g., Permit Deposit or Key Fob Deposit).
3. Enter prompt instructions in the **Placeholder Text** field if desired. This optional text appears in the deposit information text field to guide administrators when creating a deposit record.
4. Enable or disable the **Flags** toggle. This controls the ability to edit the **Assignable Text** field in the resulting active deposit record, which will appear in the user's profile associated with the deposit.
5. Enter the required monetary value in the **Amount** field.
6. Enable the **Active** checkbox to ensure the deposit is currently available to be assigned.
7. Click the **Save Changes** button.

### Editing a Deposit Type

1. Locate the specific deposit type you wish to modify in the list.
2. Click the **Edit** button next to the entry.
3. Make any necessary changes to the configuration fields.
4. Click the **Save Changes** button to apply your updates.

### Deleting a Deposit Type

1. Locate the specific deposit type you wish to remove from the list.
2. Click the **Delete** button next to the entry.

<p class="callout warning">A deposit type can only be deleted if there are absolutely no records currently associated with it in the system. The **Delete** button will not be visible if the deposit type is actively in use or linked to past transactions. This restriction prevents financial data inconsistencies.</p>

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use clear labeling:** **Use descriptive labels for your deposit types.** Utilizing clear names like Annual Permit Deposit or Visitor Pass Deposit ensures immediate clarity for both administrators reviewing accounts and users paying the fees.</span>
- <span style="color: rgb(22, 145, 121);">**Utilize placeholder text:** **Utilize the Placeholder Text field to provide clear instructions or examples for administrators.** This helps guide staff members and standardizes data entry when they are manually creating deposit records.</span>
- <span style="color: rgb(22, 145, 121);">**Understand the flags setting:** **Use the Flags setting for Assignable Text to add specific, customizable notes to individual deposit records.** This flexibility allows administrators to append unique details per transaction directly onto the user profile.</span>
- <span style="color: rgb(22, 145, 121);">**Ensure financial reconciliation:** **Accurately tracking deposit types is crucial for financial reconciliation.** Proper configuration ensures all refundable amounts are reliably managed and easily audited by your accounting team.</span>

# New Page

<p class="callout info">Preview Spaces in OPSCOM provide clients and support staff with a secure, isolated testing environment that mirrors your live production system's data. These spaces are invaluable for testing new features, staging changes, or conducting training without impacting your operational system, ensuring a safe sandbox for development and learning.</p>


### Setup &amp; Configuration

Preview spaces are typically created on demand. Your production/live OPSCOM system is used to either create a new preview space or refresh an existing one with current or historical data.

##### <span style="text-decoration: underline;">Creating or Refreshing a Preview Space</span>

1. Click **Tools,** then **Database to Preview**.

From this page, you have two options for refreshing your preview database:

- **For Up-to-Date Information**: 
    1. Select **Backup Production Database**.
    2. Wait for the backup process to complete.
    3. Click the **Refresh Preview Database** button.
- **For an Older Backup**: 
    1. Select the specific date of the backup you wish to restore the preview database to.
    2. Click the **Refresh Preview Database** button.

<p class="callout warning">It may take a few minutes to refresh the database. Generally, a database is refreshed in 1-2 minutes, but it can take up to 15 minutes depending on the size of your database. A message will be displayed along the top of the screen notifying you when the database refresh is complete.</p>

Once the preview database has been refreshed, your preview system will automatically be created or updated. You can access the preview system by adding ".preview" before "OPSCOM.com" in your browser's address bar. For example, if your production space is `https://tomahawku.OPSCOM.com`, your preview space will be `https://tomahawku.preview.OPSCOM.com`.

---

### Using this Feature

##### <span style="text-decoration: underline;">Accessing Your Preview Space</span>

As an OPSCOM client, you can access your preview space directly by simply adding the ".preview." suffix to your subdomain name. For instance, if your production site is located at `https://yourorganization.OPSCOM.com`, your preview space can be found at `https://yourorganization.preview.OPSCOM.com`.

##### <span style="text-decoration: underline;">Preview Space Banner</span>

To clearly distinguish a preview space from a live production system, all preview spaces are denoted with an **amber warning banner** displayed prominently at the top of the page.

##### <span style="text-decoration: underline;">Locking and Unlocking Database Reset Option</span>

You can now lock and unlock preview and development OPSCOM databases to prevent them from being reset or refreshed accidentally.

1. On your preview site, click **Tools**, then **Reset Database**.
2. Toggle the lock/unlock setting as needed. 
    - You will be prompted to provide a **reason** for locking or unlocking the database.
    - A history of the previous 10 lock/unlock actions will be displayed below for your reference.

This feature allows you to ensure that if you are actively working on a preview/development system and do **NOT** wish for your changes to be reset or lost, you can place a lock. This lock notifies others attempting to refresh the database that a reset is not desired.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Testing and Training Benefits**: Preview spaces are extremely useful for testing and training purposes. They allow you to work with a copy of your live database, providing real data for exercises without any risk of affecting your production system. The database can be manually reset at any time, allowing you to "erase" training data and start testing scenarios from scratch.</span>
- <span style="color: rgb(22, 145, 121);">**Daily Data Backups**: Production/live data is backed up daily at **2 AM EST** and is available to push to the testing environment at any time. This means if you perform a refresh of your preview site, it will pull data captured the night before. This operation is specifically for providing relevant data for testing and preview during training or similar efforts and is separate from normal system backup procedures.</span>
- <span style="color: rgb(22, 145, 121);">**Automatic Deletion of Inactive Spaces**: Preview sites are automatically deleted after **7 days of no login activity**.</span>
    - <span style="color: rgb(22, 145, 121);">If you require a preview site for an extended period, please contact OPSCOM support staff, and an expiry date can be set.</span>
- <span style="color: rgb(22, 145, 121);">**Email Notifications are Suppressed**: No Emails Sent from Preview/Testing - All email notifications that would normally be sent from the server are captured and suppressed in preview/testing environments. Therefore, any email notifications generated within your preview space will **not** reach clients or external recipients. This is a deliberate security measure to prevent accidental communication from a non-production environment.</span>

# Managing Payment Types

<p class="callout info">The Managing Payment Types feature allows administrators to control which payment methods are available throughout the system. Its primary purpose is to enable organizations to define new payment options, assign them to specific user types (e.g., Staff, Students, Public), and configure their usage for subscriptions or guest payments, ensuring strict alignment with internal financial policies. This article is intended for OPS-COM administrators responsible for configuring financial workflows and checkout experiences.</p>

## Setup and Configuration

This feature is a core administrative tool used to establish the payment gateways and offline payment methods accepted by your organization.

**Admin Side:** Administrators must have the appropriate system role permissions enabled to access the payments configuration menus and manage the list of payment types.

**User Side:** End-users interact directly with these configurations during the checkout process on the parking portal. The specific payment options they see are dynamically determined by the configurations applied to their assigned user type.

## Using this Feature

Administrators can use the following instructions to navigate the management interface to seamlessly add, configure, and review payment types.

### Accessing the Management Interface

1. Hover over **System Configuration**, click **Payments**, then **$ Setup Payment Types**.

### Adding Payment Types

The following example outlines how to set up an offline payment type using the **Always Successful** provider. This configuration allows payments to be immediately flagged as fully processed with no admin intervention, which is ideal for scenarios like payroll deductions where the actual funds are handled outside of OPS-COM.

1. Click the **Add Type** button.
2. Select **Always Successful** from the **Providers** drop-down menu.
3. Click the **Next Step** button.
4. Enter a descriptive title into the **Type Name** field (e.g., Payroll Deduction).
5. Select the specific **User Types** this payment method will be available to.
6. Navigate to the **Settings** tab and enable the necessary checkboxes for your requirements.
7. Review the **Allowed Payment Types** section to see active payment types listed first, followed by inactive ones.
8. Click the **Update Payment Type** button to finalize the addition.

<p class="callout info">The list of **Providers** in the drop-down menu is hard-coded and securely controlled by Tomahawk. You cannot manually edit this picklist. Hover over the tooltip below the provider to view an explanation of what each provider entails.</p>

### Configuring Payment Types for Subscriptions and Guests

You can easily fine-tune how specific payment types are utilized for recurring subscriptions and guest checkout flows.

1. Locate the specific payment type you wish to configure in the list.
2. Click the **Pencil icon** next to the entry.
3. Click the **Settings** tab.
4. Enable the checkboxes for the items you wish to allow this payment type to be used for (e.g., enable the **Text2ParkMe** checkbox, the **subscriptions to permit renewals** checkbox, or the **guest payments** checkbox).
5. Adjust the **Prompt Information** settings to define what data is collected. You can enable only an email address or mandate full address information.
6. Click the **Update Payment Type** button to apply your changes.

<p class="callout info">Full address information is strictly required when the payment provider performs Address Verification using AVS, 3DS, or a similar security service. This configuration also controls what information fields appear on the QR Code reservations screen after the payment type is selected.</p>

### Hosted Payment Providers

Setting up a hosted payment provider requires specific credentials from your merchant account. Once you retrieve the required values from your provider of choice, save the credentials securely and contact OPS-COM Support for further configuration instructions.

- **[OpenEdge](https://opscom.wiki/books/the-opscom-admin-portal/page/openedge-hosted-payments "OpenEdge Hosted Payments"):** Requires an **Auth Key** (multi-digit string), **Terminal ID** (8-digit numeric key), and an **X-Web ID** (12-digit numeric key).
- **[Moneris Checkout](https://opscom.wiki/books/the-opscom-admin-portal/page/moneris-checkout "Moneris Checkout"):** Requires a **store\_id**, an **api\_token**, and a **checkout\_id**.
- **[Bambora Checkout](https://opscom.wiki/books/the-opscom-admin-portal/page/bambora-checkout "Bambora Checkout"):** Requires a **Payment Authorization Header** and a **Profile Authorization Header** (both alphanumeric passcodes).

<p class="callout warning">The information obtained from your hosted payment provider serves as the critical security credentials that encrypt the financial information exchanged between OPS-COM and the provider. It is vital that these keys are stored properly and securely to ensure complete operational security for your organization.</p>

### Extended Payment Information

For each active payment type, you can view extended information directly on the main management screen. This includes:

- A general description of the payment type.
- An indication of what the user will be prompted for when selecting that method (e.g., in a hosted payment scenario like EdgeExpress, the user might be prompted to enter an email address before being redirected to the credit card entry portal).
- The total number of users currently associated with this payment type.

There are also three columns on the far right that use an **X** or a **checkmark** to indicate specific permitted uses:

- **Column 1:** Indicates if this payment type can be used for guest payments.
- **Column 2:** Indicates if this payment type can be used for permit and invoice renewal payments.
- **Column 3:** Indicates if this payment type can be used for Text2ParkMe subscriptions.

### Processing as an Admin

When administrators are manually processing payments on the backend, the available payment types presented in the interface will be split into two d<span class="citation-1099 citation-1100 citation-1101 citation-1102 citation-end-1102">istinct categories:<sup class="superscript embedded" data-turn-source-index="1"></sup></span><span class="citation-1099 citation-1100 citation-1101 citation-end-1101"><sup class="superscript embedded" data-turn-source-index="2"></sup></span><span class="citation-1099 citation-1100 citation-end-1100"><sup class="superscript embedded" data-turn-source-index="3"></sup></span><span class="citation-1099 citation-end-1099"><sup class="superscript embedded" data-turn-source-index="4"></sup></span>

1. <span class="citation-1095 citation-1096 citation-1097 citation-1098 citation-end-1098">The payment types the specific user is normally allowed to use based on their assigned User Type.<sup class="superscript embedded" data-turn-source-index="5"></sup></span><span class="citation-1095 citation-1096 citation-1097 citation-end-1097"><sup class="superscript embedded" data-turn-source-index="6"></sup></span><span class="citation-1095 citation-1096 citation-end-1096"><sup class="superscript embedded" data-turn-source-index="7"></sup></span><span class="citation-1095 citation-end-1095"><sup class="superscript embedded" data-turn-source-index="8"></sup></span>
2. <span class="citation-1091 citation-1092 citation-1093 citation-1094 citation-end-1094">The administrative payment types an admin can choose to override with, which often includes addit<sup class="superscript embedded" data-turn-source-index="9"></sup></span><span class="citation-1091 citation-1092 citation-1093 citation-end-1093"><sup class="superscript embedded" data-turn-source-index="10"></sup></span><span class="citation-1091 citation-1092 citation-end-1092">ional options not visible to the end-user.<sup class="superscript embedded" data-turn-source-index="11"></sup></span><span class="citation-1091 citation-end-1091"><sup class="superscript embedded" data-turn-source-index="12"></sup></span>

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Implement granular control:** **Leverage User Types to restrict payment methods.** Ensuring users only see relevant options (e.g., only allowing "Payroll Deduction" for Staff users) prevents processing errors and unauthorized selections.</span>
- <span style="color: rgb(22, 145, 121);">**Maintain a clear user experience:** **Simplify the checkout process and reduce confusion for users.** Limiting available payment types based on precise contexts or user designations makes the portal much easier to navigate.</span>
- <span style="color: rgb(22, 145, 121);">**Ensure refund alignment:** **Ensure that appropriate refund types are linked to their corresponding payment types.** This configuration facilitates smooth and financially accurate refund processing when reversing transactions.</span>
- <span style="color: rgb(22, 145, 121);">**Verify subscription compatibility:** **Verify that the chosen payment gateway provider fully supports recurring transactions.** This is a critical step before enabling any payment types for recurring billing subscriptions.</span>
- <span style="color: rgb(22, 145, 121);">**Conduct regular reviews:** **Periodically review your payment type configurations and their associated settings.** This routine audit ensures your payment gateways remain perfectly aligned with your organization's evolving financial policies.</span>

# Managing Convenience Fees

<p class="callout info">The Managing Convenience Fees feature allows administrators to add an additional flat-rate charge directly to user payments, managed entirely within the system. Its primary purpose is to provide flexibility to offset processing costs, incentivize certain payment methods, or cover administrative burdens, distinct from any external transaction fees. This article is intended for OPS-COM administrators responsible for financial configurations and system pricing strategies.</p>

## Setup and Configuration

This feature is a core administrative tool used to establish additional charges applied to specific transactions or payment methods.

**Admin Side:** Administrators must have the appropriate system role permissions enabled to access the payments configuration menus and manage fee settings.

<p class="callout warning">You can only use convenience fees if your system is currently configured to use Bambora or Worldline as your hosted payment provider.</p>

**User Side:** End-users do not interact directly with the backend configuration of these fees. However, this fee amount is visible within the user portal and is added to their grand total before the final checkout screen.

### Transaction Fees versus Convenience Fees

It is crucial to understand the distinction between these two types of fees before configuring your system:

- **Transaction Fees:** These are charges applied directly by your payment provider (e.g., a credit card processor) for processing a payment. They are independent of OPS-COM internal settings and are managed solely by the payment provider.
- **Convenience Fees:** These are additional charges that are managed and applied directly through OPS-COM. This fee amount is added to the grand total before being sent to the payment provider.

## Using this Feature

Administrators can use the following instructions to navigate the management interface to seamlessly add and configure various convenience fees.

### Accessing the Management Interface

1. Hover over **System Configuration**, click **Payments**, then **Fees**.

### Setting Up Fees

1. Click the **Add Fee** button.
2. Configure the fee parameters based on your specific use case or scenario.
3. Click the **Update** button to save the new convenience fee.

<p class="callout info">**Fee Limitations: Applied Once Per Order:** Fees are applied once per fee type, per order. If a fee is set for permits, only a single fee is applied to the entire order, regardless of whether it contains one permit or five permits. **Flat Rate Only:** Fees are currently restricted to a flat rate. There is no percentage-based fee option available at this time. **Grand Total Sent:** Fees are not sent to the payment provider as a secondary item. Only the grand total (item base price plus the convenience fee) is sent for processing.</p>

### Configuration Scenarios

Administrators can configure fees to accommodate a variety of operational scenarios:

**Admin Collected Fee for Collecting Cash and Cheques**

The administrator wants to encourage online payments. A fee is set up as a deterrent when users pay with cash or cheque to cover the increased administrative burden of manual processing.

- **Setup:** The fee would apply to all item types but only to payment types of Cash and Cheque.

**Admin Collected Fee for Permits**

Permits are sent to a third party for enforcement, and that third party charges $0.50 per permit they enforce. The client wishes to pass this exact cost onto the user.

- **Setup:** The fee would apply to all payment types, but only to Permits and Temp Permits. The setup would specify $0.50 as the fee amount.

**Admin Charges a Convenience Fee to Cover an OPS-COM Collected Transaction Fee**

There is an agreement with the payment provider that all permits will incur a $2.95 transaction fee. The client still wants to receive the full $150 for a purchased permit, so they set up a convenience fee to offset this cost.

- **<span class="citation-1146">Setup:</span>**<span class="citation-1146 citation-end-1146"> The convenience fee will be charged when selecting the specific payment type that incurs the $2.95 transaction fee. The setup would apply to the relevant payment provider and define the convenience fee as $2.95.<sup class="superscript embedded" data-turn-source-index="1"></sup></span>

**<span class="citation-1145 citation-end-1145">Admin Includes the<sup class="superscript embedded" data-turn-source-index="2"></sup></span> Transaction Fee in the Price of the Item**

An agreement exists where all permits incur a $2.95 transaction fee. However, the client chooses to absorb this fee by increasing the item's base price instead of adding a separate line item.

- **Setup:** There is no specific setup for fees in this scenario within OPS-COM, as the fee is already embedded in the item's base price. If you want to inform users that a transaction fee is included in the final amount, you will need to update a relevant footer message (e.g., in email templates or on the user portal) stating this.

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Ensure clarity for users:** **Clearly communicate any convenience fees to your users before they complete a transaction.** Full transparency regarding extra charges builds trust with your user base.</span>
- <span style="color: rgb(22, 145, 121);">**Apply fees strategically:** **Use convenience fees strategically to align with your overall pricing strategy.** They can be highly effective tools to deter manual cash payments, offset third-party costs, or cover transaction fees.</span>
- <span style="color: rgb(22, 145, 121);">**Remember the flat rate limitation:** **Remember that fees are a flat rate, not percentage-based.** Plan your fee amounts accordingly to ensure they adequately cover costs regardless of the total cart value.</span>
- <span style="color: rgb(22, 145, 121);">**Understand the impact on the grand total:** **Be aware that OPS-COM adds the convenience fee to the item's price to form the grand total.** This combined total is what is ultimately sent to the payment provider for authorization.</span>
- <span style="color: rgb(22, 145, 121);">**Distinguish external transaction fees:** **Distinguish between internal convenience fees and any external transaction fees imposed by your payment gateway.** Understand exactly where each fee is applied and how it impacts your final revenue.</span>
- <span style="color: rgb(22, 145, 121);">**Plan for reporting:** **Consider how convenience fees will be reported and accounted for in your financial reconciliation processes.** Ensure your accounting team is aware of how these fees alter total transaction amounts.</span>

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-clarity-for-users%3A-c"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted" id="bkmrk-clarity-for-users%3A-c-1"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-70 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-70"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-70"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-70"></div></div></div></div></div></div></div>

# Taxes

<p class="callout info">The Taxes feature allows administrators to define and manage the tax percentages applied to payments made within the system. Its primary purpose is to ensure accurate tax calculation during checkout, maintain compliance with local tax regulations, and provide transparency to users regarding applicable taxes. This article is intended for OPS-COM administrators responsible for financial configurations and system compliance.</p>

## Setup and Configuration

This feature is a core administrative tool used to establish the tax rates and rules applied to system transactions.

**Admin Side:** Administrators must possess the Primary Admin role with the **Manage System Configuration** permission enabled to edit system tax settings.

**User Side:** This feature is strictly a backend administrative configuration. End-users do not interact directly with tax configurations, but they will see the defined tax labels and calculated amounts displayed in their cart and on their receipts during the checkout process.

<p class="callout info">If you do not see the settings mentioned in this article, please contact <support@ops-com.com> to have them enabled for your environment. You will need to provide the written permission of your Primary Admin to request this access change.</p>

## Using this Feature

Administrators can use the following instructions to navigate the management interface to configure multiple settings for each tax type, ensuring accurate calculation and display.

### Accessing the Management Interface

1. Hover over **System Configuration** and click **Payments** then **Taxes**.

### Editing a Tax Type

When editing an existing tax type, administrators will interact with the following fields and actions to apply changes:

1. Locate the specific tax type you wish to modify on the configuration page.
2. Enable the **Enable** checkbox to make the tax type active and apply it to transactions, or disable it to deactivate the tax.
3. Enter the numerical percentage of tax to be calculated into the **Percentage** field (e.g., enter 13 for 13%).
4. Enter the desired display name into the **Tax Label &amp; Translation** field. This defines exactly how this tax will be displayed to users during the cart and checkout process (e.g., HST, Sales Tax, or VAT). Multiple languages are supported for translation.
5. Enable the checkboxes under the **Apply to the following items** section to define the specific system modules or item types to which you want this tax to be applied (e.g., Permits, Violations, Lockers, or Access Cards).

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Ensure regulatory compliance:** **Ensure your tax configurations (percentages, labels, and applicability) are always compliant with current local, provincial/state, and national tax regulations.**</span>
- <span style="color: rgb(22, 145, 121);">**Establish clarity for users:** **Use clear and understandable tax labels that resonate with your users.** Utilizing familiar terms like "HST" or "State Tax" where applicable prevents confusion during checkout and reduces support inquiries.</span>
- <span style="color: rgb(22, 145, 121);">**Manage module applicability carefully:** **Carefully select the checkboxes under the Apply to the following items section to ensure taxes are only applied to the correct modules.** This prevents incorrect charges from being applied to tax-exempt items or services.</span>
- <span style="color: rgb(22, 145, 121);">**Conduct thorough testing:** **After making any changes to tax settings, perform test transactions in a Preview Space.** Verifying that taxes are calculated and displayed correctly in the cart and on receipts before rolling changes out to production ensures a seamless user experience.</span>
- <span style="color: rgb(22, 145, 121);">**Maintain communication with finance:** **Coordinate closely with your organization's finance or accounting department.** Ensuring that the OPS-COM tax configuration perfectly aligns with your organization's internal financial reconciliation processes is critical for accurate reporting.</span>

# The Invoice Template

<p class="callout info">The Invoice Template feature allows administrators to fully customize the email and PDF invoices sent to companies for outstanding permits. Its primary purpose is to ensure that billing communications accurately reflect your organizational branding while dynamically generating all necessary financial details using shortcodes. This article is intended for OPS-COM administrators.</p>

## Setup and Configuration

Configuring the invoice template involves adjusting the meta data that dictates how the email is identified and formatted before it reaches the recipient.

**Admin Side:**

1. Hover over **System Config** and click **Email Templates**.
2. Click the **Edit** button next to **Permit Invoice** to access the template configuration form.
3. Enter a descriptive name for internal reference in the **Label** field.
4. Choose the appropriate language from the **Language** drop-down menu.
5. Select the default layout from the **Layout** drop-down menu.
6. Enter the text that will appear as the email subject line in the **Subject** field.

<p class="callout success">You can successfully use shortcodes in the **Subject** field to dynamically personalize the email. For example, inserting **\[invoice account="name"\]** will automatically call up and display the specific account name for the company being invoiced directly in the subject line.</p>

**User Side:** End-users do not interact with the setup or configuration of administrative email templates.

## Using this Feature

The template form interface contains four primary areas: Meta Data at the top, a list of available Short Codes on the left, the actual visual Template on the right, and a Text Content field at the bottom (used for configuring a plain text version of the invoice).

Administrators interact with the visual template editor to place static branding and dynamic shortcodes.

### Available Shortcodes

The template allows the use of special tokens, or shortcodes, to accurately pull live information from the database and populate the invoice when sent. These function similarly to a standard mail merge.

- **\[invoice account="number"\]**: The account number for the company.
- **\[invoice account="name"\]**: The account name for the company.
- **\[invoice account="fulladdress"\]**: The full address for the company.
- **\[invoice account="invoice\_comments"\]**: The invoice comment value that is editable for companies only. Any line breaks will be preserved.
- **\[invoice show="invoiceno"\]**: The unique Invoice Number.
- **\[invoice show="duedate"\]**: The invoice due date.
- **\[invoice show="billdate"\]**: The invoice bill date.
- **\[invoice show="subtotal"\]**: The subtotal of all items before *[Taxes](https://opscom.wiki/books/setup-configuration-for-admins/page/taxes)*<span class="citation-1170 citation-1171 citation-end-1171">.<sup class="superscript embedded" data-turn-source-index="1"></sup></span><span class="citation-1170 citation-end-1170"><sup class="superscript embedded" data-turn-source-index="2"></sup></span>
- **<span class="citation-1168 citation-1169">\[invoice show="taxtotal"\]</span>**<span class="citation-1168 citation-1169 citation-end-1169">: The total calculated amount of tax.<sup class="superscript embedded" data-turn-source-index="3"></sup></span><span class="citation-1168 citation-end-1168"><sup class="superscript embedded" data-turn-source-index="4"></sup></span>
- **<span class="citation-1166 citation-1167">\[invoice show="amounttotal"\]</span>**<span class="citation-1166 citation-1167 citation-end-1167">: The total sum amount for all outstanding permits for this invoice.<sup class="superscript embedded" data-turn-source-index="5"></sup></span><span class="citation-1166 citation-end-1166"><sup class="superscript embedded" data-turn-source-index="6"></sup></span>
- **<span class="citation-1164 citation-1165">\[invoice show="counttotal"\]</span>**<span class="citation-1164 citation-1165 citation-end-1165">: The total number of permits<sup class="superscript embedded" data-turn-source-index="7"></sup></span><span class="citation-1164 citation-end-1164"> for the selected sales window.<sup class="superscript embedded" data-turn-source-index="8"></sup></span>
- **<span class="citation-1163">\[invoice show="details"\]</span>**<span class="citation-1163 citation-end-1163">: The comprehen<sup class="superscript embedded" data-turn-source-index="9"></sup></span>sive list of permits, costs, and who holds the permit.

### Customizing the Template Sections

There are several key areas on the template that should be actively edited by the admin to ensure proper branding and data delivery:

- **Company Logo Field:** Replace the placeholder by inserting your o<span class="citation-1161 citation-1162 citation-end-1162">rganization's logo.<sup class="superscript embedded" data-turn-source-index="10"></sup></span><span class="citation-1161 citation-end-1161"><sup class="superscript embedded" data-turn-source-index="11"></sup></span>
- **<span class="citation-1159 citation-1160">Company Address:</span>**<span class="citation-1159 citation-1160 citation-end-1160"> Enter your physical organizational address so it clearly appears on the generated document.<sup class="superscript embedded" data-turn-source-index="12"></sup></span><span class="citation-1159 citation-end-1159"><sup class="superscript embedded" data-turn-source-index="13"></sup></span>
- **<span class="citation-1157 citation-1158">Invoice Identification:</span>**<span class="citation-1157 citation-1158"> Insert shortcodes to pull in the </span>**<span class="citation-1157 citation-1158">\[invoice show="invoiceno"\]</span>**<span class="citation-1157 citation-1158 citation-end-1158">, <sup class="superscript embedded" data-turn-source-index="14"></sup></span>**<span class="citation-1157 citation-end-1157">\[invoice show="bi<sup class="superscript embedded" data-turn-source-index="15"></sup></span>lldate"\]**, and **\[invoice show="duedate"\]**.
- **Invoice Details:** Insert the **\[invoice show="details"\]** shortcode. When generated, this will automatically expand to list the Parker's Name, Item type being paid for (e.g., Permit, Access card), Item number (Permit Number), Sales Window, Lot Name, Quantity, and Cost.
- **Payment Information:** Insert shortcodes to dynamically pull in the billing cost information, such as the **\[invoice show="subtotal"\]**, **\[invoice show="taxtotal"\]**, and **\[invoice show="amounttotal"\]**.

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Optimize your logo format:** **Using a JPEG or PNG file format is highly recommended for your company logo.** These formats ensure the highest quality rendering when the system generates the attached PDF version of the invoice.</span>
- <span style="color: rgb(22, 145, 121);">**Verify data placement:** **Always test your shortcodes by generating a sample invoice.** This ensures the system retrieves and formats the intended data (such as the company's full address and account number) exactly where you placed the tokens.</span>
- <span style="color: rgb(22, 145, 121);">**Leverage company comments:** **Add specific billing instructions or notes in the company configuration.** Using the **\[invoice account="invoice\_comments"\]** shortcode allows you to pass these targeted messages directly onto the finalized invoice, maintaining clear communication with corporate clients.</span>

# Setup payments with Flex Dollars

<p class="callout info">The Flex Dollar and Payroll Deduction feature allows administrators to offer a specialized payment method for handling partial permit payments with internal credits. Its primary purpose is to enable users to apply a pre-defined amount of flex dollars towards a permit purchase, automatically notifying administrators of the remaining balance to be processed via internal payroll. This article is intended for OPS-COM administrators responsible for financial configurations and custom payment workflows.</p>

## Setup and Configuration

This feature requires both a system-level activation and specific internal configurations to function properly.

**Admin Side:** Administrators must have the appropriate system role permissions enabled to access the system settings, payments, and user configuration menus.

**User Side:** Eligible end-users interact with this feature directly on the checkout page of the user portal, provided their cart meets the specific criteria for flex dollar usage.

<p class="callout warning">The Flex Dollar Payment feature is a custom development tailored specifically for limited use cases. It is enabled by a system-level setting that is typically configured by OPS-COM Support upon request. Please contact support to have this feature activated for your environment before proceeding with the configuration steps below.</p>

### Enabling the Feature

1. Hover over **System Configuration** and click **System Settings**.
2. Click **Permits**.
3. Enable the **Enable Flex Dollars** checkbox.

### Configuring Email Notifications

An email address must be configured to receive internal notifications with the details of the transaction each time this payment method is used. This email address must be actively monitored for any changes or updates to student flex dollar balances.

1. Hover over **System Configuration**, click **Payments**, then **Manage Flex Dollars**.
2. Enter an actively monitored email address into the **Flex Dollars Alert Email** text box.

### Defining Flex Dollar Amounts

You must create the specific flex dollar values that users are permitted to select during checkout.

1. Hover over **System Configuration**, click **Payments**, then **Manage Flex Dollars**.
2. Click the **Add New** button.
3. Enter the descriptive text the user will see in the drop-down menu into the **Label** field (e.g., Apply $100 of Flex Credit).
4. Enter the corresponding numeric amount into the **Value** field (e.g., 100.00).
5. Click the **Save** button.
6. Repeat this process for all the pre-determined flex dollar amounts your organization offers.

### Assigning the Payment Method

This payment method must be explicitly enabled for the specific user types permitted to use it.

1. Hover over **System Configuration**, click **Users**, then **User Types**.
2. Select the specific user type you wish to grant access to (e.g., Staff).
3. Assign the **Flex Dollars/Payroll Deduction** payment option in the user type settings. Detailed instructions can be found on the *[User Types](https://opscom.wiki/books/setup-configuration-for-admins/page/user-types "User Types")* page.

## Using this Feature

Once configured, this feature provides a streamlined purchasing workflow for users and a clear notification process for your administrative or payroll teams.

### User Purchase Workflow

1. Add a standard term permit to the shopping cart on the user portal.
2. Select **Flex Dollars/Payroll Deduction** as the payment method on the checkout page.
3. Select the desired credit amount from the populated drop-down menu of configured flex dollar labels.
4. Complete the transaction. The permit is considered valid and is issued immediately upon checkout.

### Administrator Workflow (Post-Purchase)

1. Receive the automated transaction email sent to the address configured in the **Flex Dollars Alert Email** field. This notification contains the user's name, contact information, permit details, flex dollar amount applied, and the remaining balance due.
2. Utilize this emailed information to independently confirm the user's flex dollar balances and process the remaining balance via your organization's internal payroll system.

<p class="callout info">For auditing purposes, a note detailing the applied flex dollar amount is automatically added to the user's transaction payment record. However, the payroll deduction component and the updating of actual flex dollar balances are **not automated processes**. The system's primary function is to simply calculate and report the remaining payroll deduction balance to administrators for manual processing.</p>

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Understand cart restrictions:** **This payment option will only appear to eligible users when their cart contains only standard permits.** It will not be available as a selectable payment method if other items, such as violation payments or locker rentals, are also present in the cart.</span>
- <span style="color: rgb(22, 145, 121);">**Use clear descriptive labels:** **Use clear and descriptive labels for the flex dollar amounts.** Applying transparent nomenclature like "Use $75 Payroll Credit" directly reduces user confusion and support requests during the checkout process.</span>
- <span style="color: rgb(22, 145, 121);">**Train your payroll staff:** **Ensure the staff who manage payroll are fully aware of this workflow and understand how to act on the email notifications.** Clear internal communication is critical to the success of this manual process.</span>
- <span style="color: rgb(22, 145, 121);">**Acknowledge external verification requirements:** **It is critical to understand that OPS-COM does not verify real-time flex dollar balances with any external system.** Administrators are solely responsible for independently verifying the spent flex dollar amounts with their HR or payroll department and managing any discrepancies outside of the system.</span>
- <span style="color: rgb(22, 145, 121);">**Understand system payment logic:** **This type of payment is treated by the system as a full, successful payment.** OPS-COM does not currently utilize strict split-payment logic or backend validation of flex balances beyond recording the user's chosen deduction amount.</span>

# Stripe Payment Provider Setup

<div _ngcontent-ng-c2426258411="" class="ng-tns-c2426258411-28" id="bkmrk-"><section class="processing-state_container is-gpi-avatar ng-tns-c2426258411-28 ng-trigger ng-trigger-processingStateShowHide ng-star-inserted is-done-processing" id="bkmrk--1"><div _ngcontent-ng-c2426258411="" aria-hidden="true" class="processing-state_details is-gpi-avatar ng-trigger ng-trigger-menuExpansion ng-tns-c2426258411-28 ng-star-inserted" id="bkmrk--2"></div></section></div><div _ngcontent-ng-c2362448710="" class="response-content ng-tns-c3088276128-27" id="bkmrk--3"></div><p class="callout info">The Stripe Payment Provider Setup feature allows administrators to integrate with Stripe to process credit card payments directly within the system. Its primary purpose is to provide a secure and seamless checkout experience for users while simplifying financial reconciliation for your operations. This article is intended for OPS-COM administrators responsible for financial setup and payment gateways.</p>

## Setup and Configuration

This feature requires configuration within the OPS-COM administration portal as well as the external Stripe developer dashboard.

**Admin Side:** Administrators must have the appropriate system role permissions enabled to access the payments configuration menus and establish external integrations.

**User Side:** End-users interact with this feature seamlessly during the checkout process on the web portal or when interacting with field staff using handheld devices.

### Admin Portal Configuration

1. Hover over **System Configuration**, click **Payments**, then **Setup Payment Types**.
2. Click the **Add Type** button.
3. Click the **Payment Provider** drop-down menu and choose **Stripe.js**.
4. Name the payment type, select the applicable user types, and click the **Settings** tab.
5. Enter your Stripe public key into the **Publishable Key** field.
6. Enter your Stripe secret key into the **Secret Key** field.
7. Verify that the **Currency** setting is correct for your region (the default is US dollars).

[![gCTimage.png](https://opscom.wiki/uploads/images/gallery/2026-07/scaled-1680-/gctimage.png)](https://opscom.wiki/uploads/images/gallery/2026-07/gctimage.png)

<p class="callout warning">Only enter testing credentials into the configuration fields until you are completely ready for your users to have live access to this payment method.</p>

### Stripe Web hook Configuration

Webhooks are absolutely essential for Stripe to notify OPS-COM regarding payment successes or refund completions. Without these webhooks correctly configured, the system will not communicate any transaction information back to OPS-COM.

### Register Your Endpoint

To begin receiving notifications, you must define exactly where Stripe should send the transaction data.

1. Navigate to your Stripe Dashboard, click **Developers**, and select **Webhooks**.
2. Click the **Add Destination** button to open the configuration window.
3. Select the specific event types the system needs to process (**payment\_intent.succeeded**, **payment\_intent.payment\_failed**, and **payment\_intent.canceled**).
4. Click the **Continue** button.
5. Select **Webhook endpoint** and click the **Continue** button.
6. Enter a descriptive name for the webhook.
7. Enter the specific URL provided by OPS-COM into the **Endpoint URL** field (e.g., https://\[CLIENTID\].ops-com.com/api/system/payments/stripe/callback).

### Retrieve Your Signing Secret

Once the endpoint is created, Stripe generates a unique security key to verify that the data sent to your server is authentic.

1. Locate the **Signing secret** section on the summary page for your newly created webhook.
2. Click the **Reveal** button to display the string (which typically begins with the prefix whsec\_).
3. Copy this entire string and navigate back to your OPS-COM payment settings.
4. Paste the copied secret into the **Webhook Secret** field.
5. Copy the **Destination ID** provided by Stripe.
6. Paste the ID into the **Webhook ID** field to ensure all incoming data is securely verified.

[![BsHimage.png](https://opscom.wiki/uploads/images/gallery/2026-07/scaled-1680-/bshimage.png)](https://opscom.wiki/uploads/images/gallery/2026-07/bshimage.png)

<p class="callout info">Ensure that your **Webhook Secret** is correctly matched between Stripe and OPS-COM to prevent pending status errors on completed payments.</p>

## Using this Feature

The checkout process is optimized for both web portal users and administrators usi<span class="citation-1246 citation-end-1246">ng handheld devices in the field.<sup class="superscript embedded" data-turn-source-index="1"></sup></span>

### <span class="citation-1245 citation-end-1245">Web Portal Transactions<sup class="superscript embedded" data-turn-source-index="2"></sup></span>

1. <span class="citation-1244">Click the </span>**<span class="citation-1244">Pay with Credit Card</span>**<span class="citation-1244 citation-end-1244"> button when you reach the final stage of a transaction to open the secure payment form.<sup class="superscript embedded" data-turn-source-index="3"></sup></span>
2. <span class="citation-1243 citation-end-1243">Enter the required credit card details i<sup class="superscript embedded" data-turn-source-index="4"></sup></span>nto the form.
3. Click the **Submit Payment** button to complete the purchase.

### Handheld App Transactions

1. Tap **Checkout** to open the payment summary within the OPS-COM for Android app.
2. Tap **Select Payment Method** and choose **Stripe**.
3. Tap and Hold the **Process Payment** button to finalize the transaction.

### Managing Transactions and Reports

Administrators can seamlessly review all processed payments and manage financial returns through the standard reporting interfaces.

1. Hover over **Financial Management**, click **Transaction Reports**, then **Recent Payments**.
2. Review the **Status** column to determine the current state of each payment, and the **Payment Date** column to see exactly when the transaction occurred.
3. Click the **View Details** icon next to a specific transaction to see the full Stripe receipt.
4. Click the **Refund Payment** button to initiate a return of funds.
5. Click the **Confirm Refund** drop-down menu and choose **Full Refund** to finalize the reversal.

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Perform thorough deployment testing:** **Organizations should always keep Live Mode disabled during the initial deployment until all testing is verified with test credit card information.** It is highly recommended to process a single, small test transaction in Live Mode using a real card before making the payment option available to the general public.</span>
- <span style="color: rgb(22, 145, 121);">**Maintain strict security requirements:** **Maintaining the security of your financial environment is critical.** You should never share your Stripe secret key or webhook secret with anyone, nor should you store it in plain text outside of the secure administration configuration screens.</span>
- <span style="color: rgb(22, 145, 121);">**Rotate security keys regularly:** **Change the signing secret periodically.** Additionally, ensure you only subscribe to the strictly required event types within Stripe to minimize unnecessary data transmission.</span>

<div _ngcontent-ng-c2362448710="" class="response-content ng-tns-c3088276128-27" id="bkmrk--16"><div _ngcontent-ng-c1098760420="" class="container"><div _ngcontent-ng-c1840272799="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk--17" inline-copy-host=""></div></div></div>