Beancount.io LogoBeancount.io

طراحی یک کدینگ حسابداری که واقعاً حرفی برای گفتن داشته باشد

زمان مطالعه 14 دقیقهMike ThriftMike Thrift
طراحی یک کدینگ حسابداری که واقعاً حرفی برای گفتن داشته باشد

اگر فایل‌های فهرست حساب‌های (Chart of Accounts) اکثر کسب‌وکارهای کوچک را باز کنید، با صحنه مشابهی روبرو می‌شوید: ۲۴۷ حساب، که فقط دوجین از آن‌ها دارای مانده هستند و نیمی از آن‌ها نیمه‌شب توسط حسابداری خسته ایجاد شده‌اند که نتوانسته دسته‌بندی مناسب را پیدا کند. صورت سود و زیان (P&L) به چهار صفحه می‌رسد. مالک کسب‌وکار نمی‌تواند تشخیص دهد که آیا شرکت سودده است یا خیر. هیچ‌کس در شش سال گذشته به این ساختار دست نزده است، چون فکر کردن به اصلاح آن هم طاقت‌فرساست.

یک فهرست حساب‌ها (COA) قرار است پاسخی به یک سؤال ساده باشد: پول ما از کجا آمده و به کجا رفته است؟ وقتی فهرست حساب‌ها دیگر به این سؤال پاسخ ندهد، صورت‌های مالی به کاغذ دیواری تبدیل می‌شوند؛ چیزی که فقط برای بانک چاپ می‌کنید و بقیه سال نادیده‌اش می‌گیرید. راه حل، افزایش تعداد حساب‌ها نیست؛ بلکه کاهش آن‌ها و چیدمان هدفمند است.

این راهنما گام‌به‌گام نحوه طراحی یک فهرست حساب‌ها را توضیح می‌دهد که صورت‌های مالیِ قابل‌درک تولید کند: چگونه آن‌ها را شماره‌گذاری کنید، چه زمانی از حساب‌های معین در مقابل ابعاد (Dimensions) استفاده کنید، با دپارتمان‌ها و شعبه‌ها چه کنید و چگونه تورمِ حساب‌ها که گزارش‌های مفید را به نویز تبدیل می‌کند، شناسایی کنید.

هدف واقعی فهرست حساب‌ها چیست؟

فهرست حساب‌ها در واقع نمایه (Index) دفتر کل شماست. هر تراکنشی که در کسب‌وکارتان ثبت می‌شود — هر فاکتور، هر چک حقوق، هر کارمزد بانکی — در یکی از این حساب‌ها می‌نشیند. سپس این حساب‌ها در پنج دسته‌بندی اصلی که صورت‌های مالی را می‌سازند، تجمیع می‌شوند:

  • دارایی‌ها (کدهای ۱۰۰۰) — آنچه کسب‌وکار مالک آن است: نقدینگی، حساب‌های دریافتنی، تجهیزات، پیش‌پرداخت‌ها.
  • بدهی‌ها (کدهای ۲۰۰۰) — آنچه کسب‌وکار بدهکار است: حساب‌های پرداختنی، کارت‌های اعتباری، وام‌ها، درآمد معوق.
  • حقوق صاحبان سهام (کدهای ۳۰۰۰) — ادعای مالک بر کسب‌وکار: آورده سرمایه، سود انباشته، سود تقسیمی.
  • درآمدها (کدهای ۴۰۰۰) — آنچه مشتریان به شما پرداخت می‌کنند.
  • هزینه‌ها (کدهای ۵۰۰۰، ۶۰۰۰، ۷۰۰۰) — هزینه‌هایی که برای کسب آن درآمد صرف شده است. بهای تمام‌شده کالای فروش‌رفته معمولاً در کدهای ۵۰۰۰؛ هزینه‌های عملیاتی در کدهای ۶۰۰۰؛ و اقلام غیرعملیاتی مانند هزینه بهره اغلب در کدهای ۷۰۰۰ قرار می‌گیرند.

این ساختارِ پنج‌گانه جهانی است. یک کافی‌شاپ، یک استارتاپ نرم‌افزاری (SaaS)، یک بنیاد خصوصی و یک شرکت حمل‌ونقل کالا، همگی از همین پنج دسته استفاده می‌کنند. آنچه تفاوت دارد، جزئیات داخل هر دسته است و دقیقاً همین‌جاست که اکثر فهرست‌های حساب‌ها از مسیر خارج می‌شوند.

