کارمزد و سقفهای API پذیرنده
صورتحسابها یک کارمزد پلتفرم دارند که از سهم شما کسر میشود؛ انتقالها و چکها هم به سقف مبلغ محدودند. عددهای زیر تنظیمات فعلیاند، نه شرط قرارداد — هر جا با آنچه در برنامه میبینید مطابقت نداشت، ملاک برنامه است و منبع قابل اتکا همیشه صورتحسابهای پرداختشدهی خودتان است.
کارمزد صورتحساب
پرداختکننده همیشه مبلغ اسمی صورتحساب را میپردازد. کارمزد از سمت پذیرنده برداشته میشود: موجودی برنامهی شما به اندازهی مبلغ پس از کسر کارمزد شارژ میشود.
کارمزد پایه، پیش از اعمال پلههای وابسته به حجم پرداخت، 3% مبلغ صورتحساب است. نرخ شما به پلههای تنظیمشده و حجم صورتحسابهای پرداختشده در 30 روز گذشته بستگی دارد:
| حجم 30 روزه | کارمزد |
|---|---|
| کمتر از 10,000 دلار | 3% |
| از 10,000 دلار | 2.9% |
| از 25,000 دلار | 2.8% |
| از 50,000 دلار | 2.7% |
| از 75,000 دلار | 2.6% |
| از 100,000 دلار | 2.5% |
دو قاعده از خود عدد مهمترند:
- کارمزد در لحظهی پرداخت تعیین و قفل میشود. تغییر بعدی نرخ هرگز به صورتحسابی که پیشتر پرداخت شده دست نمیزند.
- نرخ شما با گردش کارتان تغییر میکند. گردش پرداخت بالاتر در بازهی 30 روزهی گذشته میتواند شما را خودکار به پلهی پایینتر ببرد. نه درخواستی لازم است، نه چیزی برای تنظیم کردن.
برای اینکه ببینید دقیقاً چه چیزی کسر شده، fee_asset و fee_amount را از
صورتحساب پرداختشده بخوانید — از محتوای وبهوک invoice_paid یا از
getInvoices. برای حسابداری شما همان عدد معتبر است.
بازگشت وجه کارمزد را برنمیگرداند: آنچه refundInvoice به پرداختکننده
میفرستد از موجودی شما کم میشود و کارمزد بازنمیگردد — در بازگشت جزئی هم همین
است.
پرداختهای اشتراک هم کارمزد پذیرنده دارند؛ کارمزد هر پرداخت در فیلد charge.fee از
وبهوک subscription_charged گزارش میشود.
سقف انتقال
transfer حداقل و حداکثر هر انتقال دارد که بهصورت معادل دلاری بیان میشوند، نه مبلغی جدا برای هر دارایی. در یکپارچهسازی خود، خطاهای amount_too_small و amount_too_big را برای مبالغی که با این محدودیتها رد میشوند مدیریت کنید.
اگر حالت پرداخت اجازه بدهد، username ناشناخته بهجای خطا یک پرداخت در انتظار ایجاد میکند؛ انتقال و چک را ببینید.
انتقال در این حالتها هم ناموفق میشود:
- در آن دارایی موجودی برنامهتان کم بیاید،
- گیرنده کاربر این برنامه نباشد — پرداخت به شناسهی تلگرامِ ناشناخته یا اشتباه، بهجای شارژ کیف پولی که کسی آن را باز نمیکند، خطا میدهد،
- حساب گیرنده مسدود باشد.
سقف روزانه پرداخت
مالک میتواند در تنظیمات پرداخت برنامه، سقفی برای هر بازه 24 ساعته تعیین کند. انتقالها، چکها و پرداختهای موجودی برنامه از همین سقف مشترک استفاده میکنند. عبور از آن خطای 403 daily_cap_exceeded میدهد؛ در پرداخت دستهای، سقف پیش از اولین پرداخت بررسی میشود. بازگشت وجه جزو این سقف نیست. getMe مقدارهای daily_payout_max_usd_cents و daily_payout_spent_usd_cents را برمیگرداند.
محدودیت حساب مالک هم میتواند انتقال، چک و بازگشت وجه را متوقف کند (403 verification_required)؛ توقف موقت پرداختها خطای 503 merchant_payouts_paused میدهد.
سقف درخواست
متدهایی که دارایی جابهجا میکنند برای هر برنامه سقف دارند (مشترک بین همه توکنهایش): createInvoice و createCheck هر دقیقه 60 بار، refundInvoice هر دقیقه 30 بار، transfer هر دقیقه 30 بار و transferBatch هر دقیقه 10 بار. updateApp و createSubscriptionPlan هم سقف دارند؛ مرجع API را ببینید. با دیدن rate_limited، فاصله بین تلاشهای دوباره را بیشتر کنید.
جلوگیری از پرداخت دوباره
transfer به یک spend_id نیاز دارد که خودتان میسازید؛ createCheck و
refundInvoice هم آن را میپذیرند. اگر همان مقدار را با همان پارامترها دوباره بفرستید، بهجای
جابهجایی دوبارهی دارایی، همان نتیجهی اول تکرار میشود — پس درخواستی را که تایماوت
شده میتوان بیخطر با همان spend_id دوباره فرستاد و فقط پرداختی که واقعاً
جدید است spend_id جدید میگیرد.
چه چیزی هزینه ندارد
در API پذیرنده هیچجا کارمزد شبکه وجود ندارد — صورتحساب، انتقال و چک همگی داخل خود برنامه و بیرون از زنجیره تسویه میشوند. کارمزد پلتفرم ممکن است به صورتحسابها و پرداختهای اشتراک تعلق بگیرد. تبدیل خودکار اختیاری با نرخ پیشنهادی تبدیل انجام میشود. تأمین موجودی پرداختکننده از کیف پول بیرونی هم ممکن است کارمزد آن کیف پول یا شبکه را داشته باشد.
⚠️ هرگز کارمزد را خودتان حساب نکنید
درصد را در کد ثابت نکنید و مبلغ خالص را از روی مبلغ اسمی بازسازی نکنید. پلهها و نرخها عوض میشوند و یک ثابتِ قدیمی بیسروصدا حسابداری شما را خراب میکند. هر بار کارمزد ثبتشده را از خود صورتحساب بخوانید.
آیا این مطلب برای شما مفید بود؟
از بازخوردتان ممنونیم.