Documentation

Customer portal

Customers can reach Paddle's own billing portal from My Account, without you having to build anything or field the requests yourself.

A Manage Billing item is added to the WooCommerce My Account menu, just above "Log out". It opens a Paddle customer portal session for the signed-in customer.

When the link appears

The item is only shown when the customer actually has something to manage — specifically, when they have a paid Paddle order that a Paddle customer ID can be resolved from, either stored on the order or recoverable from its transaction. Orders placed in a different Paddle environment than the one currently configured are ignored.

This check makes no API calls, so it costs nothing on every My Account page load.

What happens on click

  1. The plugin resolves the customer's Paddle customer ID, fetching it from the transaction for older orders that predate customer ID storage and storing it for next time.
  2. It creates a fresh customer portal session through the Paddle API.
  3. The customer is redirected to the portal on Paddle's own domain.

Portal URLs are short-lived, so a new session is minted on every click and none is ever stored. What the customer can do once they are there is up to Paddle — the portal covers their payment history and invoices for transactions on your Paddle account, and the payment details Paddle holds for them.

Implementation notes

  • No rewrite endpoint is registered. The link is a nonce-protected query argument on the My Account page (pimipay-paddle-portal=1), so there are no permalinks to flush.
  • An expired link, a billing profile that cannot be resolved, or an unreachable Paddle API adds an error notice and returns the customer to My Account.
  • The Paddle API must be configured for the portal to open — see Configuration.