سلام — پیامت رو امروز صبح دیدم، اسکرینشات کسی که توی صندوق پشتیبانی اپلیکیشنت پرسیده بود «چطور میتونم بابت این پول بدم». واقعاً تبریک میگم. این همون لحظهایه که یک پروژه شخصی دیگه یک دمو نیست. همچنین همون لحظهایه که صدها تصمیم کوچک که تا حالا میتونستی به تعویق بندازی، همه یکجا توی یک سهشنبه سر و کلهشون پیدا میشه. ازم خواستی فقط بهت بگم چیکار کنی. همین کارو میکنم، ولی میخوام اول دلیلش رو برات توضیح بدم، چون همین «چرا» باعث میشه سه ماه دیگه، وقتی بهجای Stripe نوبت Lemon Squeezy میشه یا بهجای پرداخت یکباره نوبت اشتراک، دوباره مجبور نشی ازم بپرسی.
تصمیمی که واقعاً داری میگیری
تو این موضوع رو بهشکل «از کدوم ارائهدهنده پرداخت استفاده کنم» مطرح کردی، ولی در واقع این دو تصمیم روی هم قرار گرفتهاند. اول: میخوای خودت فروشنده رسمی (merchant of record) باشی یا کس دیگهای این نقش رو بازی کنه؟ دوم: شکل صورتحسابدهیات چیه — خرید یکباره، اشتراک، یا پرداخت بر اساس مصرف؟ اگه تصمیم اول رو اشتباه بگیری، شش ماه دیگه یک آخر هفته رو صرف ثبتنام برای مالیات بر ارزش افزوده در کشوری میکنی که هرگز پات رو اونجا نذاشتی. اگه تصمیم دوم رو اشتباه بگیری، فقط یک مهاجرت آزاردهندهست، نه یک مشکل قانونی، پس این یکی ترسناکی کمتری داره.
فروشنده رسمی بودن (merchant of record) یعنی از نظر قانونی تو کسی هستی که محصول رو میفروشی. تو پول رو دریافت میکنی، مسئولیت محاسبه مالیات بر فروش و ارزش افزوده در هر حوزه قضایی که مشتریانت در آن زندگی میکنند با توست، و باید برای آن اظهارنامه بدهی. Stripe با کمال میل این مالیات رو برات محاسبه میکنه (Stripe Tax)، ولی محاسبه کردن با پرداخت کردن فرق داره — همچنان باید در هر جایی که از یک آستانه عبور میکنی ثبتنام کنی و اظهارنامه بدی. یک سرویس فروشنده رسمی مثل Lemon Squeezy یا Paddle کل این مسئله رو از روی میز تو برمیداره: از نظر قانونی آنها فروشنده هستند، در همهجا مالیات جمعآوری و پرداخت میکنند، و سود خالص رو به تو میدهند. در ازای آن، بخشی از حاشیه سود رو از دست میدی.
| گزینه | فروشنده چه کسیه | نرخ کارمزد معمول | نحوه مدیریت مالیات | بهترین برای |
|---|---|---|---|---|
| Stripe (مستقیم) | شما | ~۲.۹٪ + ۰.۳۰ دلار به ازای هر تراکنش، بهعلاوه ۰.۵٪ برای Stripe Tax | تو ثبتنام و اظهارنامه میدی، Stripe فقط محاسبه میکنه | انتظار داری از چند هزار دلار در ماه فراتر بری و به دنبال کارمزدهای کمتر در بلندمدت هستی |
| Lemon Squeezy | Lemon Squeezy | ~۵٪ + ۰.۵۰ دلار به ازای هر تراکنش | کاملاً مدیریتشده، آنها فروشنده رسمی هستند | سازنده انفرادی، اولین محصول، اصلاً نمیخواهد درگیر مالیات شود |
| Paddle | Paddle | ~۵٪ + کارمزدهایی که بسته به منطقه متفاوت است | کاملاً مدیریتشده، مناسبتر برای سازمانهای بزرگ | سرویس SaaS با اشتراکها و برخی نیازهای صدور فاکتور |
| PayPal | شما | ~۳.۵ تا ۴.۵٪، اختلافات دوستانه با خریدار | خودتان آن را مدیریت میکنید | مشتریانی که مشخصاً به PayPal اعتماد دارند، نه یک انتخاب پیشفرض |
برای جایی که الان هستید — یک مشتری، یک محصول ساده، هنوز معلوم نیست این به یک کسبوکار تبدیل شود یا نه — بهجای Stripe مستقیم، Lemon Squeezy یا Paddle را پیشنهاد میکنم. آن دو درصد کارمزد اضافه، بیمهای ارزان در برابر این است که بهطور تصادفی مکلف به ثبت مالیاتی در ایالتی شوید که هیچوقت پایتان را آنجا نگذاشتهاید. بعداً که حجم تراکنشها توجیهکننده شد و آمادگی کاغذبازی را داشتید، میتوانید مستقیم به Stripe مهاجرت کنید. هیچکس برای تفریح ارائهدهنده پرداخت عوض نمیکند، اما این کاری قابلحل در یک سهشنبه است، نه یک سال.
خودم این اشتباه را در پروژهای قبلی مرتکب شدم — چون «همه از Stripe استفاده میکنند» مستقیم سراغ آن رفتم، ماهانه چند صد دلار از چند مشتری اروپایی جمع کردم، و هجده ماه بعد یک ایمیل خیلی مؤدبانه اما گیجکننده درباره ثبتنام VAT MOSS دریافت کردم. هزینهاش یک بعدازظهر حسابدار و چهل دقیقه پانیک خالص برای جستجوی «آیا به هلند بدهکارم» بود. فاجعهبار نبود. اما کاملاً قابلاجتناب هم بود.
قبل از دستزدن به کلیدهای واقعی
هرچه را انتخاب کردید، اول آن را در حالت تولید (production) وصل نکنید. هر کدام از این ارائهدهندگان یک حالت تست/سندباکس دارند با شمارهکارتهای تقلبی که نتایج مشخصی را فعال میکنند — پرداخت موفق، کارت ردشده، نیاز به 3D Secure، موجودی ناکافی. قبل از دستزدن به کلید واقعی، همه اینها را امتحان کنید. مسیرهای شکست همانهایی هستند که در هفته اول واقعاً با آنها روبهرو میشوید، و اشکالزدایی زندهشان با کارت واقعی یک نفر اصلاً لذتبخش نیست.
در چت ساخت خود، صریح بگویید که میخواهید این کار مرحلهبندی شود: بخواهید یکپارچهسازی ابتدا در حالت تست وصل شود، همراه با یک بنر یا پرچم کاملاً قابلمشاهده تا هیچکس — از جمله خودِ آیندهتان — بهطور تصادفی هنگام تست، از کارت واقعی کسر نکند. سپس یک مرحله دوم و آگاهانه برای جایگزینی با کلیدهای واقعی داشته باشید. دو دستور، نه یکی، حتی اگر گفتن «پرداخت اضافه کن» و گذاشتن اینکه خودش حالت را حدس بزند سریعتر باشد. این اصطکاک همان نکته اصلی است.
همچنین باید تصمیم بگیرید هنگامی که یک webhook فعال میشود و سرور شما خاموش یا کند است، یا رویداد دو بار میرسد، چه اتفاقی بیفتد. این یک فرض نظری نیست — بهطور قطع در هفته اول رخ میدهد. رویدادهایی که حداقل باید مدیریت کنید:
checkout.session.completed(یا معادل آن) — دسترسی بدهید، این همان لحظهای است که مشتری واقعاً مشتری میشودinvoice.payment_failed— برای اشتراکها، حالا تصمیم بگیرید که این یک قطع دسترسی فوری است یا یک دوره مهلت، چون «قطع دسترسی فوری» برای کارتی که تازه دچار یک اختلال موقت شده، برداشت اول واقعاً بدی میسازدcustomer.subscription.deleted— کسی لغو کرده، دسترسی را در پایان دوره لغو کنید، نه فوراً، مگر اینکه شرایط شما چیز دیگری بگوید- یک رویداد بازپرداخت — قبل از اینکه اولین درخواست بازپرداخت شما را مجبور به تصمیم زنده کند، یکبار برای همیشه، بهطور مکتوب برای خودتان مشخص کنید سیاست بازپرداخت شما واقعاً چیست
ایدمپوتنسی اینجا بیش از تقریباً هر جای دیگری در اپ شما اهمیت دارد. اگر یک webhook دو بار برسد — که خواهد رسید، چون ارائهدهندگان روی هر پاسخ غیر ۲۰۰ دوباره تلاش میکنند — نباید دو بار دسترسی بدهید یا، بدتر، وضعیت داخلی را دوبار شارژ کنید. شناسه رویداد را ذخیره کنید و قبل از عملکردن روی آن، بررسی کنید که قبلاً پردازش نشده باشد.
سوال قیمتگذاری که از آن فرار میکنید
در پیامتان گفتید مطمئن نیستید ۹ دلار در ماه شارژ کنید یا یکبار ۴۹ دلار. فکر نمیکنم هیچکدام اشتباه باشد، اما توجه کنید واقعاً از چه چیزی فرار میکنید: مکالمه با مشتری درباره اینکه ارزش تکرارشونده چیست. یک قیمت یکباره پذیرفتنش آسانتر است و ساختنش برای شما سادهتر (بدون dunning، بدون مدیریت تمدید ناموفق، بدون فرآیند لغو). اشتراک یک شرطبندی است بر این که بهاندازه کافی این محصول را بهبود میدهید که کاربران ریزش نکنند — که یک تعهد واقعی است، نه فقط یک تیک در صفحه قیمتگذاری. اگر مطمئن نیستید شش ماه دیگر هم فعالانه روی این کار خواهید بود، قیمت یکباره پیشنهاد صادقانهتری است. بعداً که چیزی مستمر برای اشتراک وجود داشت، میتوانید یک سطح اشتراکی هم اضافه کنید.
یک نکته دیگر و بعد بگذارید به کارتان برسید: قبل از دریافت اولین دلار، یک سیاست واقعی بازپرداخت و لغو روی صفحه بگذارید، حتی اگر فقط سه جمله باشد. نه به این دلیل که کسی بهخاطر شارژ ۹ دلاری از شما شکایت میکند، بلکه چون نوشتنش شما را مجبور میکند واقعاً تصمیم بگیرید، و «وقتی کسی پرسید حلش میکنم» یعنی در وسط یک ایمیل عصبانی بهجای یک بعدازظهر آرام تصمیمگیری کنید.
برو اول سندباکس را وصل کن. وقتی یک کارت ردشده تقلبی را از داخل آن رد کردی، پیام بده — آن نسخه از «کار میکند» است که واقعاً اهمیت دارد.