شماره‌گذاری: فضایی برای رشد باقی بگذارید

قرارداد شماره‌گذاری مهم‌تر از آن چیزی است که به نظر می‌رسد. یک طرح خوب به خواننده اجازه می‌دهد با یک نگاه به هر ردیف تراکنش، دسته‌بندی آن را بدون فکر کردن بفهمد. یک طرح بد، هر حسابداری را مجبور می‌کند تا یک نقشه سفارشی را حفظ کند.

رایج‌ترین قرارداد، سیستم چهار رقمی است: رقم اول نوع حساب را نشان می‌دهد و سه رقم باقی‌مانده ۹۹۹ جایگاه در آن نوع به شما می‌دهد. سیستم‌های سه رقمی برای کسب‌وکارهای بسیار کوچک جواب می‌دهند، اما سیستم چهار رقمی هزینه‌ای برای شما ندارد و از پروژه تغییر شماره‌گذاری که گریبان‌گیر هر شرکت در حال رشدی می‌شود، جلوگیری می‌کند. سیستم‌های پنج رقمی زمانی مفید هستند که بخواهید رقم اول را به کد شرکت یا واحد در یک گروه چند-شرکتی اختصاص دهید.

یک ترفند که همیشه شما را نجات می‌دهد این است: فاصله بگذارید. حساب‌های خود را با گام‌های ۱۰ یا ۲۰ تایی شماره‌گذاری کنید.

1000  موجودی نقد
1010  حساب جاری — عملیاتی
1020  حساب جاری — حقوق و دستمزد
1030  پس‌انداز
1040  حساب بازار پول

شش ماه بعد، وقتی یک حساب جدید با سود بالا باز می‌کنید، می‌توانید آن را در کد ۱۰۱۵ قرار دهید بدون اینکه نیاز باشد شماره‌های بعدی را تغییر دهید. نرم‌افزارهایی مثل کوییک‌بوکس (QuickBooks) به شما اجازه می‌دهند بر اساس شماره حساب مرتب‌سازی کنید، بنابراین حساب جدید به‌طور خودکار در جای درست قرار می‌گیرد. شماره‌گذاری متوالی (۱۰۰۰، ۱۰۰۱، ۱۰۰۲) شاید مرتب به نظر برسد، اما شما را مجبور می‌کند که یا هر بار با اضافه کردن یک حساب کل فهرست را بازشماری کنید، یا با ترتیبی سر کنید که دیگر با منطق کسب‌وکار شما همخوانی ندارد.

یک نقشه شماره‌گذاری کاربردی برای یک کسب‌وکار کوچک به این صورت است:

  • ۱۰۹۹–۱۰۰۰ نقد و معادل‌های نقد
  • ۱۱۹۹–۱۱۰۰ حساب‌های دریافتنی و ذخایر
  • ۱۲۹۹–۱۲۰۰ موجودی کالا
  • ۱۴۹۹–۱۳۰۰ پیش‌پرداخت‌ها، سپرده‌ها و سایر دارایی‌های جاری
  • ۱۷۹۹–۱۵۰۰ دارایی‌های ثابت و استهلاک انباشته
  • ۱۹۹۹–۱۸۰۰ دارایی‌های نامشهود و بلندمدت
  • ۲۰۹۹–۲۰۰۰ حساب‌های پرداختنی
  • ۲۱۹۹–۲۱۰۰ بدهی‌های ذخیره‌شده (حقوق، مالیات، بهره)
  • ۲۳۹۹–۲۲۰۰ کارت‌های اعتباری
  • ۲۴۹۹–۲۴۰۰ وام‌های کوتاه‌مدت و حصه جاری بدهی‌های بلندمدت
  • ۲۹۹۹–۲۵۰۰ بدهی‌های بلندمدت، درآمد معوق
  • ۳۹۹۹–۳۰۰۰ حقوق صاحبان سهام (آورده شرکا، سود انباشته، سود تقسیمی)
  • ۴۹۹۹–۴۰۰۰ درآمدها
  • ۵۹۹۹–۵۰۰۰ بهای تمام‌شده کالای فروش‌رفته
  • ۶۹۹۹–۶۰۰۰ هزینه‌های عملیاتی
  • ۷۹۹۹–۷۰۰۰ سایر درآمدها و هزینه‌ها (بهره، سود حاصل از فروش دارایی، مالیات)

این یک نقطه شروع است، نه یک وحی منزل. نکته کلیدی این است که هر بازه معنای مشخصی داشته باشد و در داخل هر بازه فضای کافی برای افزودن حساب بدون جابه‌جا کردن دسته بعدی وجود داشته باشد.

