پرش به محتوای اصلی

2 پست با برچسب "QuickBooks"

مشاهده همه برچسب‌ها

تحلیل عمیق مدل‌های سودآوری پایلوت و نرم‌افزارهای حسابداری اصلی

· 30 دقیقه مطالعه
Mike Thrift
Mike Thrift
Marketing Manager

به عنوان مدیرعامل beancount.io، درک مدل‌های سودآوری کسب‌وکار رهبران صنعت مانند پایلوت و نرم‌افزارها/خدمات حسابداری اصلی همچون کوییک‌بوکس، زیرو، بنچ، و ویو برای تدوین استراتژی حیاتی است. این گزارش مدل‌های کسب‌وکار این شرکت‌ها را از جنبه‌هایی مانند روش‌های قیمت‌گذاری، انواع مشتریان، منابع درآمد، جایگاه‌یابی و تمایز محصول، و استراتژی‌های کانال و پوشش بازار تحلیل خواهد کرد. به طور ویژه مدل و مزایای پایلوت را بررسی خواهد کرد و در نهایت یک جدول مقایسه‌ای از ارائه‌دهندگان را ارائه خواهد داد.

پایلوت: مدل کسب‌وکار و مزایای منحصربه‌فرد

2025-05-30-analysis-of-major-accounting-software

مدل قیمت‌گذاری و جریان‌های درآمدی: پایلوت خدمات آنلاین دفترداری مالی را با استفاده از مدل اشتراک سالانه ارائه می‌دهد، با قیمت‌گذاری پلکانی بر اساس مقیاس هزینه‌های ماهانه شرکت مشتری و دامنه خدمات مورد نیاز. خدمات دفترداری پایه قبلاً از حدود ۴۹۹ دلار در ماه شروع می‌شد (برای کسب‌وکارهایی با هزینه‌های ماهانه کمتر از ۱۵,۰۰۰ دلار). (توجه: از سال ۲۰۲۵، پایلوت یک طرح پایه ارزان‌تر به نام "Essentials" را با شروع از ۱۹۹ دلار در ماه راه‌اندازی کرد تا نیازهای دفترداری اساسی کسب‌وکارهای خرد و کوچک را برآورده کند.) درآمد اصلی پایلوت از هزینه‌های اشتراک حاصل می‌شود، جایی که مشتریان برای خدمات دفترداری مستمر، هزینه ثابت ماهانه/سالانه پرداخت می‌کنند. علاوه بر این، پایلوت از طریق خدمات مالی ارزش‌افزوده، مانند خدمات اظهارنامه مالیات بر درآمد شرکت‌ها (صورت‌حساب سالانه) و خدمات مشاوره مدیر مالی ارشد (صورت‌حساب ماهانه)، درآمد اضافی کسب می‌کند. پایلوت مستقیماً عملکرد حقوق و دستمزد خود را ارائه نمی‌دهد، بلکه بر خدمات مالی اصلی مانند دفترداری و آماده‌سازی مالیات تمرکز دارد.

نوع مشتری و جایگاه‌یابی محصول: پایلوت که در سال ۲۰۱۷ تأسیس شد، بر ارائه خدمات به استارتاپ‌ها و شرکت‌های کوچک و متوسط (SMEs)، به‌ویژه استارتاپ‌های فناوری با رشد بالا تمرکز دارد. این شرکت خود را به‌عنوان یک "دفتر پشتیبانی مالی یکپارچه" برای کسب‌وکارهای کوچک معرفی می‌کند که نه تنها دفترداری حرفه‌ای، بلکه پشتیبانی مشاور مالی ارشد (CFO) و حتی خدمات تخصصی مانند درخواست‌های اعتبار مالیاتی تحقیق و توسعه را نیز ارائه می‌دهد. پایلوت از ابتدا بر استفاده از حسابداری تعهدی (به‌جای مبنای نقدی) تأکید دارد و تضمین می‌کند که شرکت‌های در حال رشد سریع می‌توانند در هر زمان بدون نیاز به تبدیل دشوار در آینده، الزامات سرمایه‌گذاران و انطباق را برآورده کنند. این امر پایلوت را به‌ویژه برای شرکت‌هایی با نیازهای تأمین مالی و پیچیدگی کسب‌وکار رو به افزایش مناسب می‌سازد. پایلوت همچنین از نرم‌افزار اختصاصی و هوش مصنوعی برای بهبود کارایی و دقت استفاده می‌کند. به‌عنوان مثال، در سال ۲۰۲۳، پایلوت ویژگی "Pilot GPT" را راه‌اندازی کرد که هوش مصنوعی مولد OpenAI را در فرآیند حسابداری ادغام می‌کند تا دقت دفترداری را افزایش داده و بینش‌های مالی عمیق‌تری ارائه دهد. پایلوت اظهار می‌دارد که با ترکیب نرم‌افزار هوش مصنوعی با یک تیم حسابداری باتجربه، به بیش از ۱,۷۰۰ مشتری با رشد سریع خدمات می‌دهد و قابلیت‌های تحلیل مالی "در سطح شرکت‌های بزرگ" را به شرکت‌های کوچک می‌بخشد. این مدل "یکپارچگی انسان و ماشین" نه تنها وظایف تکراری مانند ورود دستی داده‌ها را کاهش می‌دهد، بلکه به حسابداران اجازه می‌دهد زمان بیشتری را به مدیریت مالی سطح بالا و مشاوره اختصاص دهند.

مزایای متمایز: برخلاف نرم‌افزارهای حسابداری سنتی، پایلوت دفترداری کاملاً مدیریت‌شده را ارائه می‌دهد. کاربران نیازی به استفاده از نرم‌افزار حسابداری ندارند؛ در عوض، آن‌ها کل عملکرد دفترداری مالی را به تیم پایلوت برون‌سپاری می‌کنند. جنبه‌های منحصربه‌فرد پایلوت عبارتند از: ۱) اتوماسیون عمیق – استفاده از الگوریتم‌ها برای دسته‌بندی خودکار تراکنش‌ها، اتصال به داده‌های بانک و پلتفرم فروش و غیره، که به این ترتیب کارایی و دقت را بهبود می‌بخشد؛ ۲) خدمات تیم حرفه‌ای – هر مشتری یک تیم حسابداری اختصاصی مستقر در ایالات متحده برای پشتیبانی دارد که از طریق پیام‌رسانی درون‌برنامه‌ای یا ایمیل برای سؤالات و پاسخ‌های حرفه‌ای در دسترس است؛ ۳) گستره خدمات توسعه‌یافته – فراتر از دفترداری ماهانه، پایلوت می‌تواند خدمات سفارشی مانند اظهارنامه مالیاتی، آماده‌سازی حسابرسی صورت‌های مالی، و حتی مدیریت حقوق و دستمزد و حساب‌های پرداختنی را ارائه دهد (نیاز به طرح‌های سفارشی دارد)؛ ۴) سیستم متمرکز بر شرکت‌های در حال رشد – پایلوت از نیازهای پیچیده مانند چند دفتر کل، تلفیق چند نهادی، حسابداری موجودی کالا پشتیبانی می‌کند و خدمات مدیر مالی پاره‌وقت (Fractional CFO) را برای کمک به شرکت‌ها در برنامه‌ریزی مالی و پشتیبانی جذب سرمایه ارائه می‌دهد. در مقایسه با رقبای اصلی خود، پایلوت بیشتر شبیه یک "شرکت حسابداری مبتنی بر فناوری" است: امور مالی مشتریان را با استفاده از ابزارهای نرم‌افزاری پیشرفته و هوش مصنوعی، همراه با یک تیم اختصاصی از حسابداران، مدیریت می‌کند. این مدل به استارتاپ‌هایی که فاقد تیم‌های مالی داخلی هستند، امکان دسترسی به مدیریت مالی با کیفیت بالا را می‌دهد.

استراتژی کانال و پوشش بازار: پایلوت از مدل فروش مستقیم برای جذب مشتری استفاده می‌کند، با بازاریابی در جوامع استارتاپی و ایجاد شهرت در میان شتاب‌دهنده‌های استارتاپی و شرکت‌های سبد سرمایه‌گذاری خطرپذیر. همچنین از طریق بازاریابی محتوای آنلاین (مانند راهنماهای مالی استارتاپ‌ها، گزارش‌ها) سرنخ‌های مشتریان SME را تولید می‌کند. خدمات آن در حال حاضر عمدتاً شرکت‌های داخل ایالات متحده را پوشش می‌دهد، زیرا استانداردهای گزارشگری مالی و اظهارنامه‌های مالیاتی ارتباط نزدیکی با مقررات محلی دارند. پایلوت بر پشتیبانی ارائه‌شده توسط یک تیم مستقر در ایالات متحده تأکید دارد تا ارتباط روان و استانداردهای حرفه‌ای را تضمین کند. این مدل خدمات با کیفیت بالا همچنین به این معنی است که پایلوت بر بازار ایالات متحده (به‌ویژه مراکز استارتاپ‌های فناوری) تمرکز دارد و هنوز به‌طور گسترده در سطح جهانی گسترش نیافته است.

QuickBooks: مدل سودآوری و ویژگی‌ها

مدل قیمت‌گذاری و جریان‌های درآمدی: QuickBooks (متعلق به Intuit) بر اساس یک مدل کسب‌وکار معمول نرم‌افزار به عنوان سرویس (SaaS) فعالیت می‌کند، با هزینه‌های اشتراک تکرارشونده به عنوان منبع اصلی درآمد خود. QuickBooks Online چندین سطح اشتراک را بر اساس قابلیت‌ها (مانند Simple Start، Self-Employed، Small Business، Advanced) ارائه می‌دهد که به صورت ماهانه یا سالانه صورت‌حساب می‌شوند. تا سال 2023، QuickBooks Online بیش از 7 میلیون مشترک آنلاین در سراسر جهان داشت. علاوه بر اشتراک‌های نرم‌افزاری، Intuit با ارائه خدمات مالی ارزش‌افزوده تکمیلی به کاربران QuickBooks، از جمله خدمات حقوق و دستمزد و خدمات پردازش پرداخت، سود کسب می‌کند. به عنوان مثال، کاربران می‌توانند برای QuickBooks Payroll (هزینه ماهانه بر اساس تعداد کارمندان و سطح خدمات) هزینه اضافی بپردازند تا پردازش حقوق و دستمزد را انجام دهند. هنگامی که کاربران از طریق QuickBooks فاکتور صادر می‌کنند و پرداخت‌های آنلاین را می‌پذیرند، Intuit یک کمیسیون (کارمزد درصدی) از تراکنش‌های کارت اعتباری یا حواله بانکی دریافت می‌کند. علاوه بر این، Intuit از طریق برنامه‌های آموزشی و گواهینامه (مانند هزینه‌های آموزش گواهینامه ProAdvisor حسابداران) نیز درآمدزایی می‌کند. به طور کلی، QuickBooks دارای جریان‌های درآمدی متنوعی است: هزینه‌های اشتراک نرم‌افزار حسابداری پایه، پایه درآمد تکرارشونده را تشکیل می‌دهند که با کارمزدهای خدمات مالی و هزینه‌های ماژول‌های افزودنی تکمیل می‌شوند و مدل سودآوری اصلی آن را تشکیل می‌دهند.

نوع مشتری: QuickBooks طیف وسیعی از مشتریان را شامل می‌شود، از جمله صاحبان مشاغل انفرادی، فریلنسرها، کسب‌وکارهای کوچک و حتی برخی شرکت‌های متوسط و متخصصین حسابداری. QuickBooks Online سطوح مختلفی از نسخه‌های مشاغل انفرادی/خوداشتغالی تا نسخه‌های پیشرفته را ارائه می‌دهد که نیازهای دفترداری کسب‌وکارها را از عملیات یک‌نفره تا شرکت‌هایی با ده‌ها کارمند برآورده می‌کند. طبق تحلیل کسب‌وکار Intuit، کاربران اصلی QuickBooks به طور سنتی کسب‌وکارهای کوچک با 1-10 کارمند بوده‌اند. در سال‌های اخیر، برای پوشش مشتریان بزرگ‌تر، QuickBooks همچنین در حال بهبود ویژگی‌ها برای خدمت‌رسانی به کسب‌وکارهای متوسط پیچیده‌تر (مانند ارائه کنترل‌های دقیق‌تر مجوز، گزارش‌دهی چند نهادی و سایر عملکردهای پیشرفته) بوده است. حسابداران و شرکت‌های دفترداری نیز یک گروه کاربری قابل توجه برای QuickBooks هستند—Intuit متخصصین حسابداری را از طریق برنامه ProAdvisor جذب می‌کند تا QuickBooks را برای مشتریان خود استفاده کنند، و از این طریق به طور غیرمستقیم دسترسی QuickBooks را در میان کسب‌وکارهای کوچک گسترش می‌دهد.

موقعیت‌یابی محصول و تمایز: به عنوان یکی از بالغ‌ترین نرم‌افزارهای حسابداری در صنعت، QuickBooks به عنوان یک ابزار مالی همه‌کاره و جامع موقعیت‌یابی شده است. مزایای آن عبارتند از: 1) قابلیت‌های غنی – شامل ماژول‌هایی برای دسته‌بندی درآمد و هزینه، گزارش‌دهی، مدیریت جریان نقدی کسب‌وکار، حساب‌های دریافتنی/پرداختنی، موجودی، پروژه‌ها، کمک به تهیه مالیات و غیره؛ 2) اکوسیستم توسعه‌یافته – دارای یک بازار گسترده برنامه‌های کاربردی شخص ثالث و ادغام‌ها است، با بیش از 1000 برنامه قابل اتصال به داده‌های QuickBooks (مانند سیستم‌های POS، پلتفرم‌های تجارت الکترونیک، ابزارهای گزارش هزینه و غیره)، که به کاربران امکان می‌دهد در صورت نیاز قابلیت‌ها را اضافه کنند؛ 3) سهم بازار بالا – QuickBooks موقعیت غالبی در بازار نرم‌افزار حسابداری کسب‌وکارهای کوچک در ایالات متحده دارد که از اعتماد به برند و پایگاه کاربری بزرگ بهره‌مند است؛ 4) خدمات گسترده – Intuit خدماتی مانند حقوق و دستمزد و پرداخت‌ها را به کاربران QuickBooks ارائه می‌دهد و یک راهکار مالی یکپارچه برای کسب‌وکارهای کوچک ایجاد می‌کند. این همچنین به QuickBooks پتانسیل متوسط درآمد به ازای هر کاربر (ARPU) بالاتری نسبت به رقبا می‌دهد (کاربران ممکن است خدمات مالی آن را علاوه بر نرم‌افزار خریداری کنند). همچنین قابل توجه است که QuickBooks عمدتاً ابزارهای نرم‌افزاری ارائه می‌دهد و مستقیماً خدمات دفترداری انسانی ارائه نمی‌دهد. با این حال، Intuit اخیراً دفترداری آنلاین "QuickBooks Live" را به عنوان یک خدمات ارزش‌افزوده راه‌اندازی کرده است، که در آن دفترداران حرفه‌ای در پلتفرم Intuit خدمات تطبیق ماهانه را برای مشترکین QuickBooks ارائه می‌دهند، با هزینه‌ای حدود 300 تا 700 دلار در ماه (بر اساس مقیاس کسب‌وکار). این نشان می‌دهد که QuickBooks در حال تقویت سیستم محصول خود با گنجاندن خدمات است، اما به طور کلی، موقعیت‌یابی اصلی آن همچنان توانمندسازی کاربران یا حسابداران آن‌ها برای انجام دفترداری خودشان با استفاده از نرم‌افزار است. این اساساً متفاوت از خدمات کاملاً مدیریت‌شده مانند Pilot و Bench است.

