Defaults, Taxes, Invoices, Quotes and Payment Providers. */ defined('FROM_GETTING_STARTED') || die("Direct file access is not allowed"); $gs_billing = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT config_default_hourly_rate, config_default_net_terms, config_invoice_prefix, config_invoice_next_number, config_quote_prefix, config_quote_next_number FROM settings WHERE company_id = 1")) ?: []; $gs_rate = floatval($gs_billing['config_default_hourly_rate'] ?? 0); $gs_tax = taxRow(taxSettings()['default_id']); $gs_stripe = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT payment_provider_id, payment_provider_active, payment_provider_private_key FROM payment_providers WHERE payment_provider_name = 'Stripe' LIMIT 1")); $gs_accounts = []; $gs_sql = mysqli_query($mysqli, "SELECT account_id, account_name FROM accounts WHERE account_archived_at IS NULL ORDER BY account_name ASC"); while ($gs_row = mysqli_fetch_assoc($gs_sql)) { $gs_accounts[intval($gs_row['account_id'])] = $gs_row['account_name']; } $gs_stripe_on = settingsChecked('stripe_on', false); ?>

What you charge

0 ? number_format($gs_rate, 2, '.', '') : '', ['icon' => 'fa-coins', 'type' => 'number', 'label' => 'Hourly rate', 'required' => true, 'min' => '0.01', 'step' => '0.01', 'inputmode' => 'decimal', 'placeholder' => '125.00', 'suffix' => escapeHtml($session_company_currency) . ' an hour', 'help' => 'For time on a ticket - a client can have their own.']) ?>
'fa-calendar-check', 'label' => 'Invoices are due', 'help' => 'A new client starts with these.']) ?>

Tax

New lines get . Rates with more than one part, and what is taxed, are in Admin > Taxes.

The rate new invoice and quote lines get - leave it empty if you don't charge tax. A rate in parts, as GST and PST, is made in Admin > Taxes.

'fa-receipt', 'label' => 'Name', 'maxlength' => 200, 'placeholder' => 'Sales Tax']) ?>
'fa-calculator', 'type' => 'number', 'label' => 'Rate', 'min' => 0, 'max' => 100, 'step' => '0.0001', 'inputmode' => 'decimal', 'placeholder' => '6', 'suffix' => '%']) ?>

Invoice numbers

Quote numbers

Card payments

Stripe is set up - in Admin > Payment Providers.

'gsStripeOn', 'label' => 'Let clients pay invoices by card, with Stripe', 'data' => ['gs-reveal' => 'gsStripe'], 'help' => 'A Pay button on each invoice, and cards clients save for autopay.']) ?>
>
The keys are in Stripe's Developers > API keys. Test keys work too, until you are ready to take real cards.
'fa-key', 'label' => 'Publishable key', 'maxlength' => 250, 'placeholder' => 'pk_live_...', 'autocomplete' => 'off', 'class' => 'font-monospace']) ?>
'fa-lock', 'type' => 'password', 'label' => 'Secret key', 'maxlength' => 250, 'placeholder' => 'sk_live_...', 'autocomplete' => 'new-password', 'class' => 'font-monospace']) ?>
'No accounts yet - add one in Finance > Accounts'], ['icon' => 'fa-piggy-bank', 'label' => 'Payments go into', 'help' => 'Fees, and a card limit, are set in Admin > Payment Providers.']) ?>