کوچک شروع کنید. حتی در حد افراطی.

بزرگترین اشتباه صاحبان کسب‌وکارهای جدید این است که دفاتر خود را با ۸۰ حساب که از یک قالب آماده برداشته‌اند، باز می‌کنند. آن‌ها هرگز از ۶۰ مورد از آن حساب‌ها استفاده نمی‌کنند. آن ۶۰ حسابِ بدون استفاده، هزینه‌زا هستند؛ آن‌ها کدگذاری هر تراکنش را سخت‌تر، رفع مغایرت را کندتر و خواندن هر گزارش را طولانی‌تر می‌کنند.

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

آزمون اینکه آیا یک حساب ارزش ایجاد شدن دارد ساده است: آیا من به دلیل وجود این حسابِ مجزا، تصمیم متفاوتی خواهم گرفت؟ اگر بله، آن را نگه دارید. اگر نه، آن را در یک حساب کل یا معینِ والد ادغام کنید.

"ملزومات اداری" یک حساب است. "خودکار" یک حساب نیست.

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

زیرحساب‌ها زمانی مفید هستند که نیاز دارید هم جزئیات را ببینید و هم مجموع کل (rollup) را. مثال کلاسیک آن سفر است:

6400  Travel
6410   Travel — Airfare
6420   Travel — Lodging
6430   Travel — Ground Transport
6440   Travel — Meals

در صورت سود و زیان (P&L)، می‌توانید برای مشاهده ترکیب هزینه‌ها هر چهار زیرحساب را نشان دهید، یا برای ارائه به بانک، آن‌ها را در یک سطر واحد "سفر" جمع کنید. رابطه والد-فرزندی به شما اجازه می‌دهد هر دو نما را از یک مجموعه آرتیکل‌های دفتر روزنامه به‌دست آورید.

قاعده سرانگشتی که زیرحساب‌ها را در وضعیت بهینه نگه می‌دارد: حداکثر سه سطح سلسله‌مراتب. فراتر از سه سطح، شما در حال ساختن یک پایگاه داده هستید، نه یک کدینگ حساب‌ها. اگر متوجه شدید که به چهار یا پنج سطح نیاز دارید، چیزی که واقعاً می‌خواهید یک کدینگ عمیق‌تر نیست — بلکه «ابعاد» (Dimensions) است.

چه زمانی به‌جای حساب‌های بیشتر از ابعاد استفاده کنیم

اینجاست که اکثر کسب‌وکارهای کوچک خود را در چاله می‌اندازند.

شما سه شعبه دارید. پنج خط تولید دارید. به دو بخش مشتری خدمات می‌دهید. بنابراین حساب‌های زیر را ایجاد می‌کنید:

6010  Rent — Location A
6011  Rent — Location B
6012  Rent — Location C
6110  Marketing — Product Line 1
6111  Marketing — Product Line 2
...

تا زمانی که مکان‌ها، خطوط تولید و بخش‌های مشتری را در ساختار حساب‌های خود ضرب کنید، با یک ماتریس غیرقابل مدیریت و کدینگی با ۶۰۰ حساب مواجه خواهید شد. هر مکان جدید موجی از حساب‌های جدید را ایجاد می‌کند. هر حساب باید به خاطر سپرده شود، به‌طور مداوم استفاده شود و به هر استخدام جدید آموزش داده شود.

الگوی تمیزتر، حسابداری ابعادی (Dimensional Accounting) است: کدینگ را کوچک نگه دارید و هر تراکنش را با ویژگی‌هایی مانند مکان، پروژه، واحد یا مشتری برچسب‌گذاری کنید. اکثر پلتفرم‌های مدرن حسابداری این کار را از طریق کلاس‌ها (Classes)، تگ‌ها، پروژه‌ها، مکان‌ها یا بخش‌های سفارشی پشتیبانی می‌کنند. ابزارهای حسابداری متن-محور (Plain-text accounting) مانند Beancount این کار را به‌طور بومی با متادیتا و تگ‌های نام‌گذاری شده در هر ثبت حسابداری انجام می‌دهند.

یک رویکرد ابعادی، این ساختار:

6010 Rent — Location A
6011 Rent — Location B
6012 Rent — Location C

را به این شکل تبدیل می‌کند:

6010 Rent  [location: A]
6010 Rent  [location: B]
6010 Rent  [location: C]