استراتژی کانال و پوشش بازار: کانال‌های فروش QuickBooks شامل فروش مستقیم آنلاین و شرکا هستند: از یک سو، Intuit اشتراک‌ها را مستقیماً از طریق وب‌سایت رسمی خود به کسب‌وکارهای کوچک می‌فروشد و اغلب تخفیف‌های آزمایشی (مانند 50% تخفیف برای سه ماه اول برای کاربران جدید) برای جذب مشتریان ارائه می‌دهد. از سوی دیگر، Intuit یک شبکه گسترده شرکای حسابدار (ProAdvisor) ایجاد کرده است که حسابداران را تشویق می‌کند تا QuickBooks را به مشتریان خود توصیه یا بازفروش کنند و به آن‌ها تخفیف یا کمیسیون ارائه می‌دهد. این استراتژی QuickBooks را به سیستم حسابداری پیش‌فرض کسب‌وکارهای کوچک برای بسیاری از شرکت‌های حسابداری تبدیل کرده است. از نظر پوشش بازار، شرکت مادر QuickBooks، Intuit، ریشه در ایالات متحده دارد اما نسخه‌های بومی‌سازی شده را در چندین کشور (مانند کانادا، انگلستان، استرالیا) نیز راه‌اندازی کرده است. تا کنون، QuickBooks در بیش از 100 کشور در سراسر جهان کاربر دارد، با بیش از 7 میلیون کاربر آنلاین جهانی. با این حال، بزرگترین بازار آن همچنان آمریکای شمالی است، در حالی که در سایر مناطق با رقابت Xero و نرم‌افزارهای محلی روبرو است. Intuit همچنین از طریق خریدها یا سرمایه‌گذاری‌ها وارد بازارهای جدید می‌شود، اما به طور کلی، نفوذ برند QuickBooks در کشورهای انگلیسی‌زبان متمرکز است و از طریق بازاریابی آنلاین، قابلیت مشاهده در موتورهای جستجو و ارجاعات شرکا به نفوذ در بازار دست می‌یابد.

Xero: مدل سودآوری و ویژگی‌ها

مدل قیمت‌گذاری و جریان‌های درآمدی: Xero، یک شرکت نرم‌افزار حسابداری ابری از نیوزلند، از مدل SaaS کاملاً مبتنی بر اشتراک استفاده می‌کند. Xero عمدتاً از طریق دریافت هزینه‌های اشتراک نرم‌افزار از مشتریان کسب‌وکارهای کوچک سود کسب می‌کند. Xero طرح‌های اشتراک متنوعی را بر اساس مقیاس‌ها و نیازهای مختلف (مانند سطوح Early، Growing، Established در بازار ایالات متحده، و Starter، Standard، Premium در سایر کشورها) ارائه می‌دهد، که با افزایش تدریجی قابلیت‌ها و حجم کسب‌وکار قابل پردازش، و افزایش ماهانه هزینه‌های اشتراک همراه است. این استراتژی قیمت‌گذاری طبقه‌بندی شده بر اساس قابلیت‌ها، درآمد پایدار و قابل پیش‌بینی تکرارشونده‌ای را برای Xero فراهم می‌کند. تا سال ۲۰۲۳، Xero بیش از ۴.۴ میلیون مشترک پولی در بیش از ۱۸۰ کشور در سراسر جهان داشت. علاوه بر اشتراک‌های اصلی حسابداری، Xero از طریق خدمات ارزش افزوده نیز درآمد کسب می‌کند. به عنوان مثال، Xero ماژول مدیریت حقوق و دستمزد خود را (به عنوان یک افزونه پولی یا گنجانده شده در طرح‌های سطح بالاتر در برخی کشورها) ارائه می‌دهد، و همچنین ماژول‌های عملکردی افزونه مدیریت هزینه‌ها و مدیریت پروژه را، که یا از طریق طرح‌های اشتراک سطح بالاتر یا به عنوان اشتراک‌های افزونه جداگانه شارژ می‌شوند. علاوه بر این، Xero دارای یک بازار گسترده برنامه‌های کاربردی شخص ثالث است که به مشتریان امکان می‌دهد تا برنامه‌های کاربردی شخص ثالث یکپارچه را مشترک شوند؛ از سال ۲۰۲۱، Xero ۱۵٪ «سهم درآمد ارجاعی» از اشتراک‌های برنامه‌های شخص ثالث که از طریق فروشگاه برنامه آن سفارش داده می‌شوند، دریافت می‌کند. این بدان معناست که Xero می‌تواند هنگام پرداخت کاربران برای برخی برنامه‌های یکپارچه، کمیسیون مشخصی کسب کند. بنابراین، منابع درآمد Xero، علاوه بر هزینه‌های اشتراک، شامل هزینه‌های افزونه ویژگی‌های پریمیوم و کمیسیون‌های خدمات شخص ثالث نیز می‌شود که ترکیبی متنوع را تشکیل می‌دهد.

نوع مشتری: مشتریان Xero عمدتاً کسب‌وکارهای کوچک هستند، شامل استارتاپ‌ها، بازرگانان در صنایع مختلف، و شرکت‌های حسابداری/دفترداری که به مشتریان کسب‌وکارهای کوچک خدمات می‌دهند. Xero در بازار اقیانوسیه سرچشمه گرفت و تعداد زیادی از کاربران کسب‌وکارهای کوچک را در استرالیا و نیوزلند جمع‌آوری کرد و به سرعت از طریق کانال‌های حسابداران گسترش یافت. Xero بر روابط نزدیک خود با شرکای حسابداری تأکید می‌کند؛ بسیاری از شرکت‌های حسابداری Xero را به مشتریان خود توصیه می‌کنند و از طریق برنامه شریک Xero تخفیف دریافت می‌کنند، بدین ترتیب هزینه پذیرش را برای مشتریان کاهش می‌دهند. این امر Xero را از نظر مشتریان هدف (هر دو به طور گسترده به کسب‌وکارهای خرد/کوچک و نمایندگان مالی خدمات می‌دهند) مشابه QuickBooks می‌کند، اما با تمرکز منطقه‌ای: Xero سهم بازار بسیار بالایی در استرالیا/نیوزلند بومی خود دارد، رشد قابل توجهی در بریتانیا و اروپا به دست آورده است، و در تلاش است تا سهم بازار QuickBooks را در آمریکای شمالی جبران کند. یک مشتری معمولی Xero ممکن است یک شرکت کوچک با ۱-۵۰ کارمند باشد که به مدیریت مالی حرفه‌ای نیاز دارد اما نمی‌خواهد از سیستم‌های سازمانی پیچیده و گران‌قیمت استفاده کند. Xero همچنین طرح‌های ارزان‌قیمت برای شرکت‌های خرد (مانند طرح‌های Starter/Early) ارائه می‌دهد، که استفاده از یک ابزار رسمی دفترداری دوطرفه را با هزینه ماهانه کم برای کسب‌وکارهای انفرادی راحت می‌کند.

جایگاه‌یابی محصول و تمایز: Xero به عنوان یک پلتفرم حسابداری جهانی «متولد شده در ابر» جایگاه‌بندی شده است. تمایز آن در موارد زیر منعکس می‌شود: ۱) تجربه کاربری عالی – رابط کاربری Xero کاربرپسند، از نظر بصری جذاب و شهودی است (با ترویج فلسفه «کسب‌وکار زیبا» خود)، که شروع کار را برای صاحبان کسب‌وکارهای کوچک ناآشنا با حسابداری نسبتاً آسان می‌کند، و این یکی از دلایل محبوبیت سریع آن در بازارهای بین‌المللی در اوایل بود؛ ۲) همکاری ابری – Xero بر توانمندسازی صاحبان کسب‌وکارهای کوچک و حسابداران خارجی آن‌ها برای مشاهده دفاتر کل با هم در ابر، و دستیابی به همکاری بی‌وقفه تأکید می‌کند؛ ۳) یکپارچه‌سازی باز – Xero دارای API باز و یک اکوسیستم برنامه گسترده است که بیش از ۱۰۰۰ رابط برنامه شخص ثالث را ارائه می‌دهد، به عنوان مثال، یکپارچه‌سازی با تجارت الکترونیک، POS، CRM، سیستم‌های پرداخت و غیره. این استراتژی باز به کسب‌وکارهای کوچک امکان می‌دهد تا Xero را به عنوان یک مرکز مالی اصلی استفاده کنند و فرآیندهای کسب‌وکار سفارشی را گسترش دهند؛ ۴) نوآوری مستمر – Xero به طور مداوم ویژگی‌های ابری خود را ماهانه به‌روزرسانی می‌کند و قابلیت‌هایی را بر اساس نیازهای مشتری و صنعت اضافه می‌کند. به عنوان مثال، Xero به طور مداوم بومی‌سازی خود را برای انطباق با تقاضاهای بازار در زمینه‌هایی مانند مطابقت با سیستم‌های مالیاتی کشورهای مختلف، الزامات فاکتوردهی، و حسابداری چند ارزی بهبود می‌بخشد. تفاوت استراتژیک بین Xero و QuickBooks این است که Xero به اندازه Intuit خدمات مالی افزونه اختصاصی ندارد؛ در عوض، بیشتر بر عملکرد نرم‌افزاری خالص و یکپارچه‌سازی با شرکا تمرکز می‌کند. Xero تیم خدمات دفترداری خود را راه‌اندازی نکرده است (برخلاف Pilot/Bench) اما قاطعانه یک ارائه‌دهنده پلتفرم‌های نرم‌افزار حسابداری است که حسابداران و صاحبان کسب‌وکارهای کوچک را برای استفاده از نرم‌افزار توانمند می‌سازد. این جایگاه‌بندی باعث شده است که از سوی بسیاری از شرکت‌های حسابداری در سراسر جهان به رسمیت شناخته شود. در مجموع، Xero خود را با قابلیت استفاده بالا و قابلیت گسترش جهانی متمایز می‌کند و با QuickBooks رقابت تنگاتنگی دارد.

استراتژی کانال و پوشش بازار: Xero از یک استراتژی بازار دو وجهی استفاده می‌کند: از یک سو، کسب‌وکارهای کوچک کاربر نهایی را مستقیماً از طریق بازاریابی آنلاین و آزمایش‌های رایگان جذب می‌کند؛ از سوی دیگر، شبکه‌های حسابداران و دفترداران را به شدت پرورش می‌دهد. Xero یک برنامه رسمی شریک Xero ایجاد کرده است که از شرکت‌های حسابداری و دفترداری برای تبدیل شدن به مشاوران معتبر و پیاده‌سازی Xero برای مشتریان خود دعوت می‌کند؛ این شرکا بر اساس تعداد مشتریان پولی که جذب می‌کنند، تخفیف و بازپرداخت دریافت می‌کنند و همچنین به عنوان مشاوران توصیه شده در وب‌سایت رسمی Xero فهرست می‌شوند. این مدل به Xero کمک می‌کند تا به سرعت اعتماد و تأیید را در بازارهای جدید ایجاد کند. از نظر پوشش منطقه‌ای، Xero در نیوزلند شروع به کار کرد و در حال حاضر دفاتری در چندین منطقه اصلی جهانی از جمله استرالیا، بریتانیا، ایالات متحده، کانادا و بخش‌هایی از آسیا دارد. Xero جایگاه پیشرویی در حسابداری ابری کسب‌وکارهای کوچک در استرالیا و نیوزلند دارد و روند رشد سریعی را در بازار بریتانیا حفظ می‌کند (با بهره‌مندی از ابتکار «دیجیتالی کردن مالیات» بریتانیا). در ایالات متحده و کانادا، اگرچه سهم بازار Xero هنوز از QuickBooks عقب‌تر است، اما پایگاه کاربری قابل توجهی را جمع‌آوری کرده و به سرمایه‌گذاری در گسترش ادامه می‌دهد. علاوه بر این، Xero از طریق همکاری با بانک‌ها (مانند شراکت با RBC در کانادا برای ارائه نسخه مشترک برند) و سایر کانال‌ها به مشتریان کسب‌وکارهای کوچک بیشتری دسترسی پیدا می‌کند. بنابراین، استراتژی پوشش بازار Xero بر بین‌المللی‌سازی و رشد مبتنی بر شریک تأکید دارد، با QuickBooks در کشورهای انگلیسی‌زبان رقابت می‌کند و بازارهایی را در سایر مناطق که هنوز تحت سلطه نرم‌افزارهای محلی قوی نیستند، کاوش می‌کند.

بنچ: مدل سود و ویژگی‌ها

