Skip to content
Insights · Engineering

Which link did that price open?

Name the link that price opened: the link id, the price, and the amount. Another link can name a different price, and another account does not list it.

Scroll
EngineeringOct 30, 202612 min readBy Salman Naqvi, Founder & CEO
Which link did that price open?

A buyer says the page charged the wrong amount, or says the link they opened is not the plan they were shown. Tonight, three proofs, in a console you administer. Name the link that price opened: the payment link id, the price id, and the amount. If the link stored no line item, write that, and do not invent a price to fill the hole. Show a different link whose id or price is not this one. Show another account's list that does not contain this link. If any of the three needs the person who wired checkout, you have not named the link. You have a URL and a guess.

This is the link on one price. It is not the product. Which product did that price sell? is the product id and the unit amount on a price. A price can be right while the link the customer opened names a different id. It is not the checkout session. Which session did that checkout open? is the session a visit created. A session can be right while you still cannot say which link minted it. It is not the coupon. Which coupon did that checkout apply? is a code and a discount. A discount is not a link id. It is not the rate a shipment named. Which rate did that shipment name? is a shipping rate id, an amount, and a display name. A display name is not a payment link id. It is not the deploy a status named, and it is not the eval a run scored. Those are different objects, and they are not this URL.

None of what follows is a rate for this product, and none of it is legal advice. The fields below are one processor's current description of a payment link, and the line-item sample is a different link. The counts below that are a 2022 experiment about how a participation payment was received. A yuan figure on someone else's bid is not the amount on the link you opened tonight. They do tell you which numbers people mix up when they try to sound precise about a price they have not opened.

Stripe's payment link object and Stripe's create-payment-link response print the same id, and neither of them prints a price. The id is plink_1MoC3ULkdIwHu7ixZjtGpVl2. 30 characters. object is payment_link. 12 characters. active is true. livemode is false, so the object is an example, not a live charge on your account. currency is usd. 3 characters. url is https://buy.stripe.com/test_cN25nr0iZ7bUa7meUY. 46 characters. The path after test_ is cN25nr0iZ7bUa7meUY. 18 characters. 18 is not 30, and 46 is not 30. submit_type is auto. 4 characters. allow_promotion_codes is false. application_fee_amount is null. application_fee_percent is null. customer_creation is if_required. 11 characters. after_completion.type is hosted_confirmation. 19 characters. subscription_data.trial_period_days is null. custom_fields is an empty array. The page says you may collect up to 3 custom fields. 0 items is not 3. inactive_message, which the parameter list caps at 500 characters, is not on this object. Null is not 500, and a missing field is not a message you are allowed to invent (Stripe, The Payment Link object, and Create a payment link).

The create request does send a price, and the response still does not store it. The prerequisite on the create page makes a price with currency usd, unit_amount 1000, recurring interval month, and product name Gold Plan. 9 characters. The request then sends line_items[0][price] as a placeholder and line_items[0][quantity] as 1. The parameter list says up to 20 line items are supported, and up to 10 optional items, and that the combined count of line items and optional items is at most 20. 1 is not 20, and 10 is not 20. The version header on the sample request is 2026-10-28.endive. 17 characters. The response does not echo the price id, the quantity, or Gold Plan. Do not paste 1000 onto this link because the prerequisite printed it. A recurring month is not a field the response stored.

