Billing lets your customers order, pay and renew from your Ticaga install. This guide takes you through getting paid: your business details, the ways customers can pay, and the features that keep money coming in without chasing.
Everything here is under Billing → Settings, which only admins can open.
1. Your business and tax
Start with Your business at the top of Billing settings:
- Business name, address, email, company number and VAT number appear as "From" on every invoice. Leave a field empty to leave it off.
- Invoice format sets the paper size, date format and wording to match where your business is based.
- Default currency is used for new invoices and prices. Each customer can still be billed in their own currency.
Then Tax:
- Rates I enter: add a rate for each place you charge tax, e.g. UK VAT at 20%. There are buttons to add UK VAT and the EU standard rates.
- Stripe Tax: Stripe works out the tax for you. Add your tax registrations in your Stripe dashboard first.
- Prices include tax: tick this if your prices already include tax, which is usual when selling to consumers.
EU business customers who give a VAT number that checks out with VIES pay no VAT (reverse charge).
2. Ways to pay
Turn on as many as you like. Customers choose at checkout and on each invoice.
Bank transfer (Manual)
Under Ordering → Payment instructions, enter your bank details. They're shown on unpaid invoices, and customers are asked to use the invoice number as the reference. When the money arrives, open the customer and record the payment against the invoice.
Card payments with Stripe
- In your Stripe dashboard, go to Developers → API keys and copy your publishable key and secret key into Billing settings → Stripe. Use test keys (
pk_test_…, sk_test_…) while you try things out and set Mode to Test.
- In Stripe, go to Developers → Webhooks → Add endpoint. Use the Webhook URL shown in Billing settings, which looks like
https://your-ticaga-site/billing/webhook/stripe.
- Select the events listed under Events to send to this endpoint in Billing settings:
checkout.session.completed
checkout.session.async_payment_succeeded
checkout.session.async_payment_failed
payment_intent.succeeded
payment_intent.payment_failed
payment_method.automatically_updated
charge.refunded
charge.dispute.created
radar.early_fraud_warning.created
invoice.payment_succeeded
invoice.payment_failed
customer.subscription.created, customer.subscription.updated and customer.subscription.deleted
- Copy the endpoint's signing secret (
whsec_…) into Webhook signing secret.
- Choose a Checkout style: Stripe's own page, or the card form on your pay page next to an order summary.
- Tick Enable Stripe gateway, save, and press Test Connection.
Bacs and SEPA Direct Debit through Stripe: turn them on in Stripe under Settings → Payments → Payment Methods, and Stripe offers them on its checkout page too. Bank payments take a few working days to clear. Billing shows them as "Payment on its way" and sets up the order when the money arrives.
PayPal
- At developer.paypal.com, open Apps & Credentials and create an app. Use the Sandbox tab while testing and Live when you're ready.
- Copy the app's Client ID and Secret into Billing settings → PayPal, and set Mode to match.
- Add a webhook to the app with the Webhook URL from Billing settings (
…/billing/webhook/paypal). Tick these events:
- Checkout order approved
- Payment capture completed
- Payment capture refunded
- Payment capture reversed
- Customer dispute created
- Copy the webhook's ID into Webhook ID.
- Choose a Checkout style: PayPal's page, or PayPal's button on your pay page.
- Tick Enable PayPal gateway, save, and press Test Connection.
PayPal is used to pay each invoice. It isn't saved for automatic renewals, because PayPal only allows that for businesses it has approved.
Direct Debit with GoCardless
GoCardless collects from customers' bank accounts: Bacs in the UK, SEPA in the euro area, and the US, Canadian, Australian, New Zealand and Nordic schemes.
- In the GoCardless dashboard, go to API settings → Create access token. Give it read-write access and copy it into Billing settings → GoCardless → Access token. Test with a sandbox account from manage-sandbox.gocardless.com first, with Mode set to Sandbox.
- Go to API settings → Create webhook endpoint:
- Name: Ticaga Billing
- URL: the Webhook URL from Billing settings (
…/billing/webhook/gocardless)
- Secret: a long random value. You can make one with
openssl rand -hex 32.
- Put the same secret into Webhook endpoint secret.
- To refund Direct Debit payments from Billing, turn on refunds in your GoCardless dashboard. GoCardless only allows a refund 7 days after the payment was collected.
- Tick Enable GoCardless gateway, save, and press Test Connection.
You don't need a GoCardless "partner app". That's only for connecting other businesses' GoCardless accounts.
The first time, a customer sets up a mandate on GoCardless's page. After that, their invoices are collected from it without filling anything in. Payments take a few working days to clear.
3. Getting paid automatically
Under Renewals, Pay renewals automatically is on by default:
- When a customer pays for something that renews by card or Direct Debit, it's saved and used for each renewal. Cards are charged on the due date; Direct Debits are collected 5 days before, so the money arrives in time.
- Their renewal email says the invoice will be paid automatically, from which card and on what date.
- A refused charge is tried twice more, three days apart. The customer is emailed after the first refusal and can pay another way.
- About a month before a saved card expires, the customer is asked to add a new one.
- Customers can add a card or set up a Direct Debit without paying anything, choose which pays their renewals, or remove one, from My Products → Payment methods.
Also under Renewals:
- Monthly / Yearly: invoice days before: how far ahead renewal invoices are sent.
- Grace before on hold: how many days after the paid-until date an unpaid product is put on hold.
4. Payment reminders
Under Payment reminders:
- Remind this many days before the due date: 0 sends none.
- Chase this many days after the due date: e.g.
1, 7, 14. Leave empty to send none.
Nobody is reminded while a payment is on its way, or before the due date when a saved card or Direct Debit will pay it. You can change the wording under Settings → Email Templates.
5. Refunds, credit notes and account credit
From Billing → Invoices, press Refund on a paid invoice. Choose the amount (a full or part refund), the reason, and where the money goes:
- back to the card, PayPal or bank account it came from;
- kept as account credit, used automatically on the customer's next invoices;
- or recorded as refunded another way, e.g. a bank transfer you've made.
A credit note is sent to the customer every time.
Admins can also add goodwill credit on a customer's page, under Billing.
6. Quotes
Billing → Quotes lets you offer a price before invoicing. Add the customer, the lines and a "valid until" date, then send it. The customer accepts it from the link in the email, and the invoice is issued straight away for them to pay. They can also decline it, with a reason.
7. Reports and the webhook log
- Billing → Reports (admins) shows invoiced, credited, collected and refunded amounts, what's owed and recurring revenue per month for any period. It also has a tax summary for your VAT return. Download invoices, payments, credit notes or the tax summary as CSV for your accountant.
- Billing settings → Webhook log lists everything Stripe, PayPal and GoCardless have sent. If one failed, fix the cause and press Retry. Retrying is safe: a payment is never recorded twice.
Troubleshooting
- Payments aren't being marked as paid: check the webhook is set up with the right URL and secret, then look in the Webhook log. An event that failed shows why.
- "Test Connection" fails: check the keys are for the mode you've chosen. Test keys won't work in Live mode, and live keys won't work in Test or Sandbox mode.
- A Direct Debit shows "Payment on its way" for days: that's normal. Bank payments take a few working days to clear.
- A customer says they paid but the invoice is unpaid: look for their payment in the gateway's dashboard and the Webhook log. For bank transfers, record the payment against the invoice yourself.