Stripe by default, for its API, its documentation, its features and, in Australia, its price. PayPal only for what Stripe can't give you, its reach and its payouts to people who already have an account, and never as the only way money moves.
The short version
| Stripe | PayPal | |
|---|---|---|
| Australian card payment | 1.65% + A$0.30 domestic, 3.5% + A$0.30 international | 2.90% + A$0.30 domestic, plus 1% from overseas |
| Currency conversion | +2% | 3–4% above the base rate |
| Building on it | One coherent API, test mode, a CLI, webhooks documented as they really behave | Improved since 2022 (REST v2, new SDKs, an MCP server), still spread across products and generations |
| Subscriptions and invoicing | Built in, with proration, retries and a customer portal | Possible, with more work |
| Customers who only pay with PayPal | Not in Australia: Stripe processes PayPal only in Europe | Yes: about 439 million accounts |
| Paying many people small amounts | Connect: A$0.25 per payout plus identity checks on every recipient | Payouts: to an email in 96 countries, 2% capped at A$1.25 domestic, no onboarding |
| Risk | Restricted businesses need approval | Limits and reserves on criteria it doesn't disclose |
Why Stripe is the default
I've integrated both. Stripe is the payments API everyone else copies. The documentation says what really happens, duplicates, ordering and retries included, instead of pretending it's simple. Test mode, the CLI and restricted keys make it safe to build on, and Billing covers subscriptions and invoices you'd otherwise write yourself. On AWS it sends events straight to EventBridge, so there's no webhook endpoint to run. And in Australia it's cheaper on every line that matters.
PayPal was the opposite experience: documentation that sent me in circles between products and API generations, and every step slower than it should have been. It has improved. The legacy APIs are deprecated in favour of REST v2, the old SDKs have been replaced, and there's an MCP server for agents. The gap has narrowed, but it hasn't closed.
When PayPal earns its place
PayPal's moat isn't technology, it's penetration. Two cases justify it.
Customers who expect the button. Some buyers have money and a card sitting in PayPal and won't type a card number anywhere else. If your market looks like that, losing them costs more than the integration. Run PayPal beside Stripe, not instead of it.
Paying a crowd. I built a platform that paid workers in many countries about 20 cents per task. Stripe couldn't do it at that size: Connect charges A$0.25 per payout and runs identity checks on every recipient, and its Global Payouts product isn't generally available to Australian businesses. PayPal Payouts sends money to an email address, to people who already have an account, for a fee of a fraction of a cent on a 20-cent payment. For that job, it was the only practical choice, and still is.
Choose your poison
Taking PayPal means accepting two costs. The first is the build: plan more time than you think, use only the REST v2 APIs, and ignore any tutorial that mentions IPN. The second is the risk: PayPal can limit an account or hold part of a balance in reserve, and appeals are slow. Withdraw regularly, keep a second processor ready, and never let PayPal be the only way money moves through the business.