یک حساب. سه گزارش. وقتی شعبه D را افتتاح می‌کنید، هیچ تغییری در کدینگ ایجاد نمی‌کنید — فقط شروع به برچسب‌گذاری تراکنش‌های جدید با location: D می‌کنید. کدینگ حساب‌ها تمیز می‌ماند و گزارش‌دهی غنی‌تر می‌شود.

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

الگوهای صنعتی برای الگوبرداری

اگرچه هر کسب‌وکاری در نهایت کدینگ حساب‌های (COA) خود را سفارشی می‌کند، الگوهای خاصی در صنایع تکرار می‌شوند و کپی کردن آن‌ها ارزان‌تر از اختراع دوباره آن‌هاست.

خرده‌فروشی و تجارت الکترونیک

موجودی کالا غالب است. شما زیرحساب‌هایی زیر مجموعه موجودی کالا برای مواد اولیه، کالای در راه، کالای ساخته شده و مرجوعی‌ها می‌خواهید. بهای تمام شده کالای فروش رفته (COGS) باید هزینه کالا را از هزینه حمل خرید، کارمزدهای درگاه پرداخت و کسری و ضایعات جدا کند. درآمد حمل‌ونقل و هزینه حمل‌ونقل معمولاً هر کدام حساب خاص خود را دارند زیرا تمایز ناخالص/خالص برای تحلیل حاشیه سود اهمیت دارد.

خدمات و مشاوره

موجودی کالا به صفر متمایل می‌شود. درآمد بر اساس نوع خدمات — حق‌الزحمه ثابت، ساعتی، قرارداد ثابت (Retainer) — بخش‌بندی می‌شود تا بتوانید ببینید کدام مدل تعامل واقعاً سودآور است. هزینه‌های پیمانکاران و مجوزهای حرفه‌ای معمولاً به دلیل بزرگ بودن، متغیر بودن و مرتبط بودن با تصمیم‌گیری، حساب‌های مجزای خود را می‌طلبند.

نرم‌افزار به عنوان سرویس (SaaS) و اشتراکی

شما به دلیل استانداردهایی مانند ASC 606 با درآمد معوق، درآمد تعهدی و هزینه‌های قرارداد معوق در ترازنامه سر و کار خواهید داشت. حساب‌های درآمدی بین درآمد اشتراک، درآمد اجرا/یک‌باره و درآمد مبتنی بر مصرف تقسیم می‌شوند. در بخش هزینه‌ها، هزینه میزبانی/زیرساخت معمولاً شایسته یک سطر هزینه عملیاتی مجزا است و نباید در "نرم‌افزار" دفن شود.

سازمان‌های غیرانتفاعی

دارایی‌های خالص جایگزین حقوق صاحبان سهام می‌شوند و کدینگ بین محدود نشده، محدود شده موقت و محدود شده دائم تقسیم می‌شود. هزینه‌ها باید بر اساس عملکرد — برنامه، مدیریت، جذب سرمایه — برای گزارش‌های قانونی و صورت‌های مالی حسابرسی شده قابل گزارش باشند. اکثر سازمان‌های غیرانتفاعی بخش عملکردی را به‌جای سه‌برابر کردن هر حساب هزینه، با یک بُعدِ واحد یا کلاس مدیریت می‌کنند.

نزدیک‌ترین الگو را انتخاب کنید، آن را ساده کنید و از آنجا سفارشی‌سازی را انجام دهید.

تست تورم: آیین پاکسازی پایان سال

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

این آیین پاکسازی را هر سال در دی‌ماه (ژانویه) یا اگر حسابدار شما تغییر می‌کند، به‌صورت فصلی انجام دهید:

۱. یک تراز آزمایشی بگیرید. هر حسابی که در کل سال مانده صفر داشته است، کاندیدای بایگانی است. ۲. صورت سود و زیان را با نمایش تمام حساب‌ها و مرتب‌شده بر اساس مبلغ بگیرید. هر چیزی کمتر از یک آستانه معنادار — برای یک کسب‌وکارهای کوچک، اغلب هر چیزی زیر ۱۰۰۰ دلار — کاندیدای ادغام در حساب والد است. ۳. به دنبال موارد تکراری بگردید. "اشتراک‌های نرم‌افزاری"، "ابزارهای SaaS" و "سرویس‌های آنلاین" احتمالا بهتر است یک حساب باشند. یکی را انتخاب کنید و بقیه را در آن ادغام کنید. ۴. عمق زیرحساب‌ها را بررسی کنید. هر جا که از سه سطح فراتر رفته‌اید، بپرسید آیا عمیق‌ترین سطح واقعاً یک حساب است یا باید یک بُعد/تگ/کلاس باشد. ۵. کدینگ را مستند کنید. یک توضیح یک‌خطی برای هر حساب، تفاوت بین کدینگی است که از حسابدار بعدی جان سالم به در می‌برد و کدینگی که هر بار با آمدن فرد جدید از نو ساخته می‌شود.

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

