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.
With Subscriptions on, a
customer who has a subscription sees a Subscriptions item in its place. Both lead to
the same Paddle portal: each subscription row has a Manage button that opens it. Customers without a
subscription keep Manage Billing. To show both items, add
add_filter( 'pimipay_paddle_account_hide_manage_billing', '__return_false' );
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.
For customers with a subscription, the portal is also where they cancel, pause or change the card for it. My Account → Subscriptions lists their subscriptions and links there with a Manage button. See Subscriptions.
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.