مدل قیمت‌گذاری و جریان‌های درآمدی: بنچ (Bench) شرکتی است که خدمات برون‌سپاری حسابداری آنلاین را ارائه می‌دهد. دفتر مرکزی آن در کانادا قرار دارد، اما عمدتاً به کسب‌وکارهای کوچک آمریکای شمالی خدمات می‌دهد. مدل کسب‌وکار بنچ مشابه پایلوت (Pilot) است و بر اساس حق اشتراک عمل می‌کند: مشتریان یک هزینه ماهانه ثابت پرداخت می‌کنند و بنچ حسابداران حرفه‌ای را برای سازماندهی ماهانه حساب‌های آن‌ها و ارائه صورت‌های مالی اختصاص می‌دهد. قیمت‌گذاری بنچ نسبتاً مقرون‌به‌صرفه است و دو طرح اصلی برای کسب‌وکارهای کوچک دارد: خدمات پایه حسابداری از حدود ۲۹۹ دلار در ماه شروع می‌شود و بسته‌ای شامل خدمات سالانه اظهارنامه مالیاتی تقریباً ۴۹۹ دلار در ماه قیمت دارد. اطلاعات به‌روز شده نشان می‌دهد که قیمت‌های اشتراک بنچ در سال ۲۰۲۴ بین ۲۴۹ تا ۳۴۹ دلار در ماه متغیر است، بسته به اینکه خدماتی مانند اظهارنامه مالیاتی شامل شود یا خیر. منبع اصلی درآمد بنچ این هزینه‌های اشتراک ماهانه خدمات است که بر اساس طرح انتخابی مشتری، ماهانه یا سالانه جمع‌آوری می‌شود. علاوه بر این، بنچ برخی خدمات با هزینه یک‌بار مصرف را نیز ارائه می‌دهد، مانند حسابداری معوقه (برای کسب‌وکارهایی که ماه‌ها یا حتی سال‌ها از حسابداری خود عقب هستند، شامل ورود و پاکسازی داده‌های تاریخی) و مشاوره حل و فصل مسائل مالیاتی، که پروژه‌های ارزش‌افزوده و بر اساس تقاضا هستند. در مجموع، درآمد بنچ عمدتاً حول "اشتراک‌های پایه حسابداری + خدمات ارزش‌افزوده اظهارنامه مالیاتی" می‌چرخد.

نوع مشتری: بنچ صاحبان کسب‌وکارهای کوچک، استارتاپ‌ها و فریلنسرهایی را هدف قرار می‌دهد که فاقد یک دپارتمان حسابداری اختصاصی هستند. مشتریان هدف آن‌ها معمولاً در مقیاس کوچک‌تر، با کسب‌وکارهای نسبتاً ساده، اما خواهان مدیریت حرفه‌ای امور مالی خود هستند. خود بنچ حسابداری را بر اساس مبنای نقدی تعدیل‌شده ارائه می‌دهد که عمدتاً برای مدل‌های کسب‌وکار کوچک مناسب است. بسیاری از مشتریان بنچ کارآفرینانی با درآمدهای سالانه و حجم تراکنش‌های متوسط هستند، مانند صاحبان فروشگاه‌های کوچک تجارت الکترونیک، مشاوران، نمایندگان و اپراتورهای رستوران، که بنچ را برای صرفه‌جویی در زمان حسابداری انتخاب می‌کنند. بنچ در محافل استارتاپی کمتر از پایلوت شناخته شده است، اما سهم بازار مشخصی در بخش کسب‌وکارهای کوچک سنتی دارد—به‌ویژه در میان کسب‌وکارهای خرد که نیازی به حسابداری مالی پیچیده ندارند و فقط به رعایت اصول اولیه مالیاتی نیاز دارند. توجه به این نکته مهم است که مشتریان معمولی که بنچ به آن‌ها خدمات می‌دهد اغلب نیازهای مالی نسبتاً پایه‌ای دارند: برای مثال، شامل صورت‌های مالی تلفیقی چند شعبه‌ای یا چند شرکت فرعی، یا الزامات حسابداری پیچیده موجودی کالا یا درآمد تعهدی SaaS نمی‌شوند. بنابراین، بنچ خدمات خود را بر "رها کردن صاحبان کسب‌وکارهای بسیار کوچک از بار مالی" متمرکز می‌کند.

جایگاه‌یابی محصول و تمایز: بنچ نه به‌عنوان یک نرم‌افزار سنتی، بلکه به‌عنوان یک راهکار "نرم‌افزار + خدمات انسانی" توصیف می‌شود. ویژگی‌های جایگاه‌یابی آن به شرح زیر است: ۱) خدمات کاملاً مدیریت‌شده – مانند پایلوت، بنچ یک تیم از حسابداران انسانی را برای رسیدگی به حسابداری مشتریان فراهم می‌کند، نه فقط فروش نرم‌افزار. پس از اینکه مشتریان رسیدها را آپلود کرده و حساب‌های بانکی را از طریق رابط وب یا اپلیکیشن بنچ متصل می‌کنند، تیم بنچ تراکنش‌ها را دسته‌بندی می‌کند، ماهانه تطبیق بانکی را تکمیل می‌کند و در پایان ماه صورت سود و زیان، ترازنامه و غیره را صادر می‌کند؛ ۲) پلتفرم اختصاصی – بنچ پلتفرم حسابداری خود را توسعه داده است که مشتریان می‌توانند گزارش‌های مالی را مشاهده کرده و ارتباط برقرار کنند. با این حال، بنچ از نرم‌افزارهای عمومی استفاده نمی‌کند (مانند QuickBooks)، به این معنی که اگر مشتریان در آینده بنچ را ترک کنند، داده‌های مالی آن‌ها برای مهاجرت به سیستم‌های دیگر نیاز به تبدیل دارند؛ ۳) خدمات مالیاتی یکپارچه – بنچ کمک در اظهارنامه مالیاتی را به‌عنوان یک گزینه ارائه می‌دهد (هماهنگی با حسابداران رسمی همکار برای تکمیل اظهارنامه‌های مالیاتی)، که مشتریان می‌توانند آن را به‌صورت بسته‌ای انتخاب کنند و آن را به یک سرویس یکپارچه "حسابداری + اظهارنامه مالیاتی" تبدیل کنند؛ ۴) رقابت‌پذیری قیمت – در مقایسه با پایلوت، قیمت‌گذاری بنچ به‌طور قابل توجهی پایین‌تر است و آن را به‌عنوان یک راهکار مقرون‌به‌صرفه جایگاه‌بندی می‌کند. برای مثال، بنچ یک ماه آزمایشی رایگان را برای کاهش مانع ورود مشتریان ارائه می‌دهد و هزینه کلی آن برای کسب‌وکارهای خرد با بودجه محدود جذاب‌تر است. محدودیت بنچ در عمق خدمات کمتر آن نهفته است: این شرکت مشاوره استراتژیک مدیر مالی (CFO) ارائه نمی‌دهد، از سناریوهای مالی پیچیده پشتیبانی نمی‌کند، و برای استارتاپ‌های در حال رشد سریع و جذب سرمایه، حسابداری مبنای نقدی بنچ ممکن است الزامات گزارشگری مالی سخت‌گیرانه را برآورده نکند. بنابراین، خود بنچ اذعان دارد که بر خدمات‌رسانی به "کسب‌وکارهای بسیار کوچک" تمرکز دارد، و هنگامی که کسب‌وکار مشتریان پیچیده‌تر می‌شود، ممکن است نیاز به ارتقا به حسابداری مبنای تعهدی و خدمات پیشرفته‌تر داشته باشند. تفاوت اصلی بین بنچ و پایلوت در مشتریان هدف آن‌ها نهفته است—بنچ بیشتر شبیه یک برون‌سپار حسابداری مقرون‌به‌صرفه برای کسب‌وکارهای خرد است که بر "با انجام حساب‌های شما، در وقت و تلاش شما صرفه‌جویی می‌کند" تأکید دارد، در حالی که پایلوت شرکت‌های رشدگرا با الزامات مالی بالاتر را هدف قرار می‌دهد.

استراتژی کانال و پوشش بازار: بنچ عمدتاً از طریق بازاریابی آنلاین مشتری جذب می‌کند. بنچ با هدف قرار دادن صاحبان کسب‌وکارهای کوچک، در موتورهای جستجو و رسانه‌های اجتماعی تبلیغ می‌کند و یک وبلاگ محتوایی حاوی دانش مالی و مالیاتی را برای جذب سرنخ‌ها اداره می‌کند. در زمینه کانال‌های دهان‌به‌دهان، توصیه‌هایی برای بنچ را می‌توان در برخی جوامع صاحبان کسب‌وکارهای کوچک و انجمن‌های استارتاپی یافت. علاوه بر این، بنچ با برخی پلتفرم‌های خدمات کسب‌وکارهای کوچک برای ارجاع همکاری می‌کند، مانند پلتفرم‌های تجارت الکترونیک یا بانک‌های تجاری، که ممکن است بنچ را به‌عنوان یک گزینه حسابداری توصیه کنند. پوشش خدمات بنچ در حال حاضر عمدتاً در ایالات متحده است و مشتریان کانادایی را نیز می‌پذیرد (بنچ در ونکوور، کانادا تأسیس شد). بنچ به‌عنوان یک استارتاپ، چندین دور تأمین مالی را برای گسترش پایگاه کاربران خود پشت سر گذاشت، اما در سال ۲۰۲۳ با مشکلات عملیاتی مواجه شد و توسط یک شرکت مالیاتی و مالی آمریکایی (که با نام Employer.com از آن یاد می‌شود) خریداری و ادغام شد. این نشان می‌دهد که گسترش آن عمدتاً بر بازار آمریکای شمالی متمرکز بوده و نفوذ عمیقی به کشورهای دیگر نداشته است. مدل کسب‌وکار بنچ به‌شدت به عملیات مقیاس‌پذیر و کارایی خدمات انسانی متکی است، که سرعت گسترش آن را نسبت به شرکت‌های نرم‌افزاری کندتر می‌کند، اما با این حال از طریق مدل فروش مستقیم آنلاین توانست اعتماد هزاران مشتری کسب‌وکار کوچک را جلب کند.

Wave: مدل سودآوری و ویژگی‌ها

مدل قیمت‌گذاری و جریان‌های درآمدی: Wave یک نرم‌افزار حسابداری ابری رایگان شناخته‌شده است که مدت‌هاست بر اساس مدل فریمیوم فعالیت می‌کند. ابزارهای اصلی حسابداری، صورتحساب‌دهی و مدیریت رسید به صورت کاملاً رایگان و بدون محدودیت عملکردی یا زمانی در اختیار کاربران قرار می‌گیرد. Wave به خودی خود هزینه‌ای بابت اشتراک نرم‌افزار از کاربران دریافت نمی‌کند، بلکه از طریق هزینه‌های خدمات مالی مرتبط سود می‌برد. به طور خاص، منابع اصلی درآمد Wave دو مورد است: اول، کارمزدهای کمیسیون از پردازش پرداخت (پرداخت‌های Wave). کاربران کسب‌وکارهای کوچک می‌توانند از طریق Wave برای مشتریان خود صورتحساب صادر کرده و پرداخت‌های آنلاین را دریافت کنند. Wave قابلیت‌های پرداخت با کارت اعتباری و انتقال بانکی را یکپارچه کرده و درصدی از مبلغ تراکنش را دریافت می‌کند (به عنوان مثال، حدود ۲.۹٪ + ۳۰ سنت برای پرداخت‌های کارت اعتباری). این درآمد حاصل از کارمزد پردازش پرداخت، پس از کسر هزینه‌های پرداختی به درگاه‌های پرداخت (مانند Stripe)، عمدتاً به درآمد Wave تبدیل می‌شود. دوم، هزینه‌های اشتراک برای خدمات حقوق و دستمزد (حقوق و دستمزد Wave). Wave ابزارهای حقوق و دستمزد را برای کاربران آمریکایی و کانادایی ارائه می‌دهد که شامل یک هزینه پایه ماهانه (حدود ۲۰ تا ۳۵ دلار آمریکا) به علاوه هزینه‌ای به ازای هر کارمند است. مشتریانی که از حسابداری رایگان Wave استفاده می‌کنند و تصمیم به پردازش حقوق کارمندان خود در آن می‌گیرند، باید هزینه اشتراک این سرویس را پرداخت کنند. در گذشته، Wave با نمایش تبلیغات در رابط کاربری نرم‌افزار نیز درآمد کسب می‌کرد، اما از سال ۲۰۱۷ به طور کامل تبلیغات را حذف کرد تا بر درآمدزایی از طریق خدمات تمرکز کند. لازم به ذکر است که Wave در سال ۲۰۱۹ توسط غول مالیاتی آمریکا H&R Block به مبلغ ۵۳۷ میلیون دلار خریداری شد و از این طریق، شروع به ارائه خدمات ارزش افزوده مانند مشاوره مالیاتی (به عنوان مثال، مشاوره‌های پولی با حسابداران برای راهنمایی مالیاتی) کرد. تا سال ۲۰۲۲، Wave تحت استراتژی کاملاً رایگان خود، از طریق خدمات مالی ذکر شده، به درآمدهای سالانه تقریباً ۱۰۰ میلیون دلار دست یافته بود که نشان‌دهنده پایگاه کاربری و حجم تراکنش قابل توجهی است.

تنظیم مدل کسب‌وکار: مهم است که توجه داشته باشیم Wave استراتژی قیمت‌گذاری خود را در اوایل سال ۲۰۲۴ تنظیم کرد. پس از سال‌ها کاملاً رایگان بودن، Wave از اضافه شدن یک سطح اشتراکی پولی خبر داد – در حالی که همچنان یک نسخه رایگان دائمی (استارتر) را ارائه می‌دهد، یک طرح پولی پرو را با قیمت ۲۰ دلار کانادا (تقریباً ۱۵ دلار آمریکا) در ماه معرفی کرد که گزینه‌ای برای کاربرانی است که به ویژگی‌های پیشرفته‌تر نیاز دارند. نسخه پولی برخی قابلیت‌های پیشرفته یا پشتیبانی اولویت‌دار را باز می‌کند، در حالی که نسخه رایگان عملکردهای اصلی حسابداری و صورتحساب‌دهی را حفظ می‌کند. در همین حال، کاربران هر دو نسخه همچنان می‌توانند خدمات افزودنی مانند حقوق و دستمزد و پرداخت‌ها را بر اساس تقاضا خریداری کنند. این اقدام با هدف فراهم کردن یک جریان درآمدی پایدارتر برای Wave است تا از سرمایه‌گذاری مداوم در محصول حمایت کند. مدیریت Wave اظهار داشت که آنها همیشه یک سطح رایگان را برای جذب کسب‌وکارهای خرد نوپا حفظ خواهند کرد، اما زمانی که کسب‌وکارهای کاربران رشد کرده و نیازهای پیچیده‌تری داشته باشند، می‌توانند به یک طرح پولی ارتقا دهند، و بدین ترتیب Wave خود را از "جذب ترافیک" به "رشد درآمدزایی" تبدیل کند.

