Hosted checkout (Product Collection): switching plans does not update the displayed meter price — shows the other product's price_per_unit
Hello Dodo Payments team,
On the hosted checkout for a Product Collection, the per-unit meter price displayed under the selected plan does not update when the customer switches plans — it keeps showing the price_per_unit of the collection's first product. The product configuration and the session data are both correct, so this appears to be a display-layer issue on the checkout page.
### Setup (Test Mode)
Two usage-based subscription products that attach the **same meter** with **different price_per_unit**, grouped in one Product Collection:
- Collection: pdc_0NkHvR1jUc2bTqx3jtTNa (products in this order)
- Product 1: pdt_0Nb6cwDRX6Qft6tEpHruq "Petify (DEV)" — $0 fixed price + meter mtr_0Nb6cXrBT6IZZ7Ka4nnBW ("Active pets") at price_per_unit: 50 ($0.50/unit)
- Product 2: pdt_0NkHvBH9Y6Se7Qu2rDtco "Petify PRO (DEV)" — $0 fixed price + the **same meter** at price_per_unit: 75 ($0.75/unit)
### Steps to reproduce
1. Create a checkout session with product_collection_id and an empty product_cart (our repro: session cks_0NkZ7frvtONN42VbaS3TB, 2026-08-03 ~04:00 UTC).
2. Open the checkout URL. The first product is pre-selected and its meter line reads "Active pets — $0.5 per pets" (correct for that product).
3. Select the second plan, "Petify PRO (DEV)".
### Actual behavior
The expanded meter line under the now-selected PRO plan still reads **"Active pets — $0.5 per pets"** — the first product's price.
The wrong value is introduced at render time, not in the data:
- GET /products/pdt_0NkHvBH9Y6Se7Qu2rDtco returns price_per_unit: 75
- the checkout page's own server-rendered/embedded session payload contains "price_per_unit":75 for the PRO product
A possibly relevant detail: both products attach the same meter_id, so a meter-keyed price lookup in the checkout UI would collide between the two plans.
First noticed by a teammate in a regular Chrome session; afterwards reproduced deterministically in a separate environment.
### Expected behavior
The meter price line always reflects the **selected** product's own price_per_unit (here $0.75 per unit when the PRO plan is selected).
### Impact
Customers choosing the higher-priced plan are shown a per-unit price ~33% lower than what their subscription is configured to bill. Since this is the number the customer decides on, it is a billing-transparency problem even if the subscription itself bills the correct configured price afterwards.
### Related observation (happy to file separately)
For the same collection, creating a session with product_cart: [{"product_id": "pdt_0NkHvBH9Y6Se7Qu2rDtco", "quantity": 1}] (session cks_0NkZ82TXQIRv5S2j95QrN) still renders with the collection's **first** product pre-selected — the cart's product seems to be ignored in collection mode. If that is by design, a documented way to pre-select a specific plan in a collection checkout would be useful.
Observed in Test Mode only so far (we have not yet mirrored this collection in Live Mode). Could you confirm whether the display issue reproduces on your side? Happy to provide more details.
0 Comments
Sign in to comment
No comments yet. Be the first to share your thoughts!
