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

سطوح کدینگ حسابداری فروشگاهی
قبل از رسیدن به نمونه اجرایی، باید بدانید کدینگ روی چند سطح ساخته میشود. این ساختار مثل یک درخت است: هرچه پایینتر می روید، جزئیتر میشود.
سطح گروه حساب
بالاترین سطح، که ماهیت کلی حساب را نشان میدهد: دارایی، بدهی، حقوق صاحبان سرمایه، درآمد، هزینه و بهای تمامشده. معمولاً با یک یا دو رقم نشان داده میشود.
حساب کل
زیرمجموعهی هر گروه است و سرفصلهای کلیتر را مشخص میکند؛ مثلاً زیر گروه داراییها، حساب کل داراییهای جاری قرار میگیرد. معمولاً با کدی چهاررقمی نشان داده میشود که دو رقم اول آن، همان گروه حساب است.
حساب معین
جزئیتر از حساب کل است و معمولاً همان چیزی است که در فروشگاه بیشترین کاربرد را دارد؛ مثلاً زیر داراییهای جاری، حساب معین موجودی کالا یا صندوقها تعریف میشود. معمولاً با کد ششرقمی نشان داده میشود.
حساب تفصیلی
جزئیترین سطح، که برای شناسایی دقیق اشخاص، شعبهها یا انبارهای خاص به کار میرود؛ مثلاً صندوق شماره ۲ یا مشتری فلان شرکت.
کدینگ شناور چیست و چه زمانی به کار فروشگاه میآید؟
کدینگ شناور یعنی یک کد تفصیلی (مثلاً نام یک تأمینکننده) بتواند به چند حساب معین مختلف متصل شود، بدون اینکه لازم باشد آن کد را برای هر حساب از نو تعریف کنید. برای فروشگاههایی که با تعداد زیادی مشتری اعتباری یا تأمینکننده سروکار دارند، این ویژگی گزارشگیری را بسیار سادهتر میکند؛ چون دیگر لازم نیست کد هر شخص را زیر هر حساب جداگانه تعریف کنید.
مطالعه بیشتر: حسابداری پیمانکاری چیست | بررسی جامع ثبت و کدینگ حسابداری شرکت های پیمانکاری
نمونه کامل کدینگ حسابداری فروشگاهی (جدول اجرایی)
در جدول زیر، یک نمونه کامل و قابلاستفاده از درخت حسابهای یک فروشگاه را میبینید. اعداد صرفاً برای نمونه هستند و باید متناسب با تعداد حسابهای خودتان تنظیم شوند، اما منطق چینش آنها قابلاستفاده است.
حسابهای دارایی
| کد حساب | سطح | شرح سرفصل |
| ۱ | گروه | داراییها |
| ۱۰ | کل | داراییهای جاری |
| ۱۰۱۰۱ | معین | صندوق (به تفکیک هر صندوقدار در سطح تفصیلی) |
| ۱۰۱۰۲ | معین | بانک و کارتخوان (POS) (به تفکیک بانک/دستگاه) |
| ۱۰۱۰۳ | معین | موجودی کالا در انبار مرکزی |
| ۱۰۱۰۴ | معین | موجودی کالا در انبار شعب |
| ۱۰۱۰۵ | معین | کالای در راه (خریداریشده اما نرسیده به انبار) |
| ۱۰۱۰۶ | معین | مشتریان اعتباری (به تفکیک شخص در سطح تفصیلی) |
| ۱۰۱۰۷ | معین | اسناد دریافتنی (چکهای دریافتی از مشتریان) |
حسابهای بدهی
| کد حساب | سطح | شرح سرفصل |
| ۲ | گروه | بدهیها |
| ۲۰ | کل | بدهیهای جاری |
| ۲۰۱۰۱ | معین | حسابهای پرداختنی تجاری (تأمینکنندگان، به تفکیک شخص در سطح تفصیلی) |
| ۲۰۱۰۲ | معین | اسناد پرداختنی (چکهای صادرشده) |
| ۲۰۱۰۳ | معین | مالیات بر ارزشافزوده پرداختنی |
| ۲۰۱۰۴ | معین | بیمه و مالیات حقوق پرداختنی |
حسابهای درآمد و برگشت از فروش
| کد حساب | سطح | شرح سرفصل |
| ۴ | گروه | درآمدها |
| ۴۰ | کل | درآمدهای عملیاتی |
| ۴۰۰۰۱ | معین | فروش کالا (به تفکیک گروه کالایی) |
| ۴۰۰۰۲ | معین | برگشت از فروش |
| ۴۰۰۰۳ | معین | تخفیفات نقدی فروش |
| ۴۰۰۰۴ | معین | مالیات بر ارزشافزوده فروش |
بهای تمامشده و هزینههای خرید
| کد حساب | سطح | شرح سرفصل |
| ۵ | گروه | بهای تمامشده کالای فروشرفته |
| ۵۰ | کل | بهای تمامشده کالای فروشرفته (COGS) |
| ۵۰۰۰۱ | معین | خرید کالا (در روش ادواری) |
| ۵۰۰۰۲ | معین | برگشت از خرید |
| ۵۰۰۰۳ | معین | تخفیفات خرید |
| ۵۰۰۰۴ | معین | مالیات بر ارزشافزوده خرید |
| ۵۰۰۰۵ | معین | هزینه ضایعات و کسری کالا |
هزینههای عملیاتی فروشگاه
| کد حساب | سطح | شرح سرفصل |
| ۶ | گروه | هزینهها |
| ۶۰ | کل | هزینههای عملیاتی فروشگاه |
| ۶۰۰۰۱ | معین | اجاره و شارژ فروشگاه (به تفکیک شعبه در سطح تفصیلی) |
| ۶۰۰۰۲ | معین | حقوق و دستمزد پرسنل فروش |
| ۶۰۰۰۳ | معین | آب، برق، گاز و تلفن |
| ۶۰۰۰۴ | معین | هزینههای تبلیغات و بازاریابی |
| ۶۰۰۰۵ | معین | کارمزد بانکی و کارتخوان |
بدون این گروه، هزینههای ثابت فروشگاه یا زیر بهای تمامشده کالا قاطی میشوند یا اصلاً جایی برای ثبت ندارند و در هر دو حالت، محاسبه سود خالص واقعی (نه فقط سود ناخالص) غیرممکن میشود.
نکته مهم درباره مالیات بر ارزشافزوده: خیلی از فروشگاهها این را زیر یک حساب کلی و مبهم میگذارند، در حالی که تفکیک «مالیات ارزشافزوده خرید» از «مالیات ارزشافزوده فروش» (همانطور که در جدول بالا آمده) باعث میشود در پایان دوره، محاسبه مالیات قابلپرداخت یا قابلاسترداد، بدون سردرگمی انجام شود.
آیا کدینگ باید متناسب با اندازه و نوع فروشگاه طراحی شود؟
بله و این دقیقاً نکتهای است که خیلی از راهنماها نادیده میگیرند. اصل کدینگ برای همه فروشگاهها یکسان است، اما عمق و جزئیات آن باید با اندازه و مدل فروشگاه هماهنگ شود.
کدینگ برای یک فروشگاه تکشعبه
در این حالت، نیازی به تفکیک «انبار مرکزی» و «انبار شعبه» نیست؛ میتوانی یک حساب معین برای موجودی کالا داشته باشید و جزئیات را در سطح تفصیلی (مثلاً به تفکیک گروه کالایی) باز کنید. کدینگ میتواند سادهتر و کمسطحتر باشد.
کدینگ برای فروشگاههای زنجیرهای یا چندشعبهای
اینجاست که کدینگ شناور و تفکیک دقیق واقعاً اهمیت پیدا میکند. باید برای هر شعبه، کد تفصیلی جداگانه برای صندوق، موجودی کالا و حتی مشتریان اعتباری آن شعبه تعریف کنید. بدون این تفکیک، فهمیدن اینکه کدام شعبه سودآورتر است یا کدام شعبه کسری موجودی دارد، عملاً غیرممکن میشود.
کدینگ برای فروشگاههای آنلاین یا ترکیبی
اگر فروشگاه هم حضوری و هم آنلاین میفروشد، باید درگاههای پرداخت آنلاین را جدا از کارتخوانهای حضوری کد بگذارید، و موجودی کالای اختصاصیافته به سفارشهای آنلاین (که هنوز ارسال نشده) را هم بهعنوان یک زیرمجموعه مجزا از موجودی کالا در نظر بگیرید. این تفکیک باعث میشود بدانید هر کانال فروش چقدر سودآور است.