چرا انضباط در دفترداری از خودِ سرفصل حساب‌ها مهم‌تر است

حتی یک سرفصل حساب‌های (Chart of Accounts) عالی نیز فقط به اندازه دفترداری پشت آن ارزش دارد. کدگذاری‌های ناهماهنگ، تمیزترین سرفصل‌های پنج صفحه‌ای را هم به آشفتگی می‌کشاند: هزینه‌های بازاریابی بین سه حساب مختلف تقسیم می‌شود چون کسی به نیروی جدید آموزش نداده است، برداشت‌های مالک یک ماه به عنوان سود توزیع شده و ماه دیگر به عنوان حقوق ثبت می‌شود، و اقلام بهای تمام شده (COGS) به هزینه‌های عملیاتی اختصاص می‌یابند چون دفتردار فقط حدس زده است. گزارش‌ها شروع به دروغ گفتن می‌کنند.

انضباطی که سرفصل حساب‌ها را مفید نگه می‌دارد، چندان پرزرق و برق نیست: یک راهنمای کدگذاری مکتوب تا هر دفتردار سرفصل‌ها را به یک شکل تفسیر کند، بستن حساب‌های ماهانه که انحرافات را قبل از انباشته شدن شناسایی می‌کند، و سوابق تحت کنترل نسخه تا بتوانید ردیابی کنید چرا یک حساب اضافه، تغییر نام یا بازنشسته شده است. کسب‌وکارهایی که با دفاتر خود به عنوان یک «سند زنده» برخورد می‌کنند (نه صرفاً یک تمرین مالیاتی در پایان سال)، گزارش‌های کاربردی‌تری از همان سرفصل‌هایی می‌گیرند که برای دیگران فقط نویز ایجاد می‌کند.

حسابداری متن‌ساده انضباط را آسان‌تر می‌کند

بسیاری از مشکلات سرفصل حساب‌ها که در بالا ذکر شد، در واقع مشکلات ابزاری هستند. منوهای کشویی با ۲۴۷ گزینه، مستعد کلیک‌های اشتباه هستند. قالب‌های پر شده با حساب‌های از پیش تعریف شده، باعث تشویق به تورم بی‌مورد حساب‌ها می‌شوند. نرم‌افزارهایی که سرفصل حساب‌ها را پشت یک رابط کاربری مخفی می‌کنند، دیدن کل ساختار را به صورت یکپارچه دشوار می‌سازند.

حسابداری متن‌ساده (Plain-text accounting) این وضعیت را تغییر می‌دهد. سرفصل حساب‌ها فقط لیستی از نام حساب‌ها در فایلی است که می‌توانید در ۳۰ ثانیه از بالا تا پایین آن را بخوانید. سلسله‌مراتب از طریق دو‌نقطه در نام‌ها ایجاد می‌شود: Expenses:Travel:Airfare به طور خودکار زیرحسابی از Expenses:Travel است که خود در Expenses تجمیع می‌شود. ابعاد به صورت برچسب (tag) روی ثبت‌های فردی هستند، نه بخش‌های کدگذاری شده ثابت. هر تغییر در سرفصل حساب‌ها در یک git diff با یک پیام کامیت که دلیل آن را توضیح می‌دهد، ظاهر می‌شود. اصلاحات پایان سال یک «پول ریکوئست» است، نه یک آخر هفته پر استرس در QuickBooks.

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

دفاتر خود را از روز اول صادقانه نگه دارید

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

سرویس Beancount.io حسابداری متن‌ساده‌ای را فراهم می‌کند که داشتن یک سرفصل حساب‌های تمیز و آگاهانه را به جای یک استثنا، به یک پیش‌فرض تبدیل می‌کند — شفاف، تحت کنترل نسخه و آماده برای هوش مصنوعی. به رایگان شروع کنید و ببینید چرا توسعه‌دهندگان و تیم‌های مالی به حسابداری متن‌ساده‌ای روی می‌آورند که واقعاً می‌توانند آن را درک کنند.