نوع مشتری: Wave کسب‌وکارهای خرد، کارآفرینان انفرادی و فریلنسرها را هدف قرار می‌دهد که به قیمت بسیار حساس هستند. یک کاربر معمولی Wave ممکن است یک کسب‌وکار بسیار کوچک باشد (کمتر از ۱۰ کارمند، یا حتی فقط خود مالک که چندین نقش را بر عهده دارد). آنها اغلب فاقد دانش تخصصی حسابداری هستند و Wave را به دلیل رایگان و آسان برای استفاده بودن انتخاب می‌کنند. رابط کاربری ساده و کاربرپسند Wave و عملکردهای اصلی آن برای برآورده کردن نیازهای دفترداری و آماده‌سازی مالیاتی این عملیات‌های کوچک کافی است. برای صاحبان فروشگاه‌های آنلاین نوپا، طراحان فریلنسر و مشاوران انفرادی، Wave جایگزینی بدون هزینه برای حسابداری دستی ارائه می‌دهد و بدین ترتیب میلیون‌ها کاربر از این دست را جذب کرده است. البته، زمانی که این کسب‌وکارها بزرگ‌تر و پیچیده‌تر می‌شوند، ممکن است به نرم‌افزارهای پولی جامع‌تر مانند QuickBooks یا Xero مهاجرت کنند. اما Wave یک بازار دم بلند عظیم را به خود اختصاص داده است: کارآفرینان خردی که مایل یا قادر به پرداخت هزینه نرم‌افزار نیستند. Wave از طریق هزینه‌های خدمات درآمدزایی می‌کند و جریان نقدی این کاربران رایگان را به درآمد تبدیل می‌کند (به عنوان مثال، اگر پرداخت‌های صورتحساب از طریق کانال پرداخت آن انجام شود، کارمزدهای پردازش را تولید می‌کند). بنابراین، مشتریان آن شامل هم کاربران کاملاً رایگان (که فقط از عملکردهای اصلی استفاده می‌کنند) و هم کاربران خدمات پولی (که از عملکردهای پرداخت و حقوق و دستمزد استفاده می‌کنند) هستند. طرح پرو جدید Wave کاربران موجودی را هدف قرار می‌دهد که به ویژگی‌های بیشتری نیاز دارند، و گزارش‌های پیشرفته مطالبات معوق، پشتیبانی تلفنی و سایر ارزش‌های اضافی را با هزینه ماهانه پایین ارائه می‌دهد و پایگاه مشتریان خود را بیشتر تقسیم‌بندی می‌کند.

موقعیت‌یابی محصول و تمایز: موقعیت‌یابی Wave را می‌توان به صورت "بدون مانع، کوچک اما جامع" خلاصه کرد: ۱) صفر هزینه – این نرم‌افزار مانع را برای کسب‌وکارهای کوچک جهت استفاده از ابزارهای حرفه‌ای دفترداری به طور قابل توجهی کاهش می‌دهد، با عملکردهای اصلی نامحدود و رایگان، به کاربران امکان می‌دهد تراکنش‌ها را ثبت کرده و گزارش‌های مالی را بدون محدودیت تولید کنند. این امر در میان همتایان بسیار نادر است و متمایزترین نقطه Wave است؛ ۲) ساده و آسان برای استفاده – Wave ویژگی‌های پیچیده در سطح سازمانی را حذف کرده و یک رابط کاربری تمیز و بصری ارائه می‌دهد. افراد مبتدی با تقریباً هیچ پیش‌زمینه حسابداری می‌توانند صورتحساب‌دهی و دفترداری را شروع کنند. این طراحی مینیمالیستی مورد علاقه بسیاری از کاربران بدون پیش‌زمینه مالی قرار گرفته است؛ ۳) خدمات مالی یکپارچه – Wave فرآیندهای مالی مانند جمع‌آوری پرداخت و حقوق و دستمزد را به طور یکپارچه در نرم‌افزار جاسازی می‌کند و به کاربران امکان می‌دهد کل جریان را از صورتحساب‌دهی تا وصول و حقوق و دستمزد را در یک پلتفرم واحد تکمیل کنند. از نظر تجربه کاربری، این مزیت "یکپارچه" آن است، و این فرآیندها همچنین جایی هستند که درآمد Wave در آن نهفته است – جاسازی کارمزدها در خدمات؛ ۴) محدودیت‌ها – Wave بر نیازهای کسب‌وکارهای خرد آمریکای شمالی تمرکز دارد، و پردازش مالیاتی نرم‌افزار آن عمدتاً از ایالات متحده و کانادا پشتیبانی می‌کند (به عنوان مثال، فقط می‌تواند محاسبات مالیات بر فروش را برای کانادا و ایالات متحده به طور خودکار انجام دهد). برای کشورهای خارج از این محدوده، انطباق سیستم مالیاتی Wave ناقص است. علاوه بر این، Wave تنظیمات پیشرفته برای حسابداری دوطرفه را ارائه نمی‌دهد (اگرچه بک‌اند Wave دوطرفه است، رابط کاربری مفاهیم بدهکار/بستانکار را کم‌اهمیت جلوه می‌دهد)، و فاقد پشتیبانی برای سناریوهای پیچیده مانند مجوزهای چندکاربره، مدیریت موجودی و حسابداری پروژه است. این امر باعث می‌شود که نتواند نیازهای شرکت‌های بزرگ‌تر را برآورده کند، اما اینها الزامات حیاتی برای کاربران هدف آن نیستند. به طور خلاصه، Wave خود را از طریق رایگان + سهولت استفاده متمایز می‌کند و از طریق خدمات ارزش افزوده درآمدزایی می‌کند. این مدل در جذب تعداد زیادی از کاربران کوچک بسیار موفق بوده است، اما مقیاس درآمد آن توسط حجم کل تراکنش‌های مالی کاربران محدود می‌شود. رشد بیشتر نیازمند گسترش خطوط تولید پولی آن است (که دقیقاً تغییر استراتژیک آن در سال ۲۰۲۴ است).

استراتژی کانال و پوشش بازار: Wave عمدتاً پایگاه کاربری خود را از طریق کانال‌های دهان به دهان و ارگانیک گسترش می‌دهد. رایگان بودن، Wave را از ابتدا دارای ویژگی‌های ویروسی کرده بود: ارجاعات کاربران و گزارش‌های رسانه‌ای در مورد "نرم‌افزار حسابداری رایگان" ترافیک را هدایت می‌کرد و به آن اجازه می‌داد بدون هزینه‌های بازاریابی گسترده، کسب‌وکارهای کوچک متعددی را در سراسر جهان جذب کند. کاربران Wave می‌توانند مستقیماً در وب‌سایت رسمی ثبت‌نام کرده و از سرویس استفاده کنند، کاملاً خودخدمت. از نظر جغرافیایی، کاربران از هر منطقه‌ای می‌توانند برای یک حساب Wave ثبت‌نام کنند، اما چون برخی ویژگی‌ها (پرداخت‌ها، حقوق و دستمزد) محدود به آمریکای شمالی هستند، کاربران فعال Wave عمدتاً در ایالات متحده و کانادا متمرکز هستند. Wave همچنین با نهادهایی مانند RBC Royal Bank در کانادا مشارکت‌هایی برقرار کرده است، و نسخه ساده شده ابزارهای Wave را در پلتفرم‌های بانکی جاسازی می‌کند تا مشتریان کسب‌وکارهای کوچک را جذب کند. پس از خریداری شدن توسط H&R Block، Wave فرصت دارد تا از طریق شبکه خدمات مالیاتی آفلاین H&R Block به تعداد بیشتری از تجار کوچک دسترسی پیدا کند (به عنوان مثال، توصیه Wave به مشتریان مالیاتی در طول فصل مالیاتی). در مجموع، Wave برای جذب پایگاه کاربری بزرگ به جذابیت ذاتی محصول خود متکی است و با ارائه مداوم یک تجربه رایگان با کیفیت، کاربران را حفظ می‌کند، سپس بخشی از آنها را به مشتریان خدمات پولی تبدیل می‌کند. در حالی که پوشش بازار آن گسترده است، خدمات پولی آن در حال حاضر در آمریکای شمالی متمرکز است (به دلیل در دسترس بودن عملکردهای پرداخت و حقوق و دستمزد در آنجا). با معرفی سطح جدید هزینه اشتراک، Wave ممکن است در آینده تلاش‌های بازاریابی خود را برای روشن کردن مسیر ارتقاء "از رایگان به پولی" تقویت کند، با هدف افزایش ARPU و حفظ مشتری. در حال حاضر، Wave موقعیت منحصر به فردی در بازار پایین‌رده دارد، تقریباً بدون رقبای رایگان با مقیاس مشابه.

تحلیل مقایسه‌ای پایلوت و رقبای اصلی

بر اساس تحلیل فوق، مشخص است که پایلوت (Pilot)، کوئیک‌بوکس (QuickBooks)، زیرو (Xero)، بنچ (Bench) و ویو (Wave) هر یک مدل‌های کسب‌وکار متمایزی دارند. پایلوت و بنچ در دسته "خدمات برون‌سپاری مالی مبتنی بر فناوری" قرار می‌گیرند که به مشتریان اجازه می‌دهد تیم‌های حرفه‌ای از طریق اشتراک، حسابداری آن‌ها را انجام دهند. در مقابل، کوئیک‌بوکس و زیرو مدل‌های نرم‌افزاری خالص هستند که به کاربران یا حسابداران آن‌ها مجوز استفاده از ابزارها را برای انجام کارهای مالی خودشان می‌دهند. ویو مسیری کاملاً متفاوت را در پیش گرفته و با ابزارهای رایگان وارد بازار شده و از طریق خدمات مالی کسب درآمد می‌کند. مزایای منحصربه‌فرد پایلوت در مقایسه با دیگران در درجه بالای اتوماسیون همراه با یکپارچگی خدمات حرفه‌ای آن نهفته است که بر نیازهای مشتریان با رشد بالا تمرکز دارد و راه‌حلی جامع از حسابداری تا تهیه اظهارنامه مالیاتی و مشاوره مالی ارائه می‌دهد. این امر آن را برای استارتاپ‌هایی که نیاز به صرفه‌جویی در زمان و تلاش با حفظ کیفیت بالا دارند، بسیار جذاب می‌کند. از سوی دیگر، کوئیک‌بوکس و زیرو در مقیاس بازار و اکوسیستم برتری دارند و میلیون‌ها کاربر و یکپارچگی‌های متعدد را به خود اختصاص داده‌اند، همراه با سال‌ها انباشت برند و پوشش عملکردی گسترده، اگرچه کاربران را ملزم به صرف زمان برای استفاده از آن‌ها می‌کنند. بنچ شبیه پایلوت است اما در رده پایین‌تری قرار دارد، ارزان‌تر است اما با قابلیت‌های نسبتاً محدود، فقط برای کسب‌وکارهای بسیار کوچک مناسب است. بزرگترین مزیت رقابتی ویو رایگان بودن آن است؛ با کاهش مانع ورود، تعداد زیادی از کاربران را جذب کرده است و مدل سودآوری آن بیشتر به مقیاس کاربر و حجم تراکنش بستگی دارد تا هزینه‌های بالا برای هر کاربر.

جدول زیر خلاصه‌ای از مقایسه پایلوت و رقبای اصلی آن را از نظر مدل‌های سودآوری، پایگاه مشتریان، استراتژی‌های قیمت‌گذاری، منابع درآمد و غیره ارائه می‌دهد:

ارائه‌دهندهمدل سودآوری و استراتژی قیمت‌گذاریپایگاه مشتریان اصلیمنابع اصلی درآمدجایگاه‌یابی و ویژگی‌های محصول
پایلوتخدمات حسابداری مالی مبتنی بر فناوری؛ اشتراک سالانه، هزینه‌ها بر اساس اندازه مشتری مقیاس‌پذیر است (Essentials از ۱۹۹ دلار در ماه، معمولاً از ۴۹۹+ دلار در ماه به بالا).استارتاپ‌های با رشد بالا، شرکت‌های کوچک و متوسط (به‌ویژه در فناوری و تجارت الکترونیک)هزینه‌های اشتراک حسابداری؛ هزینه‌های خدمات اظهارنامه مالیاتی؛ هزینه‌های خدمات مشاوره مالی (CFO).راه‌حل حسابداری یکپارچه هوش مصنوعی + انسانی، با تأکید بر اتوماسیون و پشتیبانی تیم حرفه‌ای، ارائه حسابداری بر مبنای تعهدی و خدمات مالی سفارشی، جایگزین بخش حسابداری داخلی می‌شود.
کوئیک‌بوکسنرم‌افزار حسابداری SaaS؛ اشتراک ماهانه چند نسخه‌ای (بر اساس ویژگی‌ها، ۱۵ تا ۱۰۰+ دلار در ماه)، به علاوه ما

راهنمای جامع مهاجرت از QuickBooks به Beancount

· 35 دقیقه مطالعه
Mike Thrift
Mike Thrift
Marketing Manager

مرحله ۱: استخراج داده‌ها از QuickBooks

مهاجرت داده‌های پنج ساله با خارج کردن تمام سوابق QuickBooks در یک فرمت قابل استفاده آغاز می‌شود. QuickBooks Desktop و QuickBooks Online گزینه‌های خروجی‌گیری متفاوتی دارند:

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

۱.۱ QuickBooks Desktop – گزینه‌های خروجی‌گیری

IIF (Intuit Interchange Format): نرم‌افزار QuickBooks Desktop می‌تواند لیست‌ها (مانند سرفصل حساب‌ها، مشتریان، فروشندگان) را به فایل‌های متنی .IIF خروجی بگیرد. در QuickBooks Desktop، به مسیر File → Utilities → Export → Lists to IIF بروید، سپس لیست‌های مورد نیاز خود (مانند Chart of Accounts، Customers، Vendors) را انتخاب کنید. این کار یک فایل متنی تولید می‌کند که شامل نام حساب‌ها، انواع آن‌ها و داده‌های لیست است. IIF یک فرمت اختصاصی اما مبتنی بر متن ساده است که تجزیه (parse) آن نسبتاً آسان است. از آن برای استخراج سرفصل حساب‌ها (Chart of Accounts) و لیست مخاطبین خود برای ارجاع در Beancount استفاده کنید.