The line-item page is a different link, and its amount is not the prerequisite. The list url ends in plink_1N4CWjLkdIwHu7ix2Y2F1kqb. Also 30 characters, and not the same string as plink_1MoC3ULkdIwHu7ixZjtGpVl2. The one item id is li_NpsHNiHSaDeU0X. 17 characters, the same length as the version header, and not the same string. description is T-shirt. 7 characters. 7 is not 9, and T-shirt is not Gold Plan. price id is price_1N4AEsLkdIwHu7ix7Ssho8Cl. 30 characters, the same length as the link id, and not a link id. unit_amount is 1099. unit_amount_decimal is the string 1099. 4 characters. 1099 is not 1000. The gap is 99, which the page does not print. recurring is null. type is one_time. 8 characters. per_unit is also 8 characters, and it is the billing scheme, not the type. A one-time price is not the monthly price the prerequisite created. product is prod_NppuJWzzNnD5Ut. 19 characters, the same length as hosted_confirmation, and not the same string. quantity is 1. amount_subtotal is 1099. amount_discount is 0. amount_tax is 0. amount_total is 1099. 1099 plus 0 plus 0 is 1099. 1099 times quantity 1 is 1099. The arithmetic on this one item matches, and it still is not unit_amount 1000. created is 1683237782. 10 digits. has_more is false. The list holds 1 object. The same page says the default limit is 10 and the maximum is 100, and the pagination sentence talks about receiving 100 objects. 1 is not 10, and 10 is not 100 (Stripe, Retrieve a payment link's line items).

The same pages name hosts and enums the sample does not sit on. submit_type values are five: auto, book, donate, pay, and subscribe. The sample is auto. The page says auto means pay will be used, and that pay and subscribe use the buy.stripe.com hostname, book uses book.stripe.com, and donate uses donate.stripe.com. The sample URL is buy.stripe.com. The hostname matches pay. The stored string is auto. auto is not pay. 4 is not 3, and 5 values is not 1 sample. payment_method_collection is always. The other value is if_required, which is the string already used for customer_creation. The same 11 characters are not the same setting. billing_address_collection is auto, which is also the submit_type. Two fields can share a word and still not be one fact. currency usd is 3 characters. A three-letter code is not unit_amount 1099.

The study people reach for when they want a checkout number is a different document, and its own cells do not make the link's amount. Yizhao Jiang reports a rule-assigned experiment. Participants received RMB 30 either as cash or by WeChat transfer, then completed a purchase in cash or through WeChat Pay. Table 1 prints 77, 58, 71, and 68 participants. 77 plus 58 is 135. 71 plus 68 is 139. 135 plus 139 is 274. The paper says 274 participants. 77 of 274 is the cash-cash cell, and the addition matches. Table 2 prints product observations 142, 114, 141, and 125. 142 plus 114 is 256. 141 plus 125 is 266. 256 plus 266 is 522. The paper says 522 protocol-valid observations. That addition matches too. 77 times 2 is 154, and the cell prints 142. 58 times 2 is 116, and the cell prints 114. 71 times 2 is 142, and the cell prints 141. 68 times 2 is 136, and the cell prints 125. The four shortfalls are 12, 2, 1, and 11. 12 plus 2 plus 1 plus 11 is 26. 274 times 2 is 548. 548 minus 522 is 26. The page does not print 26. It does say the observations are not exactly twice the participants, because a person can have one valid bid. A paired-complete sample is 248 participants and 496 observations. 248 times 2 is 496. 274 minus 248 is 26. 522 minus 496 is 26. The same 26 is the people with one valid product, and it is still not a price id (Jiang, How Money Enters Before It Leaves).

The means on that table are a third scale, and they are not 1099. Cash then cash is 10.73. Cash then WeChat is 10.31. WeChat then cash is 7.51. WeChat then WeChat is 9.69. 9.69 minus 7.51 is 2.18. 10.73 minus 10.31 is 0.42. 2.18 plus 0.42 is 2.60. The adjusted interaction the paper prints is also 2.60, from contrasts of 2.21 and negative 0.39. 2.21 minus negative 0.39 is 2.60. The confidence interval is 0.86 to 4.34. 0.86 plus 4.34 is 5.20. Half of 5.20 is 2.60. The midpoint matches the estimate, and 2.60 is not unit_amount 1099, and it is not 1000. The participation payment is RMB 30. The bid range on the cash-cash cell is 1 to 20. 30 is not 20. One implementation places RMB 30 cash on the desk. Another places the required RMB 20. 20 is not 30, and neither is the amount on a payment link. The pooled file before the cut is 550 records from 275 participants. 275 times 2 is 550. 275 minus 274 is 1. 550 minus 522 is 28. 28 is not 26, and 1 dropped participant does not by itself explain 28 dropped records. A gap you can subtract is not the link the customer opened.

Do the three proofs on one real link, in the console that actually holds it. First, the binding. Copy the payment link id, the price id, and the amount. If the object you retrieved has a URL and no line item, write that, and then open the line-item list. Do not infer price_1N4AEsLkdIwHu7ix7Ssho8Cl because a sample prints it, and do not infer 1000 because a prerequisite printed it. If the only amount you have is 1099 on a T-shirt, write the T-shirt and write that it is not Gold Plan. Second, the other link. A different link, with a different id, is not this one. plink_1N4CWjLkdIwHu7ix2Y2F1kqb is not plink_1MoC3ULkdIwHu7ixZjtGpVl2, even though both are 30 characters. A chart of 274 other people is not that second link. Third, the other account. A list that belongs to someone else does not contain this link id. If the only list is a single shared table and you cannot say whose link it is, write that. A tenant you cannot name is the finding. It is not a reason to tell the buyer the price was 1000.

Three moves feel like the proof and are a second problem. Deactivating the link because the amount was embarrassing, before you have copied the id. The call changes active. It does not tell you what the previous price was if you did not copy it. Quoting 2.60 or 10.73 because one of them looks precise, while the link you were asked about is one object, and the 522 bids that produced those figures had not opened your customer. Asking a model which price the link sold. The model will pick a plausible amount. It will not open the line items. A product you have not kept, while the buyer is arguing about the plan, is which product did that price sell?. Opening that screen does not name the URL.

The path is ordinary when an operator can open one price without opening the next merchant as the way to prove it. PayOrch is a payment orchestration dashboard: wallets, providers, merchants, platform fees, FX rates, and fraud controls in one view. The shape that matters here is one merchant you can point at, in an account you administer, distinct from the next merchant. That case is not a payment-link ledger. Nothing in that sentence is a headcount, a duration, or a result figure. If the only control on the screen shows a day's volume and will not name a link id, you do not have this proof. You have a chart.

There is a version of this afternoon where hiring the path is the wrong purchase. Nothing is for sale, because the product does not take money yet. You have no product. You are still choosing who will build, and the document in front of you is a term sheet. The criteria for that choice sit on the page written for a top SaaS development company. That page is criteria. It does not rank anyone, including us. The only fact in the room is a paper's willingness to pay on other users. 2.60 is not your amount, and 274 is not your amount, and 1099 on a sample T-shirt is not your amount. A customer has already seen another customer's link. Naming an id does not close a leak. Or you wanted a lawyer to say whether a hosted page is a contract. Hire the lawyer.

When the link is real and the console cannot name the price, the missing object is specific. An admin action, in an account you administer, that shows one link id, one price id, and one amount, shows a different link that is not that price, and shows another account's list without it. A startup software development company that expects this will have put that action next to the rest of the billing screen, before a stranger's complaint is the way you discover the vendor owns the URL. One that needs a call in order for you to see which price is stored is telling you who holds the amount. If the first slice is a fixed capability, an AI integration sprint is the shape where the acceptance sentence can include the three proofs. If you do not yet know which system stores the link, a two-week AI readiness assessment maps the systems. The findings are yours. They are not a promise that a paper's 2.60 applies, and they are not 1099.

The deploy a status named, and the eval a run scored, are different objects: which deploy did that status name? and which eval did that run score?. Do not record either on this page. A deployment id is not a price id. A run id is not a unit amount.

Before you tell them which price the link opened, do the three proofs and write the ids. Name the link, the price, and the amount, or write that the link stored no line item. Show a different link that is not that price. Show another account's list that does not hold it. Do not paste a prerequisite onto a response that omitted the price, and do not ask a model which of the amounts it was. A paper can tell you what it counted on other users, including the 26 people who had one valid bid and the 28 records that left the pooled file. The binding is the link you can defend.

Questions

Three records, in a console you administer. The payment link id, the price id, and the amount, or a written line that the link stored no line item. A different link whose id or price is not this one. Another account's list that does not contain this link. If any of the three needs the person who wired checkout, you do not have the proof.

No. A yuan figure on other people's bids is not the unit amount on this link. A link you can defend is the id, the price id, and the amount, or a written line that no line item was stored. 2.60 on one interaction is not 1099, and 1000 on a prerequisite is not the amount the line item printed.

When nothing is for sale, when you have no product, when you are still choosing a firm, when the only fact in the room is a paper's willingness to pay, when a customer has already seen another customer's link, or when you wanted a lawyer.

Find this useful? Tell Google to show you more of it.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→