Custom Charge Types are miscellaneous additional charges that can be configured for a Confirm. This system was designed to allow venues to optionally collect donations or tips as a part of a ticket order, but this system is flexible enough that it can be used in other ways.
The current use-case for this system at launch is that we have a show where the artist is requiring us to automatically add a $1 donation per ticket that is sold for the show. This $1 donation is required (the customer does not have a choice).
At the time of launch, there are 4 fields on this record that are immediately relevant:
- type - The type of CustomChargeType. There will be one type at launch of “CustomChargeTypes::RequirePerTicket”, which will represent charges that are automatically added to the order per admission ticket ordered (not addon tickets). In the future, there will be a second type called “CustomChargeTypes::CustomInput” that can be used to collect a donation or tip from the user during checkout.
- name - This is the label that will be shown to the user during checkout that is associated with the charge. For our first use-case, an example value would be “Donation”
- default_amount - The amount to be charged to the customer. For our example use case, we would set this to $1.
- enabled - The charge is only applied to the order during checkout if the CustomChargeType is enabled.
We’ve designed this system to work to collect any type of miscellaneous charge the venue may want outside of admission tickets or addons (premium upgrades). You can view this mockup to see how this same system will be used in the future to allow the venue to ask the customer for a tip or donation.
During the checkout process, a TicketReservation or Order will have two new associations:
- “abstract_order_items” - These are automatically created based on the enabled CustomChargeTypes associated with the Confirm.
- “abstract_tickets” - Once an order has been paid for, we create “abstract tickets” records. These act the same as “Admission tickets” or “add on tickets”, except the user does not need to see them (hence the name abstract).