دفتر کل/دفتر روزنامه از طریق CSV: برای داده‌های تراکنش، QuickBooks Desktop یک خروجی کامل با یک کلیک ارائه نمی‌دهد، اما می‌توانید از گزارش‌ها استفاده کنید. روش پیشنهادی، خروجی گرفتن از دفتر روزنامه عمومی (General Journal) (شامل تمام تراکنش‌ها) در بازه زمانی مورد نظر است. در QuickBooks Desktop، به مسیر Reports → Accountant & Taxes → Journal بروید، تاریخ‌ها را از اولین تراکنش تا امروز تنظیم کنید و روی Export → Excel کلیک کنید. پس از حذف هرگونه سرصفحه/پاصفحه گزارش و ستون‌های خالی، نتیجه را به صورت CSV ذخیره کنید. اطمینان حاصل کنید که داده‌های عددی تمیز هستند: شامل سنت (مثلاً 3.00 نه 3)، بدون علامت نقل قول اضافی، و بدون نماد ارز یا منفی‌های دوگانه در CSV باشند. فایل CSV باید ستون‌هایی مانند Date, Trans #, Name, Account, Memo, Debit, Credit, Balance (یا یک ستون Amount واحد بسته به فرمت گزارش) داشته باشد.

نکته: QuickBooks Desktop 2015 به بعد همچنین می‌تواند تراکنش‌ها را از طریق کادر محاوره‌ای Find خروجی بگیرد. از مسیر Edit → Find → Advanced استفاده کنید، بازه زمانی را برای پنج سال تنظیم کنید، سپس نتایج را به CSV خروجی بگیرید. هشدار: برخی نسخه‌ها خروجی را به 32,768 خط محدود می‌کنند. اگر داده‌های بسیار بزرگی دارید، برای جلوگیری از بریده شدن داده‌ها، سال به سال (یا در بخش‌های کوچکتر) خروجی بگیرید و بعداً آن‌ها را ترکیب کنید. اطمینان حاصل کنید که بازه‌های زمانی برای جلوگیری از تکرار، همپوشانی نداشته باشند.

فرمت‌های دیگر (QBO/QFX/QIF): نرم‌افزار QuickBooks Desktop می‌تواند تراکنش‌های بانکی را از طریق فایل‌های .QBO (Web Connect) یا .QFX/.OFX وارد کند، اما برای خروجی گرفتن از QuickBooks، این فرمت‌ها معمول نیستند. اگر هدف شما فقط استخراج تراکنش‌های بانکی است، ممکن است قبلاً آن‌ها را در فرمت QBO/OFX از بانک خود داشته باشید. با این حال، برای خروجی کامل دفتر کل، به IIF و CSV پایبند باشید. QuickBooks Desktop نمی‌تواند مستقیماً بدون ابزارهای شخص ثالث به فرمت QIF (Quicken Interchange Format) خروجی بگیرد. اگر راهی برای دریافت QIF پیدا کردید، توجه داشته باشید که برخی از ابزارهای دفتر کل (مانند Ledger 2.x قدیمی) می‌توانستند QIF را بخوانند، اما بهتر است در این فرآیند با CSV کار کنیم.


۱.۲ QuickBooks Online – گزینه‌های خروجی‌گیری

خروجی داخلی Excel/CSV: نسخه آنلاین QuickBooks (QBO) ابزاری به نام Export Data ارائه می‌دهد. به Settings ⚙ → Tools → Export Data بروید. در کادر محاوره‌ای خروجی، از تب Reports برای انتخاب داده‌ها (مانند General Ledger یا Transaction List) و از تب Lists برای لیست‌ها (سرفصل حساب‌ها و غیره) استفاده کنید، All dates را انتخاب کرده و به Excel خروجی بگیرید. QuickBooks Online یک فایل ZIP حاوی چندین فایل Excel برای گزارش‌ها و لیست‌های انتخاب شده (به عنوان مثال، سود و زیان، ترازنامه، دفتر کل، مشتریان، فروشندگان، سرفصل حساب‌ها و غیره) دانلود می‌کند. سپس می‌توانید این فایل‌های Excel را برای پردازش به CSV تبدیل کنید.

گزارش جزئیات تراکنش: اگر خروجی پیش‌فرض QBO شامل یک فایل دفتر کل واحد نباشد، می‌توانید به صورت دستی یک گزارش دقیق تهیه کنید:

  1. به Reports بروید و Transaction Detail by Account (یا General Ledger در برخی نسخه‌های QBO) را پیدا کنید.
  2. Report period را روی بازه کامل پنج ساله تنظیم کنید.
  3. زیر گزینه‌های گزارش، Group by = None را تنظیم کنید (تا تراکنش‌های فردی بدون جمع‌های فرعی لیست شوند).
  4. ستون‌ها را سفارشی کنید تا حداقل شامل این موارد باشند: Date، Transaction Type، Number، Name (Payee/Customer)، Memo/Description، Account، Debit، Credit (یا یک ستون Amount واحد) و Balance. در صورت استفاده، هرگونه class یا location را نیز شامل کنید.
  5. گزارش را اجرا کرده و سپس Export to Excel را بزنید.

این کار یک دفتر کل دقیق از تمام تراکنش‌ها را به دست می‌دهد. آن را به صورت CSV ذخیره کنید. هر خط نشان‌دهنده یک آرتیکل (پستینگ) از یک تراکنش است. بعداً برای تبدیل، باید خطوط را بر اساس تراکنش گروه‌بندی کنید.

سرفصل حساب‌ها و لیست‌های دیگر: در QuickBooks Online می‌توانید سرفصل حساب‌ها را از طریق Accounting → Chart of Accounts → Batch Actions → Export to Excel خروجی بگیرید. این کار را برای دریافت نام‌ها و انواع حساب‌ها انجام دهید. به همین ترتیب، اگر می‌خواهید نام‌ها را برای فراداده (metadata) حفظ کنید، لیست مشتریان، فروشندگان و غیره را نیز خروجی بگیرید.

API QuickBooks Online (اختیاری): برای یک رویکرد برنامه‌نویسی، Intuit یک REST API برای داده‌های QBO ارائه می‌دهد. کاربران پیشرفته می‌توانند یک اپلیکیشن QuickBooks Online ایجاد کنند (نیاز به حساب توسعه‌دهنده دارد) و از API برای دریافت داده‌ها در فرمت JSON استفاده کنند. به عنوان مثال، می‌توانید از نقطه پایانی (endpoint) Account برای سرفصل حساب‌ها و از نقاط پایانی گزارش JournalEntry یا GeneralLedger برای تراکنش‌ها کوئری بگیرید. SDKهای پایتون مانند python-quickbooks وجود دارند که API را در خود جای داده‌اند. با این حال، استفاده از API شامل احراز هویت OAuth است و برای یک مهاجرت یک‌باره، مگر اینکه اتوماسیون را ترجیح دهید، بیش از حد پیچیده است. برای اکثر موارد، خروجی دستی به CSV/Excel ساده‌تر و کمتر مستعد خطا است.


مرحله ۲: تبدیل و پاک‌سازی داده‌ها

هنگامی که داده‌های QuickBooks را در فرمت CSV (و/یا IIF) در اختیار دارید، مرحله بعدی تبدیل آن به فرمت دفتر کل متنی ساده Beancount است. این شامل تجزیه خروجی‌ها، نگاشت حساب‌های QuickBooks به سرفصل حساب‌های Beancount و فرمت‌بندی تراکنش‌ها با سینتکس Beancount است.

۲.۱ تجزیه خروجی‌های QuickBooks با پایتون

استفاده از پایتون دقت و تکرارپذیری را برای تبدیل تضمین می‌کند. ما اسکریپت‌هایی را برای دو وظیفه کلیدی تشریح می‌کنیم: وارد کردن سرفصل حساب‌ها و تبدیل تراکنش‌ها.

واردات و نگاشت حساب‌ها: بسیار مهم است که قبل از افزودن تراکنش‌ها، حساب‌های خود را در Beancount تنظیم کنید. حساب‌های QuickBooks دارای انواع (بانک، حساب‌های دریافتنی، هزینه و غیره) هستند که ما آنها را به سلسله مراتب Beancount (دارایی‌ها، بدهی‌ها، درآمد، هزینه‌ها و غیره) نگاشت خواهیم کرد. به عنوان مثال، می‌توانیم از نگاشتی مانند این استفاده کنیم:

# نگاشت نوع حساب کوییک‌بوکس به دسته‌بندی ریشه در بین‌کانت
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # حساب‌های دریافتنی به عنوان دارایی
'AP': 'Liabilities', # حساب‌های پرداختنی به عنوان بدهی
'FIXASSET': 'Assets',
'OASSET': 'Assets', # سایر دارایی‌ها
'OCASSET': 'Assets', # سایر دارایی‌های جاری
'LTLIAB': 'Liabilities', # بدهی‌های بلندمدت
'OCLIAB': 'Liabilities', # سایر بدهی‌های جاری
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # سایر درآمدها
'EXEXP': 'Expenses', # سایر هزینه‌ها
}

با استفاده از خروجی IIF کوییک‌بوکس دسکتاپ یا CSV لیست حساب‌های QBO، نام و نوع هر حساب را بازیابی می‌کنیم. سپس:

  • ایجاد نام حساب‌های Beancount: کوییک‌بوکس گاهی از علامت دو نقطه (:) در نام حساب‌ها برای نشان دادن حساب‌های فرعی استفاده می‌کند (مثلاً “Current Assets:Checking). Beancount از همین علامت دو نقطه برای سلسله مراتب استفاده می‌کند. اغلب می‌توانید نام را مستقیماً استفاده کنید. اگر نام حساب‌های کوییک‌بوکس با یک دسته‌بندی شروع نمی‌شود، دسته‌بندی نگاشت شده را به ابتدای آن اضافه کنید. برای مثال، یک حساب کوییک‌بوکس از نوع BANK به نام "Checking" در Beancount به Assets:Checking تبدیل می‌شود. یک حساب EXP (هزینه) به نام "Meals" به Expenses:Meals تبدیل می‌شود و غیره.

  • اطمینان از نام‌گذاری معتبر: کاراکترهایی که ممکن است Beancount را گیج کنند حذف یا جایگزین کنید. کوییک‌بوکس کاراکترهایی مانند & یا / را در نام‌ها مجاز می‌داند. عاقلانه است که کاراکترهای خاص را حذف یا جایگزین کنید (مثلاً & را با and جایگزین کنید، اسلش‌ها یا فاصله‌ها را حذف کنید). همچنین، اطمینان حاصل کنید که تمام نام‌های حساب پس از تبدیل منحصر به فرد هستند – ممکن است کوییک‌بوکس اجازه دهد نام حساب فرعی یکسانی زیر والدین مختلف وجود داشته باشد که مشکلی ندارد، اما در Beancount نام کامل (با والدین) باید منحصر به فرد باشد. در صورت لزوم، برای تمایز، نام را تغییر دهید یا یک شناسه به آن اضافه کنید.

  • خروجی گرفتن افتتاح حساب‌ها: در Beancount، هر حسابی که استفاده می‌شود باید با دستور open افتتاح شود. می‌توانید تاریخی قبل از اولین تراکنش خود انتخاب کنید (مثلاً اگر داده‌های ۲۰۱۹-۲۰۲۳ را منتقل می‌کنید، از 2018-12-31 یا تاریخی حتی زودتر برای همه افتتاح‌ها استفاده کنید). اسکریپت خطوطی مانند این را خواهد نوشت: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD برای هر حساب (با فرض اینکه USD ارز اصلی است). از ارز مناسب برای هر حساب استفاده کنید (به یادداشت‌های چند ارزی در ادامه مراجعه کنید).

تبدیل تراکنش: چالش اصلی تبدیل خروجی تراکنش‌های QuickBooks (CSV) به ورودی‌های Beancount است. هر تراکنش QuickBooks (فاکتور، قبض، چک، سند روزنامه و غیره) می‌تواند چندین آرتیکل (خط) داشته باشد که باید در یک تراکنش Beancount جمع‌آوری شوند.

ما از خواننده CSV پایتون برای پیمایش خطوط خروجی گرفته شده و جمع‌آوری آرتیکل‌ها استفاده خواهیم کرد:

import csv
from collections import defaultdict

# خواندن تمام خطوط از فایل CSV دفتر روزنامه کوییک‌بوکس
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# گروه‌بندی خطوط بر اساس تراکنش (با فرض اینکه 'Trans #' تراکنش‌ها را مشخص می‌کند)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

اکنون transactions یک دیکشنری است که هر کلید آن یک شناسه/شماره تراکنش است و مقدار آن لیستی از آرتیکل‌های آن تراکنش است. در ادامه، هر گروه را به فرمت Beancount تبدیل می‌کنیم:

def format_date(qb_date):
# تاریخ‌های کوییک‌بوکس ممکن است مانند "12/31/2019" باشند
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# مرتب‌سازی آرتیکل‌ها بر اساس ترتیب خط در صورت نیاز (معمولاً به ترتیب می‌آیند)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# سربرگ تراکنش
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # اضافه کردن شماره مرجع در صورت وجود
output_lines.append(f" number: \"{first['Num']}\"")
# حلقه روی هر آرتیکل/پستینگ
for split in splits:
acct_name = split['Account'].strip()
# نگاشت نام حساب کوییک‌بوکس به حساب بین‌کانت (با استفاده از نگاشت قبلی)
beancount_acct = account_map.get(acct_name, acct_name)
# تعیین مبلغ با علامت:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# برخی خروجی‌ها یک ستون Amount واحد دارند (منفی برای بستانکار)
amt_str = amount
else:
# اگر ستون‌های بدهکار/بستانکار جدا باشند
amt_str = debit if debit else f"-{credit}"
# برای اطمینان، هرگونه کاما را در اعداد حذف کنید
amt_str = amt_str.replace(",", "")
# اضافه کردن ارز
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# شرح/یادداشت برای آرتیکل
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# پایان تراکنش – خط خالی
output_lines.append("")

