Skip to main content
Tickets, invoices, card receipts and vehicle sale agreements, written in game with inventory items. Settings are in forms.lua. Switch them with Config.Features.billingForms and Config.Features.vehicleSale.

Items

Add these items to your inventory: empty_ticket, ticket, empty_invoice, invoice, payment_terminal, thermal_paper, receipt, vehicle_sale_agreement, signed_vehicle_sale_agreement. The item lists for each inventory are on the Installation page. Blank forms and the terminal are sold in the Document Office app, tab Forms & Supplies (Config.EmptyPapers).

Tickets, invoices and receipts

Config.AllowedJobBillings sets which jobs can write which forms, with amount limits, due dates, tax, license actions, penalty points and the society / issuer shares. Config.BillingItems sets the items. Both use the same keys as vms_cityhall. The receiver must stand within Config.Forms.distance. Using a filled form shows it. Forms with payWithItem = true (receipts by default) can be paid there with the methods in Config.BillingPayments.withItem. Every bill can also be paid on a City Hall PC. Tax from these forms goes to the treasury when Config.Features.taxes is on. The society and issuer percentages apply to the amount without tax. exports['aps_cityhall']:openBillingForm(source, 'ticket') opens a form from another script ('ticket', 'invoice' or 'receipt'). The job and item checks still apply.

Vehicle sale agreement

The seller uses vehicle_sale_agreement, picks the buyer, vehicle, price and payment, and signs. The buyer then gets the agreement on screen and has OfferSeconds to sign or decline. On signing, the money moves, the vehicle and its insurance change owner, the blank is used up and both get signed_vehicle_sale_agreement. Sales are stored in aps_vehicle_sales. Business, job, company and gang vehicles and models in BlacklistVehicles can’t be sold.

Selling to a company

With AllowSellForCompany, a buyer whose job and grade are in CompaniesList can sign for their company when the model is allowed there. The vehicle then gets the company in the company column, which vms_garagesv2 adds. The buyer pays.

vms_garagesv2

Set Config.UseSaleAgreement = false in vms_garagesv2. A parked vehicle’s new owner is passed on to it, and company and gang vehicles can’t be sold privately.

Vehicle keys

With wasabi_carlock started, the seller’s keys are removed and the buyer gets keys (Config.VehicleKeys in config.compat.lua). For other key scripts use the Config.OnVehicleSold hook.

Company billings

/billings lists the bills of the player’s job, for jobs in Config.AllowedJobBillings. Bosses, and grades from fullAccessGrade up, see the whole company. Everyone else sees the bills they wrote. Settings: Config.CompanyBillings.

Discord webhooks

Paste webhook URLs into Config.Webhooks in config.server.lua: RECEIPT, PAY_RECEIPT, INVOICE, PAY_INVOICE, TICKET, TRAFFIC_TICKET, PAY_TICKET, VEHICLE_SELL. Empty entries stay off.

Payment terminal prop

The terminal in the player’s hand is the free Payment terminal prop by BzZz. It is included in stream/ and needs no setup. If you already run the bzzz_terminal resource, you can remove it.

Credits

Payment terminal prop: BzZz, original package: bzzz.tebex.io/package/6510851. It is included unmodified, is not our work and is not protected by escrow. See THIRD_PARTY.md.