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
- 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.
- It creates a fresh customer portal session through the Paddle API.
- 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.