منطق این اسکریپت کارهای زیر را انجام می‌دهد:

  • تاریخ را برای Beancount به فرمت YYYY-MM-DD تبدیل می‌کند.
  • از طرف حساب (Name) و شرح (Memo) برای روایت تراکنش استفاده می‌کند. به عنوان مثال: 2020-05-01 * "ACME Corp" "Invoice payment" (اگر طرف حسابی وجود نداشته باشد، می‌توانید از نوع تراکنش کوییک‌بوکس استفاده کنید یا طرف حساب را خالی بگذارید).
  • اگر شماره مرجعی وجود داشته باشد (شماره چک، شماره فاکتور و غیره)، یک فراداده number اضافه می‌کند.
  • روی هر خط آرتیکل تکرار می‌کند:
    • نام حساب QuickBooks را با استفاده از یک دیکشنری account_map (که از مرحله سرفصل حساب‌ها پر شده) به حساب Beancount نگاشت می‌کند.
    • مبلغ را تعیین می‌کند. بسته به خروجی شما، ممکن است یک ستون Amount واحد (با مقادیر مثبت/منفی) یا ستون‌های Debit و Credit جداگانه داشته باشید. کد بالا هر دو حالت را مدیریت می‌کند. این کد تضمین می‌کند که مبالغ بستانکار به عنوان مقادیر منفی نمایش داده شوند (زیرا در Beancount، برای هر پستینگ از یک عدد با علامت استفاده می‌شود).
    • ارز را ضمیمه می‌کند (با فرض USD مگر اینکه ستون ارز دیگری وجود داشته باشد).
    • خط پستینگ Beancount را با حساب، مبلغ و یک کامنت با شرح خط می‌نویسد. به عنوان مثال: Assets:Checking 500.00 USD ; Deposit Income:Sales -500.00 USD ; Deposit این نشان‌دهنده یک واریز ۵۰۰ دلاری است (از درآمد به حساب جاری).
  • پس از لیست کردن تمام آرتیکل‌ها، یک خط خالی تراکنش را جدا می‌کند.

مدیریت چند ارزی: اگر داده‌های QuickBooks شما شامل چندین ارز باشد، کد ارز را در هر پستینگ (همانطور که در بالا نشان داده شد) درج کنید. اطمینان حاصل کنید که حساب‌هایی که به ارزهای خارجی هستند با همان ارز افتتاح شوند. به عنوان مثال، اگر یک حساب بانکی به یورو (EUR) دارید، باید open Assets:Bank:Checking EUR را خروجی بگیرید و تراکنش‌های آن حساب از EUR استفاده خواهند کرد. Beancount از دفترهای کل چند ارزی پشتیبانی می‌کند و تبدیل‌های ضمنی را ردیابی خواهد کرد، اما اگر می‌خواهید در گزارش‌ها تبدیل به یک ارز پایه داشته باشید، ممکن است نیاز به اضافه کردن ورودی‌های قیمت برای نرخ‌های ارز داشته باشید. همچنین توصیه می‌شود که ارز عملیاتی اصلی خود را در بالای فایل Beancount اعلام کنید (مثلاً option "operating_currency" "USD").

اجرای تبدیل: اسکریپت پایتون را (به عنوان مثال، با نام qb_to_beancount.py) ذخیره کرده و آن را بر روی فایل‌های خروجی گرفته شده خود اجرا کنید. این باید یک فایل .beancount حاوی تمام حساب‌ها و تراکنش‌ها تولید کند.


۲.۲ مدیریت موارد خاص و پاک‌سازی داده‌ها

