<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>From payment model to a live checkout on StackOnward</title><link>https://stackonward.com/series/saas-payment-foundations/</link><description>Recent content in From payment model to a live checkout on StackOnward</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 11 Sep 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://stackonward.com/series/saas-payment-foundations/index.xml" rel="self" type="application/rss+xml"/><item><title>Go Live with Payments: From Sandbox Keys to the First Real Order</title><link>https://stackonward.com/posts/payment-sandbox-to-production-launch/</link><pubDate>Fri, 11 Sep 2026 05:24:00 +0800</pubDate><guid>https://stackonward.com/posts/payment-sandbox-to-production-launch/</guid><description>&lt;p&gt;The checkout page already uses a live key, but the subscription still cites a test Price. After the customer pays, the production webhook fails signature checks because it still uses the sandbox secret. Mixed config does not fail together: some errors stop before payment, others wait until money has moved, then order, entitlements, and finance stop in different states.&lt;/p&gt;
&lt;p&gt;The cutover order is: fence entries that create captures and refunds; attach account, keys, Price, webhook, domain, workers, and finance to live together; use read-only requests, test events, and return-URL checks to catch environment errors; then open the first real order under provider rules. If that first order fails, close new transactions. Webhooks, lookups, and reconciliation keep running.&lt;/p&gt;</description></item><item><title>Why Payment Methods Are Not Showing at Checkout</title><link>https://stackonward.com/posts/payment-method-availability-diagnosis/</link><pubDate>Fri, 11 Sep 2026 05:08:00 +0800</pubDate><guid>https://stackonward.com/posts/payment-method-availability-diagnosis/</guid><description>&lt;p&gt;RouteNest’s Pro monthly checkout produced three results. A Dutch buyer paying in EUR on desktop saw iDEAL and cards. A US buyer paying in USD saw cards plus Apple Pay or Google Pay. The same US buyer opening the page from a limited in-app WebView lost the wallet buttons. Why payment methods not showing at checkout for one customer, while another still sees them: each method has to pass the current account, this order, the buyer’s device, and this page’s settings. Change one of those, and the list can change.&lt;/p&gt;</description></item><item><title>Hosted Checkout vs Embedded Checkout</title><link>https://stackonward.com/posts/hosted-embedded-custom-checkout-comparison/</link><pubDate>Fri, 11 Sep 2026 05:00:00 +0800</pubDate><guid>https://stackonward.com/posts/hosted-embedded-custom-checkout-comparison/</guid><description>&lt;p&gt;RouteNest put the Pro payment form on the pricing page. A Dutch buyer chose iDEAL, and the browser still left for the bank. After the buyer authorized and came back, membership did not turn on, because the payment webhook had not arrived. Nothing was broken: where the form lives, whether the payment leaves the page, and whether payment is confirmed are three different jobs.&lt;/p&gt;
&lt;p&gt;If the provider&amp;rsquo;s full checkout page already covers the required payment methods and fields, start with hosted checkout. Keep a hosted embedded form only when the product configuration before payment cannot be abandoned. Split into hosted components when a prebuilt form cannot hold seats, add-ons, or a live quote. Generating the card number field in your own page jumps the security and compliance work; that is usually the wrong starting point for SaaS.&lt;/p&gt;</description></item><item><title>Merchant of Record vs Payment Processor: Who Sells the Order</title><link>https://stackonward.com/posts/payment-processor-vs-merchant-of-record/</link><pubDate>Fri, 11 Sep 2026 05:00:00 +0800</pubDate><guid>https://stackonward.com/posts/payment-processor-vs-merchant-of-record/</guid><description>&lt;p&gt;A customer buys a pretax $100 SaaS annual subscription and pays $20 more in tax. Both setups can mark the order &lt;code&gt;paid&lt;/code&gt;. Direct payment processing still has your company selling to the customer and carrying tax, refunds, and delivery. A merchant of record (MoR) becomes the seller the buyer faces on in-scope orders, then pays you a supplier amount after tax, fees, and contract adjustments.&lt;/p&gt;
&lt;p&gt;That is the merchant of record vs payment processor difference that matters. A payment processor answers how authorization, capture, and settlement complete. An MoR also changes who sold the product to the buyer. Hosted versus embedded checkout, whose API you call, and which balance first held the funds cannot prove seller identity on their own.&lt;/p&gt;</description></item><item><title>How to Model SaaS Products, Plans, and Prices</title><link>https://stackonward.com/posts/product-plan-price-saas-catalog-modeling/</link><pubDate>Fri, 11 Sep 2026 04:18:00 +0800</pubDate><guid>https://stackonward.com/posts/product-plan-price-saas-catalog-modeling/</guid><description>&lt;p&gt;RouteNest is about to raise Pro monthly from $19 to $24. If the system stores one mutable row—&lt;code&gt;plan=pro, price=19, stripe_price_id=...&lt;/code&gt;—writing 24 over 19 removes the basis for existing subscriptions. Whether the $190 annual price moves, whether the euro price is recomputed, which amount &lt;code&gt;WELCOME20&lt;/code&gt; discounts, and which Paddle or Creem object to charge all become guesses.&lt;/p&gt;
&lt;p&gt;How to model SaaS products and prices depends on when each fact changes. Product says what is sold. Plan says which features and limits the buyer receives. Price says amount, currency, interval, and version. A promotion only changes a qualifying sale. A provider mapping only projects an internal Price onto a payment channel. Orders and subscriptions must store the snapshot from the sale; they cannot reread &amp;ldquo;the current price&amp;rdquo; to explain the past.&lt;/p&gt;</description></item><item><title>Why a Payment Processor Application Gets Rejected, and How to Resubmit Evidence</title><link>https://stackonward.com/posts/payment-provider-review-rejected-verifiable-materials/</link><pubDate>Fri, 11 Sep 2026 04:16:00 +0800</pubDate><guid>https://stackonward.com/posts/payment-provider-review-rejected-verifiable-materials/</guid><description>&lt;p&gt;A payment processor application is rejected when a reviewer cannot independently match who is selling, through which domain, what the buyer receives after payment, who handles cancellation or refunds, and who receives the net proceeds. Genuine files still fail when those facts point at different businesses.&lt;/p&gt;
&lt;p&gt;The application names &lt;code&gt;Northstar Labs, Inc.&lt;/code&gt;. The site footer only shows the product name &lt;code&gt;RouteNest&lt;/code&gt;. The pricing page sells a USD 19 monthly auto-renewing subscription, while the refund page still describes a one-time download. The product is behind login and the reviewer has no account. The payout account still names the founder personally. Each of those statements can be true. Together they do not say who sells what, how it is delivered, or where the money goes.&lt;/p&gt;</description></item></channel></rss>