اشتباهات رایج در طراحی کدینگ حسابداری فروشگاهی
قبل از نهایی کردن کدینگ، این اشتباهات را چک کند، اکثر مشکلاتی که بعداً در گزارشگیری پیش میآید، از همینجا شروع میشود:
کدگذاری تکتک کالاها در سطح معین. این کار درخت حساب را غیرقابلکنترل و سنگین میکند. جزئیات کالا باید در سیستم انبارداری یا در سطح تفصیلی مدیریت شود، نه در سطح معین حسابداری.
ادغام حساب فروش خالص با برگشت از فروش و تخفیفات. وقتی اینها را جدا کد نگذارید، سود ناخالص واقعی فروشگاه را نمیبینید و فقط یک عدد مبهم به دستتان میرسد.
نبود تفکیک صندوقها و کارتخوانها به تفکیک مسئول یا دستگاه. فرض کنید سه دستگاه کارتخوان در فروشگاه دارید و همهشان زیر یک کد «بانک» ثبت میشوند. وقتی صورتحساب بانکی میرسد و مبلغ واریزی هر روز با جمع فروش کارتخوانها یکی نیست، دیگر نمیتوانید بفهمید مغایرت مربوط به کدام دستگاه یا کدام تسویه است و باید کل تراکنشهای آن روز را دستی چک کنید. اگر هر کارتخوان کد تفصیلی جدا داشته باشد، مغایرتگیری بانکی فقط چند دقیقه طول میکشد، چون هر واریزی بانکی مستقیماً با کد همان دستگاه قابل تطبیق است.
نادیدهگرفتن تفاوت روش دائمی و ادواری در طراحی کد موجودی. در روش دائمی، هر فروش بلافاصله از حساب موجودی کالا کسر میشود؛ در روش ادواری، بهجای آن حساب «خرید» بدهکار میشود و موجودی فقط در پایان دوره و بعد از انبارگردانی محاسبه میشود. اگر کدینگ را متناسب با روش انتخابی طراحی نکنید، محاسبات بهای تمامشده اشتباه از آب درمیآید.
مطالعه بیشتر: حسابداری دائمی و ادواری: کدام برای کسبوکار شما بهتر است؟
تأثیر کدینگ درست بر گزارشهای مالی و تصمیمگیری فروشگاه
فرض کنید برگشت از فروش را جدا کد نگذاشتهاید و همهچیز زیر یک حساب «فروش» ثبت شده. در این حالت، وقتی گزارش سود و زیان را نگاه میکنید، عدد فروش را بالاتر از واقعیت میبینید و متوجه نمیشوید چه بخشی از آن، در واقع کالای برگشتی بوده است. همین یک مورد کوچک، میتواند تصمیمگیری درباره قیمتگذاری یا سفارش مجدد کالا را کاملاً اشتباه کند.
به همین شکل، اگر موجودی کالا بهتفکیک انبار یا شعبه کد نگرفته باشد، هیچوقت متوجه نمی شوید کدام شعبه دچار کسری یا ضایعات بیشتری میشود. کدینگ درست یعنی گزارش سود و زیان، ترازنامه و گزارش انبار، همگی از یک منبع قابلاعتماد بیرون بیایند نه از حدس و بازسازی دستی در پایان ماه.

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