در طول تبدیل، به این مشکلات رایج و نحوه رسیدگی به آنها توجه داشته باشید:

  • عدم تطابق نام حساب‌ها: ممکن است نام حساب‌های QuickBooks با نام‌های سلسله‌مراتبی Beancount تداخل داشته باشد. به عنوان مثال، QuickBooks می‌تواند دو حساب والد مختلف داشته باشد که هر کدام یک حساب فرعی به نام "Insurance" دارند. در Beancount، Expenses:Insurance باید منحصر به فرد باشد. این مشکل را با تغییر نام یکی از آنها (مثلاً "Insurance-Vehicle" در مقابل "Insurance-Health") قبل از خروجی‌گیری یا نگاشت آنها به حساب‌های منحصر به فرد Beancount در اسکریپت خود حل کنید. قراردادهای نام‌گذاری سازگار (بدون کاراکترهای خاص و استفاده از سلسله مراتب) از سردردهای بعدی جلوگیری می‌کند. در صورت لزوم از رویکرد فایل نگاشت مجدد استفاده کنید: یک CSV یا دیکشنری از نام قدیمی → نام جدید Beancount نگهداری کنید و آن را در طول تبدیل اعمال کنید (کد نمونه ما از account_map استفاده می‌کند و می‌تواند موارد جایگزین را از یک فایل بارگیری کند).

  • تاریخ‌ها و فرمت‌ها: اطمینان حاصل کنید که تمام تاریخ‌ها به طور یکنواخت فرمت‌بندی شده‌اند. اسکریپت بالا فرمت M/D/Y را به فرمت ISO نرمال می‌کند. همچنین، مراقب مسائل مربوط به سال مالی در مقابل سال تقویمی باشید اگر بازه پنج ساله شما از پایان سال عبور می‌کند. Beancount به مرزهای سال مالی اهمیتی نمی‌دهد، اما ممکن است بعداً بخواهید برای راحتی کار، فایل‌ها را بر اساس سال تقسیم کنید.

  • دقت عددی: QuickBooks ارز را با سنت مدیریت می‌کند، بنابراین کار با سنت معمولاً مشکلی ایجاد نمی‌کند. همه مبالغ باید در CSV ایده‌آل دو رقم اعشار داشته باشند. اگر هر مبلغی به عدد صحیح (بدون اعشار) تبدیل شده یا دارای کاما/پرانتز (برای مقادیر منفی) است، آنها را در اسکریپت پاک کنید (کاماها را حذف کنید، (100.00) را به -100.00 تبدیل کنید و غیره). خروجی CSV اگر به درستی انجام شود (طبق دستورالعمل) باید از این مشکلات فرمت‌بندی جلوگیری کند.

  • مبالغ منفی و علائم: گزارش‌های QuickBooks گاهی مقادیر منفی را به صورت -100.00 یا (100.00) یا حتی --100.00 در برخی خروجی‌های Excel نشان می‌دهند. مرحله پاک‌سازی باید این موارد را مدیریت کند. اطمینان حاصل کنید که بدهکار و بستانکار هر تراکنش به صفر می‌رسد. Beancount این را اعمال خواهد کرد (اگر تراز نباشد، در هنگام وارد کردن خطا می‌دهد).

  • تراکنش‌های تکراری: اگر مجبور شدید تراکنش‌ها را به صورت دسته‌ای خروجی بگیرید (مثلاً سال به سال یا حساب به حساب)، مراقب باشید که آنها را بدون همپوشانی ادغام کنید. بررسی کنید که اولین تراکنش یک سال، آخرین تراکنش دسته قبلی نباشد. به راحتی ممکن است چند تراکنش در مرزها به طور تصادفی تکرار شوند. اگر به تکراری بودن شک دارید، می‌توانید ورودی‌های نهایی Beancount را بر اساس تاریخ مرتب کرده و به دنبال ورودی‌های یکسان بگردید، یا از تگ‌های تراکنش منحصر به فرد Beancount برای شناسایی آنها استفاده کنید. یک استراتژی این است که شماره تراکنش QuickBooks را به عنوان فراداده (metadata) اضافه کنید (مثلاً از Trans # یا شماره فاکتور به عنوان تگ txn یا فراداده quickbooks_id استفاده کنید) و سپس اطمینان حاصل کنید که هیچ شناسه تکراری وجود ندارد.

  • آرتیکل‌های نامتوازن / حساب‌های معلق: ممکن است QuickBooks موارد عجیبی مانند یک تراکنش با عدم توازن داشته باشد که QuickBooks به طور خودکار آن را به "Opening Balance Equity" یا "Retained Earnings" منتقل کرده است. به عنوان مثال، هنگام تنظیم مانده‌های اولیه حساب، QuickBooks اغلب تفاوت‌ها را به یک حساب حقوق صاحبان سهام پست می‌کند. این موارد در تراکنش‌های خروجی گرفته شده ظاهر می‌شوند. Beancount نیاز به تراز کردن صریح دارد. ممکن است لازم باشد یک حساب حقوق صاحبان سهام برای مانده‌های افتتاحیه (معمولاً Equity:Opening-Balances) معرفی کنید تا رفتار QuickBooks را تقلید کند. این یک رویه خوب است که یک ورودی مانده افتتاحیه در روز اول دفتر کل خود داشته باشید که مانده‌های اولیه همه حساب‌ها را ایجاد می‌کند (به مرحله ۵ مراجعه کنید).

  • موارد خاص چند ارزی: اگر از چند ارز استفاده می‌کنید، خروجی QuickBooks ممکن است تمام مبالغ را به ارز اصلی یا به ارز بومی خودشان لیست کند. ایده‌آل این است که داده‌ها را به ارز بومی برای هر حساب دریافت کنید (گزارش‌های QuickBooks Online معمولاً این کار را انجام می‌دهند). در Beancount، هر پستینگ یک ارز دارد. اگر QuickBooks نرخ‌های ارز یا تبدیل به ارز اصلی را ارائه داده باشد، ممکن است آنها را نادیده بگیرید و به ورودی‌های قیمت Beancount تکیه کنید. اگر QuickBooks نرخ‌های ارز را خروجی نگرفته باشد، ممکن است بخواهید به صورت دستی سوابق قیمت را (مثلاً با استفاده از دستور price در Beancount) برای تاریخ‌های کلیدی اضافه کنید تا ارزیابی مطابقت داشته باشد. با این حال، برای یکپارچگی اولیه دفتر کل، کافی است که تراکنش‌ها در ارزهای اصلی خود تراز شوند – سود/زیان‌های تحقق نیافته نیازی به ثبت صریح ندارند مگر اینکه بخواهید گزارش‌های یکسانی داشته باشید.

  • حساب‌های دریافتنی / حساب‌های پرداختنی: کوییک‌بوکس جزئیات فاکتورها و قبوض (تاریخ سررسید، وضعیت پرداخت و غیره) را ردیابی می‌کند که در یک دفتر کل ساده به طور کامل منتقل نمی‌شوند. شما تراکنش‌های A/R (حساب‌های دریافتنی) و A/P (حساب‌های پرداختنی) را دریافت خواهید کرد (فاکتورها A/R را افزایش می‌دهند، پرداخت‌ها A/R را کاهش می‌دهند و غیره)، اما نه اسناد فاکتور یا مانده مشتریان به ازای هر فاکتور. در نتیجه، پس از مهاجرت، باید تأیید کنید که مانده حساب‌های A/R و A/P شما در Beancount با مانده‌های باز مشتریان/فروشندگان در QuickBooks برابر است. اگر نیاز به ردیابی فاکتورها دارید، می‌توانید از فراداده Beancount استفاده کنید (مثلاً یک تگ invoice یا لینک اضافه کنید). شماره فاکتورهای QuickBooks باید در فیلدهای Num یا Memo آمده باشد – اسکریپت ما Num را به عنوان number: "..." در فراداده تراکنش حفظ می‌کند.

  • حساب‌های غیرفعال یا بسته شده: خروجی IIF ممکن است شامل حساب‌های غیرفعال باشد (اگر انتخاب کرده باشید که آنها را شامل شود). وارد کردن آنها مشکلی ندارد (آنها فقط هیچ تراکنشی نخواهند داشت و اگر واقعاً غیرفعال باشند مانده صفر خواهند داشت). می‌توانید پس از تاریخ آخرین تراکنش، آنها را با دستور close در Beancount به عنوان بسته شده علامت‌گذاری کنید. این کار دفتر کل شما را مرتب نگه می‌دارد. به عنوان مثال: 2023-12-31 close Expenses:OldAccount ; closed after migration این کار اختیاری است و بیشتر برای تمیزی است.

با پاک‌سازی و نگاشت دقیق داده‌ها به روش بالا، یک فایل دفتر کل Beancount خواهید داشت که از نظر ساختاری داده‌های QuickBooks شما را منعکس می‌کند. مرحله بعدی تأیید این است که از نظر عددی نیز QuickBooks را منعکس می‌کند.


مرحله ۳: اعتبارسنجی و مغایرت‌گیری داده‌ها

اعتبارسنجی یک مرحله حیاتی در مهاجرت داده‌های حسابداری است. ما باید اطمینان حاصل کنیم که دفتر کل Beancount با دفاتر QuickBooks تا آخرین ریال مطابقت دارد. چندین استراتژی و ابزار می‌توانند مورد استفاده قرار گیرند:

۳.۱ مغایرت‌گیری تراز آزمایشی

گزارش تراز آزمایشی (trial balance) مانده پایانی همه حساب‌ها را (با بدهکار و بستانکار یا مثبت/منفی مشخص شده) لیست می‌کند و جمع آن باید صفر باشد. اجرای یک تراز آزمایشی در هر دو سیستم برای یک تاریخ مشخص، سریع‌ترین راه برای تأیید صحت کلی است.

  • در QuickBooks: یک گزارش Trial Balance برای آخرین روز سال نهایی (مثلاً ۳۱ دسامبر ۲۰۲۳) اجرا کنید. این گزارش مانده هر حساب را نشان می‌دهد. آن را خروجی بگیرید یا ارقام کلیدی را یادداشت کنید.

  • در Beancount: از گزارش‌گیری Beancount برای تولید یک تراز آزمایشی استفاده کنید. یک روش آسان از طریق خط فرمان است:

    bean-report migrated.beancount balances

    گزارش balances یک تراز آزمایشی است که تمام حساب‌ها و مانده‌های آنها را لیست می‌کند. همچنین می‌توانید فایل را در Fava (رابط کاربری وب Beancount) باز کرده و به بخش Balances یا Balance Sheet نگاه کنید. مانده هر حساب در Beancount باید با تراز آزمایشی QuickBooks مطابقت داشته باشد. به عنوان مثال، اگر QuickBooks نشان دهد Accounts Receivable = 5,000،حسابAssets:AccountsReceivableدرBeancountبایددرمجموع۵,۰۰۰دلار(بدهکار)باشد.اگرSalesIncome=5,000*، حساب Assets:Accounts Receivable در Beancount باید در مجموع ۵,۰۰۰ دلار (بدهکار) باشد. اگر *Sales Income = 200,000، حساب Income:Sales در Beancount باید ۲۰۰,۰۰۰ دلار (بستانکار، که ممکن است به صورت -200,000 نمایش داده شود اگر از تراز آزمایشی استفاده می‌کنید که بستانکار را به عنوان منفی نشان می‌دهد) باشد.

اگر مغایرتی وجود داشت، آنها را مشخص کنید:

  • بررسی کنید که آیا یک حساب به طور کامل حذف شده یا اضافی است (آیا یک حساب را فراموش کرده‌ایم یا حسابی را که قبل از دوره مهاجرت بسته شده بود، وارد کرده‌ایم؟).
  • اگر مانده‌ای اشتباه است، جزئیات را بررسی کنید: QuickBooks می‌تواند یک Account QuickReport یا جزئیات دفتر کل برای آن حساب اجرا کند، و شما می‌توانید آن را با رجیستر Beancount برای آن حساب (bean-report migrated.beancount register -a AccountName) مقایسه کنید. گاهی اوقات تفاوت‌ها از یک تراکنش گمشده یا تکراری ناشی می‌شوند.

همچنین تأیید کنید که جمع تمام حساب‌ها در تراز آزمایشی Beancount صفر است (این ابزار یک جمع کل چاپ می‌کند که باید صفر یا بسیار نزدیک به صفر باشد). Beancount سیستم حسابداری دوطرفه را اعمال می‌کند، بنابراین اگر هرگونه عدم توازن غیرصفری داشته باشید، به این معنی است که دارایی‌ها منهای بدهی‌ها-حقوق صاحبان سهام به صفر نرسیده است، که نشان‌دهنده یک مشکل است (که QuickBooks معمولاً اجازه آن را نمی‌دهد، اما اگر برخی داده‌ها حذف شده باشند ممکن است اتفاق بیفتد).


۳.۲ مقایسه مانده حساب‌ها

علاوه بر تراز آزمایشی، می‌توانید صورت‌های مالی خاصی را مقایسه کنید:

  • ترازنامه (Balance Sheet): یک ترازنامه QuickBooks برای تاریخ نهایی و یک ترازنامه Beancount (bean-report migrated.beancount balsheet) اجرا کنید. این مشابه تراز آزمایشی است اما بر اساس دارایی‌ها، بدهی‌ها و حقوق صاحبان سهام سازماندهی شده است. اعداد باید از نظر دسته‌بندی مطابقت داشته باشند. برای بررسی دقیق‌تر، مجموع حساب‌های اصلی را مقایسه کنید: وجه نقد، حساب‌های دریافتنی، دارایی‌های ثابت، حساب‌های پرداختنی، حقوق صاحبان سهام و غیره.

  • سود و زیان (صورت درآمد): یک گزارش سود و زیان برای دوره پنج ساله (یا سال به سال) در QuickBooks و در Beancount (bean-report migrated.beancount income برای صورت درآمد دوره کامل) اجرا کنید. سود خالص از Beancount باید با QuickBooks برای هر دوره برابر باشد. اگر تمام پنج سال را منتقل کرده‌اید، سود خالص تجمعی باید مطابقت داشته باشد. همچنین می‌توانید مجموع درآمدهای فردی و هزینه‌ها را مقایسه کنید تا اطمینان حاصل کنید که هیچ دسته‌ای جا نیفتاده یا دو بار حساب نشده است.

  • نمونه‌گیری تصادفی تراکنش: چند تراکنش تصادفی (به ویژه از هر سال و هر حساب اصلی) را انتخاب کرده و تأیید کنید که به درستی منتقل شده‌اند. به عنوان مثال، یک فاکتور از ۳ سال پیش را در QuickBooks پیدا کنید و سپس مبلغ یا شرح آن را در فایل Beancount جستجو کنید (چون تمام تراکنش‌ها متنی هستند، می‌توانید فایل .beancount را در یک ویرایشگر متن باز کنید یا از ابزارهای جستجو استفاده کنید). بررسی کنید که تاریخ، مبالغ و حساب‌ها مطابقت دارند. این به شناسایی هرگونه مشکل در فرمت‌بندی تاریخ یا نگاشت اشتباه حساب‌ها کمک می‌کند.

۳.۳ بررسی‌های یکپارچگی خودکار

از ابزارهای اعتبارسنجی خود Beancount استفاده کنید:

  • bean-check: دستور bean-check migrated.beancount را اجرا کنید. این دستور فایل را تجزیه کرده و هرگونه خطای سینتکسی یا عدم تراز را گزارش می‌دهد. اگر اسکریپت چیزی مانند یک حساب افتتاح نشده یا یک تراکنش نامتوازن را از قلم انداخته باشد، bean-check آن را علامت‌گذاری می‌کند. یک اجرای تمیز (بدون خروجی) به این معنی است که فایل حداقل از نظر داخلی سازگار است.

  • تأیید مانده (Balance Assertions): می‌توانید به عنوان یک بررسی اضافی، تأییدهای مانده صریح را در دفتر کل برای حساب‌های کلیدی اضافه کنید. به عنوان مثال، اگر مانده حساب بانکی را در یک تاریخ خاص می‌دانید، یک خط اضافه کنید: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD سپس bean-check اطمینان حاصل می‌کند که در دفتر کل، تا آن تاریخ، مانده واقعاً ۱۰,۰۰۰ دلار است. این کار اختیاری است اما می‌تواند برای حساب‌های با اهمیت بالا مفید باشد. می‌توانید مانده‌های پایانی را از QuickBooks (مثلاً پایان هر سال) بگیرید و آنها را در فایل Beancount تأیید کنید. اگر هر تأییدی شکست بخورد، Beancount تفاوت را گزارش می‌دهد.

  • بررسی دوره‌ای تراز: اگر ترجیح می‌دهید، می‌توانید یک بررسی دوره‌ای انجام دهید. برای هر سال، تغییر خالص را مقایسه کنید. به عنوان مثال، سود خالص در QuickBooks 2020 در مقابل Beancount 2020، و غیره، تا اطمینان حاصل کنید که هر سال به درستی به حقوق صاحبان سهام بسته شده است (QuickBooks به طور خودکار سود خالص را به سود انباشته در هر سال جدید منتقل می‌کند؛ در Beancount شما فقط حقوق صاحبان سهام تجمعی را خواهید دید). اگر تفاوت‌هایی مشاهده کردید، ممکن است نشان‌دهنده مشکلی در داده‌های یک سال خاص باشد.

  • تعداد تراکنش‌ها و تکرارها: تعداد تراکنش‌ها را در QuickBooks در مقابل Beancount بشمارید. QuickBooks به راحتی تعداد مستقیم را نشان نمی‌دهد، اما می‌توانید با شمردن خطوط در CSV (هر سربرگ تراکنش در مقابل آرتیکل‌ها) تخمین بزنید. در Beancount، یک راه سریع شمارش رخدادهای txn یا * " در فایل است. آنها باید برابر یا کمی بیشتر از QuickBooks باشند (اگر تراکنش‌های مانده افتتاحیه یا تعدیلات اضافه کرده‌اید). یک عدم تطابق قابل توجه به این معنی است که ممکن است چیزی حذف یا تکرار شده باشد. استفاده ما از شناسه‌های منحصر به فرد در فراداده می‌تواند کمک کند: اگر به تکرار شک دارید، فایل Beancount را برای شماره چک یا شماره فاکتور یکسانی که دو بار ظاهر می‌شود در حالی که نباید، جستجو کنید.

با انجام این اعتبارسنجی‌ها، اطمینان حاصل می‌کنید که مهاجرت داده‌ها را حفظ کرده است. برای این مرحله وقت بگذارید – رفع ناهنجاری‌ها اکنون آسان‌تر از ماه‌ها بعد است که ممکن است به دفاتر حسابداری تکیه شود. مشکلات رایج در صورت شکست اعتبارسنجی: عدم وجود مانده افتتاحیه یک حساب، تاریخ‌گذاری یک تراکنش خارج از محدوده، یا معکوس شدن علامت در یک ورودی. همه اینها پس از شناسایی قابل رفع هستند.


مرحله ۴: نهایی کردن دفتر کل Beancount

پس از پاک‌سازی و اعتبارسنجی، زمان آن رسیده است که داده‌ها را در ساختار دفتر کل Beancount خود رسمی کنید. "نهایی کردن" در اینجا هم به معنای نهایی کردن فایل‌های دفتر کل و هم به طور بالقوه ثبت آنها در یک سیستم کنترل نسخه برای قابلیت حسابرسی است.

۴.۱ سازماندهی فایل‌های دفتر کل و پیکربندی

تصمیم بگیرید که چگونه فایل‌های دفتر کل Beancount را ساختار دهید. برای داده‌های پنج ساله، می‌توانید همه چیز را در یک فایل نگه دارید یا بر اساس سال یا دسته‌بندی تقسیم کنید. یک ساختار رایج و واضح به این صورت است:

  • فایل اصلی دفتر کل: به عنوان مثال، ledger.beancount – این نقطه ورود است که می‌تواند فایل‌های دیگر را include کند. ممکن است حاوی گزینه‌های سراسری باشد و سپس فایل‌های سالانه را شامل شود.
  • فایل حساب‌ها: سرفصل حساب‌ها و مانده‌های افتتاحیه را تعریف کنید. به عنوان مثال، accounts.beancount با تمام دستورات open (همانطور که توسط اسکریپت تولید شده است). همچنین ممکن است کالاها (ارزها) را در اینجا لیست کنید.
  • فایل‌های تراکنش: یکی برای هر سال، به عنوان مثال، 2019.beancount، 2020.beancount، و غیره، که حاوی تراکنش‌های آن سال است. این کار باعث می‌شود هر فایل اندازه قابل مدیریتی داشته باشد و به شما امکان می‌دهد در صورت لزوم روی یک سال تمرکز کنید. به طور متناوب، می‌توانید بر اساس نهاد یا حساب تقسیم کنید، اما تقسیم بر اساس زمان برای داده‌های مالی ساده است.

مثال فایل اصلی:

option "title" "دفتر کل کسب و کار من"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

به این ترتیب، تمام داده‌ها هنگام اجرای گزارش‌ها agregated می‌شوند، اما شما نظم را حفظ می‌کنید.

Beancount نیازی به چندین فایل ندارد – می‌توانید یک فایل بزرگ داشته باشید – اما ساختار بالا وضوح و کنترل نسخه را بهبود می‌بخشد. طبق بهترین شیوه‌های Beancount، خوب است که از سربرگ‌های بخش واضح استفاده کنید و ورودی‌های مرتبط را به طور منطقی گروه‌بندی کنید.

۴.۲ تنظیم مانده‌های افتتاحیه و حقوق صاحبان سهام

اگر مهاجرت شما از یک شروع کاملاً صفر نیست، باید مانده‌های افتتاحیه را مدیریت کنید. دو سناریو وجود دارد:

  • دفاتر از ابتدا شروع می‌شوند: اگر دوره پنج ساله در زمان تأسیس کسب و کار شروع شود (مثلاً شما از ژانویه ۲۰۱۹ با تمام حساب‌های صفر شده به جز حقوق صاحبان سهام اولیه شروع به استفاده از QuickBooks کرده‌اید)، ممکن است به یک تراکنش مانده افتتاحیه جداگانه نیازی نداشته باشید. اولین تراکنش‌ها در سال ۲۰۱۹ (مانند تأمین مالی اولیه به یک حساب بانکی) به طور طبیعی مانده‌های اولیه را ایجاد می‌کنند. فقط اطمینان حاصل کنید که هرگونه سرمایه اولیه یا سود انباشته قبلی از طریق تراکنش‌های حقوق صاحبان سهام حساب شده است.

  • دفاتر در میانه راه (تاریخچه جزئی): اگر شما QuickBooks را زودتر شروع کرده‌اید و ۲۰۱۹ یک نقطه میانی است، پس از ۱ ژانویه ۲۰۱۹ هر حساب یک مانده انتقالی داشته است. QuickBooks آنها را به عنوان مانده افتتاحیه یا سود انباشته داشته است. در Beancount، معمول است که یک ورودی مانده افتتاحیه در روز قبل از تاریخ شروع خود ایجاد کنید:

    • از یک حساب حقوق صاحبان سهام به نام Equity:Opening-Balances (یا مشابه) برای جبران جمع تمام مبالغ افتتاحیه استفاده کنید.
    • مثال: اگر در 2018-12-31، وجه نقد ۱۰,۰۰۰ دلار و حساب‌های دریافتنی ۵,۰۰۰ دلار و حساب‌های پرداختنی ۳,۰۰۰ دلار (بستانکار) بود، یک تراکنش می‌نوشتید: 2018-12-31 * "Opening Balances" Assets:Cash 10000.00 USD Assets:Accounts Receivable 5000.00 USD Liabilities:Accounts Payable -3000.00 USD Equity:Opening-Balances -12000.00 USD این کار باعث می‌شود مانده Opening-Balances با جمع منفی (۱۲,۰۰۰- دلار) باقی بماند که ورودی را تراز می‌کند. اکنون تمام حساب‌های دارایی/بدهی سال ۲۰۱۹ را با مانده‌های صحیح شروع می‌کنند. این باید هرگونه "سود انباشته" یا مانده‌های انتقالی QuickBooks را منعکس کند.
    • به طور متناوب، از دستورات pad و balance در Beancount استفاده کنید: برای هر حساب، می‌توانید آن را از Opening-Balances پد (pad) کنید و مانده را تأیید کنید. این یک روش خودکارتر است. به عنوان مثال: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 USD این به Beancount می‌گوید که هر ورودی لازم را (به Opening-Balances) درج کند تا وجه نقد در آن تاریخ برابر با ۱۰۰۰۰ دلار شود. این کار را برای هر حساب انجام دهید. نتیجه مشابه است، اما نوشتن یک تراکنش صریح مانند روش اول نیز ساده است.
  • سود انباشته (Retained Earnings): کوییک‌بوکس به صراحت یک تراکنش "سود انباشته" را خروجی نمی‌گیرد - فقط آن را محاسبه می‌کند. پس از مهاجرت، ممکن است متوجه شوید که اگر آن را ایجاد نکرده باشید، Equity:Retained Earnings صفر است. در Beancount، سود انباشته فقط سود سال‌های قبل است. می‌توانید یک حساب سود انباشته ایجاد کنید و سودهای قبلی را در روز اول هر سال جدید به آن منتقل کنید، یا به سادگی اجازه دهید حقوق صاحبان سهام جمع تمام درآمدها/هزینه‌ها باشد (که در بخش حقوق صاحبان سهام در گزارش‌ها ظاهر می‌شود). برای شفافیت، برخی از کاربران سالانه ورودی‌های بستن حساب را ثبت می‌کنند. این اختیاری است و عمدتاً برای نمایش است. از آنجا که ما تمام تراکنش‌ها را منتقل کرده‌ایم، سود هر سال به طور طبیعی در صورت اجرای گزارش برای هر سال، جمع می‌شود.

  • بررسی‌های مقایسه‌ای: پس از تنظیم مانده‌های افتتاحیه، یک ترازنامه در تاریخ شروع اجرا کنید تا اطمینان حاصل کنید که همه چیز درست است (باید آن مانده‌های افتتاحیه را در مقابل حقوق صاحبان سهام افتتاحیه که به صفر می‌رسد، نشان دهد).

۴.۳ نهایی‌سازی و کنترل نسخه

اکنون که داده‌ها در فرمت Beancount و ساختار یافته هستند، عاقلانه است که فایل‌ها را به یک مخزن کنترل نسخه (مانند git) کامیت کنید. هر تغییر در دفتر کل قابل ردیابی است و شما یک سابقه حسابرسی از تمام تغییرات دارید. این یک مزیت عمده حسابداری متنی ساده است. به عنوان مثال، در QuickBooks تغییرات ممکن است به راحتی قابل مقایسه (diff) نباشند، اما در Beancount، می‌توانید تفاوت‌ها را خط به خط ببینید. همانطور که برخی کاربران اشاره می‌کنند، با Beancount شما شفافیت و توانایی بازگرداندن تغییرات در صورت لزوم را به دست می‌آورید - هر ورودی می‌تواند به یک تاریخچه تغییرات مرتبط باشد.

در نظر بگیرید که کامیت این مهاجرت اولیه را به عنوان v1.0 یا مشابه تگ‌گذاری کنید، تا بدانید که وضعیت دفاتر را همانطور که از QuickBooks وارد شده، نشان می‌دهد. از این به بعد، تراکنش‌های جدید را مستقیماً در Beancount وارد خواهید کرد (یا از فیدهای بانکی و غیره وارد می‌کنید) و می‌توانید از شیوه‌های توسعه نرم‌افزار معمولی استفاده کنید (کامیت روزانه یا ماهانه، استفاده از شاخه‌ها برای آزمایش‌ها و غیره).

راه‌اندازی Fava یا ابزارهای دیگر: Fava یک رابط وب برای Beancount است که مشاهده گزارش‌ها را آسان می‌کند. پس از کامیت، fava ledger.beancount را اجرا کنید تا صورت‌های مالی را مرور کرده و آنها را برای آخرین بار با گزارش‌های QuickBooks خود مقایسه کنید. ممکن است تفاوت‌های کوچک را در یک رابط کاربری راحت‌تر تشخیص دهید (به عنوان مثال، حسابی که باید صفر باشد اما مانده کوچکی نشان می‌دهد، نشان‌دهنده یک ورودی بستن حساب گمشده یا یک تراکنش سرگردان است).

قراردادهای نام‌گذاری و ثبات: اکنون کنترل کامل دارید، بنابراین از ثبات اطمینان حاصل کنید:

  • همه حساب‌ها باید نام‌های واضحی داشته باشند که با نام‌های دسته‌بندی با حروف بزرگ شروع شوند (Assets, Liabilities و غیره). اگر هر کدام عجیب به نظر می‌رسد (مثلاً Assets:assets:SomeAccount به دلیل عدم تطابق حروف از QuickBooks)، آنها را در فایل حساب‌ها تغییر نام دهید و تراکنش‌ها را به‌روز کنید (یک جستجو/جایگزینی سریع در فایل می‌تواند این کار را انجام دهد، یا از bean-format Beancount یا چند مکان‌نما ویرایشگر استفاده کنید).
  • نمادهای کالا (کدهای ارز) باید سازگار باشند. برای دلار آمریکا، از USD در همه جا استفاده کنید (نه $ یا US$). برای دیگران، از کدهای استاندارد (EUR، GBP و غیره) استفاده کنید. این ثبات برای جستجوی قیمت و گزارش‌های Beancount مهم است.
  • هرگونه حساب موقت یا ساختگی که ممکن است ایجاد شده باشد را حذف کنید (به عنوان مثال، اگر از Expenses:Miscellaneous برای حساب‌های ناشناخته در اسکریپت به عنوان یک راه حل کلی استفاده کرده‌اید، سعی کنید با نگاشت صحیح همه حساب‌ها آنها را حذف کنید).

بستن QuickBooks: در این مرحله، شما باید دفاتر موازی در Beancount داشته باشید که با QuickBooks مطابقت دارند. برخی انتخاب می‌کنند که هر دو سیستم را برای مدت کوتاهی به صورت موازی اجرا کنند تا اطمینان حاصل کنند که چیزی از قلم نیفتاده است. اما اگر اعتبارسنجی قوی باشد، می‌توانید دفاتر QuickBooks را "ببندید":

  • اگر این یک محیط شرکتی است، در نظر بگیرید که تمام اسناد منبع QuickBooks (فاکتورها، قبوض، رسیدها) را برای سوابق خروجی بگیرید، زیرا اینها در Beancount وجود نخواهند داشت مگر اینکه آنها را به صورت دستی ضمیمه کنید.
  • یک نسخه پشتیبان از داده‌های QuickBooks (هم فایل شرکت و هم فایل‌های خروجی) را نگه دارید.
  • از این به بعد، دفتر کل Beancount را به عنوان سیستم اصلی ثبت سوابق نگهداری کنید.

با نهایی کردن داده‌ها در دفتر کل Beancount، شما خط لوله مهاجرت را تکمیل کرده‌اید. مرحله نهایی انجام یک حسابرسی و نشان دادن ثبات صورت‌های مالی است تا خودتان (و هر ذینفع یا حسابرس) را متقاعد کنید که مهاجرت موفقیت‌آمیز بوده است.


مرحله ۵: حسابرسی پس از مهاجرت و مثال‌ها

برای نشان دادن موفقیت مهاجرت، یک مقایسه قبل و بعد از صورت‌های مالی و احتمالاً یک مقایسه (diff) از تراکنش‌ها تهیه کنید. این شواهدی را ارائه می‌دهد که دفاتر سازگار هستند.

۵.۱ تأیید صورت‌های مالی

گزارش‌های مالی کلیدی را از هر دو QuickBooks و Beancount برای تاریخ‌های یکسان تولید کرده و مقایسه کنید:

  • ترازنامه در تاریخ ۳۱ دسامبر ۲۰۲۳: مجموع دارایی‌ها، بدهی‌ها و حقوق صاحبان سهام را خط به خط مقایسه کنید. آنها باید مطابقت داشته باشند. به عنوان مثال، اگر QuickBooks نشان می‌داد کل دارایی‌ها = ۱۵۰,۰۰۰ دلار و کل بدهی‌ها + حقوق صاحبان سهام = ۱۵۰,۰۰۰ دلار، ترازنامه Beancount باید همان مجموع‌ها را نشان دهد. اگر حساب‌ها را کمی متفاوت ساختار داده‌اید (مثلاً برخی از حساب‌های فرعی را ادغام کرده‌اید)، در مقایسه آن را تنظیم کنید یا برای اطمینان از برابر بودن مجموع‌ها، به سطح بعدی جزئیات بروید.

  • سود و زیان ۲۰۱۹-۲۰۲۳: اطمینان حاصل کنید که کل درآمد، کل هزینه‌ها و سود خالص برای هر سال (یا کل دوره) یکسان است. تفاوت‌های جزئی ممکن است به دلیل گرد کردن QuickBooks در گزارش‌ها ایجاد شود، اما تراکنش‌ها معمولاً سنت را دقیقاً حمل می‌کنند بنابراین سود خالص باید دقیق باشد. اگر سود هر سالی متفاوت باشد، به داده‌های آن سال بپردازید - این اغلب نشان‌دهنده یک ورودی گمشده یا تکراری در آن دوره است.

  • تفاوت‌های تراز آزمایشی: در صورت امکان، یک صفحه گسترده ایجاد کنید که در آن هر حساب و مانده از QuickBooks در مقابل Beancount را لیست کنید. از آنجا که انتظار داریم آنها مطابقت داشته باشند، این ممکن است یک ستون تفاوت تماماً صفر باشد. این اساساً همان بررسی متقاطع تراز آزمایشی است که بحث کردیم، اما نوشتن آن به مستندسازی کمک می‌کند.

۵.۲ مثال مقایسه (قبل در مقابل بعد)

در زیر یک قطعه مثال برای نشان دادن ثبات داده‌ها آورده شده است. فرض کنید تراز آزمایشی QuickBooks ما برای ۳۱ دسامبر ۲۰۲۳ به این صورت بود:

حسابمانده QuickBooks (۳۱ دسامبر ۲۰۲۳)
دارایی‌ها
  Assets:Bank:Checking۱۲,۵۰۰.۰۰ دلار (بدهکار)
  Assets:Accounts Receivable۳,۲۰۰.۰۰ دلار (بدهکار)
بدهی‌ها
  Liabilities:Credit Card۱,۲۰۰.۰۰- دلار (بستانکار)
  Liabilities:Loans Payable۵,۰۰۰.۰۰- دلار (بستانکار)
حقوق صاحبان سهام
  Equity:Opening-Balances۷,۵۰۰.۰۰- دلار (بستانکار)
  Equity:Retained Earnings۲,۰۰۰.۰۰- دلار (بستانکار)
  Equity:Current Year Profit۰.۰۰ دلار

در Beancount، پس از وارد کردن و ثبت تمام تراکنش‌ها تا سال ۲۰۲۳، یک bean-report balances (تراز آزمایشی) خروجی می‌دهد:

حسابمانده Beancount (۳۱ دسامبر ۲۰۲۳)
دارایی‌ها
  Assets:Bank:Checking12,500.00 USD (بدهکار)
  Assets:Accounts Receivable3,200.00 USD (بدهکار)
بدهی‌ها
  Liabilities:Credit Card-1,200.00 USD (بستانکار)
  Liabilities:Loans Payable-5,000.00 USD (بستانکار)
حقوق صاحبان سهام
  Equity:Opening-Balances-7,500.00 USD (بستانکار)
  Equity:Retained Earnings-2,000.00 USD (بستانکار)
  Equity:Profit (2019-2023)0.00 USD

(توجه: بخش‌های حقوق صاحبان سهام ممکن است به طور متفاوتی ساختار یافته باشند؛ نکته کلیدی این است که مجموع‌ها مطابقت دارند. در اینجا، "سود (۲۰۱۹-۲۰۲۳)" در Beancount نقش سود سال جاری/سود انباشته ترکیبی را ایفا می‌کند، که صفر نشان می‌دهد زیرا سود به سود انباشته بسته شده است.)

همانطور که نشان داده شده است، هر حساب تا آخرین سنت مطابقت دارد. جمع بدهکارها برابر با جمع بستانکارها در هر دو طرف است.

علاوه بر این، اگر یک صورت سود و زیان برای سال ۲۰۲۳ اجرا کنیم:

  • QuickBooks: درآمد ۵۰,۰۰۰ دلار، هزینه‌ها ۴۸,۰۰۰ دلار، سود خالص ۲,۰۰۰ دلار.
  • Beancount: درآمد ۵۰,۰۰۰ دلار، هزینه‌ها ۴۸,۰۰۰ دلار، سود خالص ۲,۰۰۰ دلار (که سپس به سود انباشته بسته شده یا در ترازنامه پایان سال زیر حقوق صاحبان سهام ظاهر می‌شود).

در صورت نیاز می‌توانید یک مقایسه (diff) از تراکنش‌ها ایجاد کنید، اما از آنجا که داده‌های QuickBooks به فرمت دفتر کل نیستند، تکیه بر گزارش‌ها مؤثرتر است. می‌توان هر دو CSV QuickBooks و تراکنش‌های Beancount را بر اساس تاریخ مرتب کرد و فیلدهای کلیدی را به عنوان یک بررسی نهایی مقایسه کرد (این کار را می‌توان در Excel یا با یک اسکریپت انجام داد). با این حال، با توجه به اینکه به اعتبارسنجی قبلی خود اعتماد داریم، بررسی صورت‌های مالی معمولاً کافی است.

۵.۳ نکات حسابرسی

  • اگر یک حسابرس یا ذینفع نیاز به اطمینان دارد، صورت‌های مالی قبل و بعد را در کنار هم ارائه دهید. شفافیت Beancount در واقع می‌تواند حسابرسی را ساده کند زیرا می‌توانید هر عددی را از یک صورت مالی به سرعت به ورودی منبع ردیابی کنید (به ویژه با استفاده از قابلیت drill-down در Fava).
  • پشتیبان QuickBooks و CSVهای خروجی گرفته شده را به عنوان بخشی از سابقه حسابرسی خود نگه دارید. هرگونه تعدیلی که در طول مهاجرت انجام شده است را مستند کنید (به عنوان مثال، "تغییر نام حساب X به Y برای ثبات" یا "تقسیم تراکنش Z به دو ورودی برای وضوح" اگر چنین تغییراتی را انجام داده‌اید).
  • از این به بعد، بررسی‌های منظم را در Beancount پیاده‌سازی کنید. به عنوان مثال، مغایرت‌گیری ماهانه حساب‌های بانکی و تأیید مانده پایانی آنها به شناسایی هرگونه مشکل داده یا اشتباه در ورود کمک می‌کند. مهاجرت یک مبنای خوب ایجاد می‌کند؛ حفظ نظم در سیستم جدید، دقت مداوم را تضمین خواهد کرد.

در نهایت، اتمام مهاجرت را جشن بگیرید: شما با موفقیت پنج سال داده‌های حسابداری را از QuickBooks به Beancount منتقل کرده‌اید. داده‌ها اکنون در یک فرمت متنی سبک، با کنترل نسخه و با یکپارچگی کامل حسابداری دوطرفه قرار دارند. شما داده‌ها را استخراج کرده، با اسکریپت‌های پایتون تبدیل کرده، یکپارچگی را از طریق ترازهای آزمایشی و گزارش‌ها تأیید کرده و آن را در یک دفتر کل Beancount به خوبی سازماندهی شده نهایی کرده‌اید. این فرآیند جامع تضمین می‌کند که دفتر کل Beancount یک کپی دقیق و وفادار از دفاتر QuickBooks شما در طول دوره پنج ساله است و شما را برای حسابداری کارآمد در آینده آماده می‌کند.