--- title: "How Fees Work" slug: "events-feature-how-fees-work" updated: 2026-01-29T20:50:10Z published: 2026-01-29T20:50:10Z canonical: "docs.blackthorn.io/events-feature-how-fees-work" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.blackthorn.io/llms.txt > Use this file to discover all available pages before exploring further. # How Fees Work Limitation Do not use the Virtual Terminal to process a Transaction that includes Fees (Payment Processing or Tax). Fees are not supported by the Virtual Terminal. ## Functionality - Event Organizers can create a Fee record to store tax and payment processing fee details and assign the Fee to an Event. When a Fee is assigned to an Event, it will be added to the total amount due. - Only one Fee can be designated as the **Default Fee** at a time. - The Tabbed, Full-Width, Simple, and Dynamic user interfaces support Fees. - The Payments app now includes the Event’s **Tax Fee** and Event Item’s **Tax-Exempt** fields in the Invoice/Transaction processing. - Event Items with **Type** = "Donation," will automatically be marked as **Tax-Exempt** and excluded from tax calculations, whether calculated at checkout or tax-inclusive. If an Event Organizer updates the Fee record’s **Tax Display Setting** or **Fee Percentage** values, the corresponding values on the related Event (**Tax Fee Calculation Type**) and Event Item (**Tax Amount** and **Price with Tax**) records will be updated automatically. Values on existing Invoice Line Items and other post-registration or Attendee-specific records will not be changed. Three new classes were added to sync the updated **Fee Percentage** and **Tax Display Setting** values to all Events, Event Items, and Event Item Sessions that use that Fee record. - **TaxFeeSyncBatch:** Batch class to query all active Events and update the tax fields. - **Event_RecalculateTaxFieldsOnChild:** Trigger handler will update the Event Items and Event Item Sessions after the **Tax Fee** lookup is updated. - **Tax_RecalculateRelatedRecords:** Trigger handler will update the Events, Event Items, and Event Item Sessions after the **Fee Percentage** and/or **Tax Display Setting** are updated. ## Logic The fields below are populated using the following logic: - Event **Tax Fee Calculation Type** = Fee **Tax Display Setting** - Event Item **Tax Amount** = Event Item **Price** * Event Item **Tax Rate** - Event Item **Price with Tax** = Event Item **Price** + Event Item **Tax Amount** - If the Event Item’s **Tax-Exempt** = “True” (checked), then the **Tax Rate** will be “0”, the **Tax Amount** will be “0”, and the **Price with Tax** will be the same as the **Price**. - Event Item Session **Tax Amount** = Event Item Session **Tax Rate** * Event Item Session **Price** - Event Item Session **Price with Tax** = Event Item Session **Price** + Event Item Session **Tax Amount** - Event Item Session **Tax Rate** = Event **Tax Fee** - If the Event **Tax Fee** field is populated when an Event Item Session is created, the new Event Item Session’s fields will also be populated. - If the Event **Tax Fee** field is updated later, the new Event Item Session fields will also be updated. The Tax calculation logic includes Event Item Sessions that are not marked as tax-exempt. If an Event Item Session is paid and has a **Tax Amount**, the Attendee’s **Amount** due will include the Event Item **Price**, Event Item **Tax Amount**, Event Item Session **Price**, and the Event Item Session **Tax Amount**. Waitlisted Event Items The Fee/tax calculation logic applies taxes and/or fees only to available Event Items during checkout. For example, waitlisted Event Items are excluded from the Fee/tax calculations when an available Product (Event Item **Type** = “Other”) is included. The fee/tax for a waitlisted Event Item will be calculated when/if the Event Item becomes available for purchase. ## Credit Card Payment Methods This following only applies when a credit card is the selected Payment Method. - Not yet supported for PayLater and Virtual Terminal. - The minimum Fee value is 0.01%. - The Fee, if designated, applies to ALL Event Items. - The Fee, if designated, is mandatory. There is no option for the customer to opt out. ## Event Object ### Payment Processing Fee Limitation Payment processing Fees cannot be applied to ACH Payment Methods. This feature will be available in the future. - The **Payment Processing Fee** can be changed for each Event. - Users who can edit the Event record can also edit the **Payment Processing Fee** field. If a user does not have access to the **Payment Processing Fee** field, the field will be populated when a new Event is created if a **Default Fee** has been defined. ## Fee Object ### Tax Display Setting - The **Tax Display Setting** field determines how taxes are displayed and calculated for an Event. To turn on tax-inclusive pricing, first set the Fee record's **Type** = "Tax" and then select a value for **Tax Display Setting**. The picklist values are as follows. - "Tax-Inclusive Pricing” - The advertised price will include tax. - "Calculated at Checkout” – The tax will not be visible until the final payment screen. - Please note that taxes are always displayed separately on the final payment screen. ### Type The **Type** field’s picklist options are “Payment Processing Fee” and “Tax.” - This field distinguishes between tax fees and payment processing fees. Each type has a corresponding lookup field on the Event object and different functionality. - The **Type** field uses the same permissions as the **Default Fee** field. - Only one Fee of **Type** = “Payment Processing Fee” can be marked as default. - Only one Fee of **Type** = “Tax” can be marked as default. When a user creates or edits an Event with the default Fee’s **Type** set to “Tax”, then the Event’s new **Tax Fee** field will be populated with the default tax fee. Changes to an Event's **Tax Fee** will be reflected on all Event Items’ prices and totals. Changes to a Fee record associated with an Event will be reflected on the Event webpage when the Event record is updated. ## Company Info Object Customers can add an Employer Identification Number (**EIN**) or registration number (**Registration Number**) to their Company Info record. The **EIN** or **Registration Number** will be visible below the company’s address on the DocumentLink Invoice. The following logic explains when each number is used. - The **EIN** will be listed on the Invoice if the related Company Info record’s **EIN** field or both **EIN** and **Registration Number** fields have a value. - The **Registration Number** will be displayed when only the **Registration Number** field has a value. The **EIN** field must be blank. "EIN" is the **EIN** field’s default label on the Invoice. Customers can use the Data Dictionary to override the "EIN" label. For example, Australian customers might change the label to "ABN" instead. ## Invoice Object The Invoice record has a new field called **Dynamic Fee Name**. The field is populated when an Invoice related to an Event with an associated tax Fee is created or updated. The field’s value will then be used in DocumentLink’s Invoice to override the Tax column’s label. - If the **Dynamic Fee Name** field on the Invoice contains a value, it will be used instead of the Tax column label for the DocumentLink. - If the **Dynamic Fee Name** field is blank, the Invoice's **Dynamic Fee Name** field will not be used as the header for the Tax column. In this case, the label will be Tax. Invoices and Line Items will accurately reflect totals, including taxes (for exempt and non-exempt Event Items), discount Codes, and payment processing fees. The **Tax Amount** for all Line Items (Event Items) will be reflected on the Invoice and in any rollups to the Event. Line Item taxes and the Invoice’s total **Tax Amount** will also be visible on the Invoice’s DocumentLink. ## Event Item Object An Event Item can be designated as non-taxable by using the **Tax-Exempt** field. Event Items with **Type** = "Donation," will automatically be marked as **Tax-Exempt** and excluded from tax calculations, whether calculated at checkout or tax-inclusive. ## Cloning Events Cloning an existing Event with a **Payment Processing Fee** will result in a cloned Event that includes the same **Payment Processing Fee** value. - If the original Event's **Payment Processing Fee** field is blank, the cloned Event's **Payment Processing Fee** will also be blank. - If a **Default Fee** value exists on the original Event, the cloned Event will have the **Default Fee** related to it. - The **Payment Processing Fee** related to the Event that is being cloned takes priority over the **Default Fee**, including empty fields.