Create a Price object in Stripe with the unit amount in the smallest currency unit and set tax_behavior to 'inclusive' if the displayed price should include tax, or 'exclusive' to add tax on top.
Attach the Price to a Payment Link via the API, setting the quantity and any adjustable_quantity limits if you want customers to change the quantity.
Enable automatic tax on the Payment Link by setting automatic_tax.enabled to true; Stripe Tax will calculate tax based on the buyer's address collected at checkout.
Configure the after_completion field to either show a hosted confirmation page or redirect to a URL with the session ID for order fulfillment.
Retrieve the completed Checkout Session via webhook on checkout.session.completed; the session contains the amount_total, amount_subtotal, and total_details.amount_tax fields.
For B2B buyers, enable the customer tax ID collection field so buyers can enter their VAT or GST number to trigger reverse-charge or exemption rules.
Known gotchas
Tax-inclusive pricing means the unit_amount is the total the customer pays; when Stripe calculates tax, the subtotal shown in reports will be lower than the unit_amount you set.
Payment Links do not support server-side metadata injection at payment time; use the metadata field on the Payment Link object itself or append query parameters that map to client_reference_id.
Automatic tax requires you to have registered your tax nexus addresses in the Stripe Tax settings; missing registrations will cause tax to not be collected in certain jurisdictions.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp