Stripe sells itself as "seven lines of code." For a Hello World, that's true. For an Australian business that needs GST handling, refunds, dunning, and invoicing, it's a couple of weeks of careful work. Here's what to look out for.
The four integration sizes
- Stripe Checkout (one-off): redirect to Stripe-hosted checkout. Days of work. Right answer for simple sales.
- Stripe Elements: embed Stripe's UI in your site. ~1 week. Better UX, more control.
- Stripe Billing (subscriptions): recurring billing with proration, dunning, invoicing. 2–4 weeks done properly.
- Custom flows with Connect: marketplaces, payouts to third parties. 4–8+ weeks. Real engineering.
GST: the part most integrations get wrong
Australian GST applies on most B2C sales. The naïve integration adds 10% on top of your prices and calls it done. Real integrations need:
- GST inclusive vs exclusive pricing. Decide which one your prices represent and stick to it. Mixing them is a tax-time nightmare.
- Customer location detection. GST applies to Australian customers. Foreign customers shouldn't pay it (unless you exceed the threshold).
- B2B GST exemptions. If your customer provides an ABN, your invoice and your GST treatment changes.
- Invoicing requirements. Australian tax invoices have specific format requirements. Stripe's default invoices need configuration to comply.
Stripe Tax solves most of this for an extra 0.5%. For most Australian businesses doing more than $50k a year through Stripe, Stripe Tax is worth the spend, it's far cheaper than fixing the audit later.
Webhooks: the silent failure
The single most common Stripe integration bug I see: the website sends the user to Stripe Checkout, the user pays, the user comes back, the website marks them as paid. This is wrong.
The right way: the website creates a pending order, the user pays, Stripe fires a webhook to your server, your webhook handler marks the order paid. This works even if the user closes their browser before redirect, even if your site is down for ten seconds.
If your integration doesn't use webhooks, it'll lose payments, silently, about 1% of the time.
Webhooks are the boring part of payments. They're also the part that determines whether your accounting reconciles.
The fields nobody fills in correctly
- Statement descriptor. What customers see on their card statement. Default is your business name; customise it for clarity.
- Receipt email. Stripe sends receipts automatically; many integrations forget to enable this.
- Customer metadata. Always pass your internal customer ID as metadata so reconciliation works later.
- Idempotency keys. If your integration retries a charge, idempotency keys prevent double-charges. Always include them.
Subscriptions: the surprise hits
If you're building subscriptions, plan for these:
- Trial-to-paid conversion. Stripe handles the mechanics; your code handles communicating clearly with the user.
- Failed payments and dunning. Cards expire. About 5–10% of monthly revenue runs through retry/dunning at any subscription business. Stripe Smart Retries are excellent; configure them.
- Proration on plan changes. Customer goes from $50 to $100 mid-month, Stripe will pro-rate. The UX of explaining the resulting invoice is your job.
- Cancellations. Cancel-at-period-end vs cancel-immediately. Different UX, different revenue impact.
What good Stripe integration costs in Australia
- Stripe Checkout one-off + webhooks: $1.5k–$3k
- Stripe Elements custom checkout: $3k–$8k
- Stripe Billing subscriptions with portal: $5k–$15k
- Custom Connect/marketplace flows: $15k–$40k+
If you're being quoted under those bands, the integration is probably skipping webhooks, GST handling, or both.
The bottom line
Stripe is great. The integration is more nuanced than "seven lines of code" once you handle GST, webhooks, and edge cases. Budget accordingly.
If you want three Australian developers who've shipped Stripe integrations before, FindDevs gets you those quotes. Free, in 24 hours.
