كيف تبني تطبيق فوترة
يحتفظ تطبيق الفوترة بقائمة من العملاء، ويتيح لك إنشاء فواتير ببنود وضريبة، ويمنح كل فاتورة رقماً فريداً، وينتج ملف PDF أو رابطاً يفتحه العميل، ويتتبع ما إذا كانت الفاتورة قد دُفعت. النسخة الأولى تطبيق قاعدة بيانات مباشر يمكنك بناؤه بالذكاء الاصطناعي في مساء أو مساءين. أما التفاصيل المهمة، كالترقيم والضريبة والفواتير المقفلة وحالة الدفع، فهي ما يفصل الأداة التجريبية عن شيء يمكنك إرساله إلى عميل.
حدّد نوع أداة الفوترة التي تحتاجها
عبارة «تطبيق فوترة» تغطي عدة أشياء مختلفة. اختر واحداً قبل أن تبدأ:
| النوع | من يستخدمه | ما الذي يميزه |
|---|---|---|
| مولّد فواتير شخصي | عامل حر | نشاط تجاري واحد، وملف PDF سريع، وقائمة بسيطة بمن دفع |
| أداة فوترة للأعمال | فريق صغير | عدة مستخدمين، وقائمة عملاء مشتركة، وتقارير |
| فوترة داخل تطبيق أكبر | عملاؤك أو موظفوك | فواتير تُنشأ من وظائف أو حجوزات أو ساعات عمل تتتبعها أصلاً |
| منتج فوترة للآخرين | أعمال كثيرة | كل حساب يرى بياناته فقط، وهذا هو SaaS |
النوع الثالث هو المكان الذي يحقق فيه البناء الخاص أكبر فائدة: إذا كنت تسجّل الوظائف أو الساعات أصلاً، فإن توليد الفاتورة من هذه البيانات يوفّر إعادة الكتابة. والنوع الرابع هو MVP لتطبيق SaaS كامل، له همومه الخاصة المتعلقة بالحسابات والفوترة.
نموذج البيانات
أربعة جداول تغطي معظم الاحتياجات:
- إعدادات النشاط التجاري: اسمك، والعنوان، والرقم الضريبي أو رقم ضريبة القيمة المضافة، والشعار، وبيانات الحساب البنكي، وشروط الدفع الافتراضية، ونسبة الضريبة الافتراضية، والعملة، ورقم الفاتورة التالي.
- العملاء: الاسم، والشركة، والبريد، وعنوان الفوترة، ورقمهم الضريبي عند الحاجة، والشروط الافتراضية.
- الفواتير: الرقم، والعميل، وتاريخ الإصدار، وتاريخ الاستحقاق، والحالة، والعملة، والملاحظات، والإجماليات (المجموع الفرعي، والضريبة، والمجموع الكلي).
- بنود الفاتورة: الفاتورة، والوصف، والكمية، وسعر الوحدة، ونسبة الضريبة، وإجمالي البند.
أضف جدول المدفوعات إذا كان العملاء يدفعون على دفعات أو بعدة طرق: الفاتورة، والتاريخ، والمبلغ، وطريقة الدفع، والمرجع.
القواعد التي تهم
هذه الأجزاء لن يُحسنها منشئو التطبيقات بالذكاء الاصطناعي ما لم تطلبها:
- أرقام متسلسلة وفريدة. تتطلب كثير من الأنظمة الضريبية أن تكون أرقام الفواتير فريدة ومتسلسلة. أنشئ الرقم على الخادم عند إصدار الفاتورة، لا عند إنشاء المسودة، حتى لا تترك المسودات المهجورة فجوات.
- اقفل الفواتير المُرسلة. بمجرد إرسال الفاتورة، فإن تعديلها بصمت مشكلة. اسمح بالتعديل على المسودات فقط؛ وأما الفاتورة المُرسلة فألغها وأصدر فاتورة جديدة، أو أصدر إشعار دائن.
- احفظ نسخة من بيانات العميل. إذا غيّر العميل عنوانه العام القادم، فيجب أن تظهر فواتير العام الماضي بالعنوان القديم. انسخ بيانات العميل إلى الفاتورة عند إصدارها.
- المال كوحدات صحيحة من أصغر فئة. خزّن المبالغ بالسنتات (أو البنسات)، لا كأرقام عشرية، حتى لا تنحرف الإجماليات بسبب التقريب. وقرّب الضريبة بالطريقة التي تتوقعها جهة الضرائب، لكل بند أو لكل فاتورة.
- حالة تتبع الواقع. مسودة، مُرسلة، مدفوعة، مدفوعة جزئياً، متأخرة، ملغاة. ويجب أن تُحسب حالة «متأخرة» من تاريخ الاستحقاق، لا أن تُضبط يدوياً.
ملف PDF أم صفحة فاتورة؟
يتوقع العملاء ملف PDF، لكن صفحة الويب أسهل في إبقائها متزامنة. وتقدم معظم أدوات الفوترة الاثنين:
- صفحة فاتورة قابلة للمشاركة برابط يصعب تخمينه، فيستطيع العميل عرض الفاتورة ودفعها دون تسجيل دخول.
- تنزيل ملف PDF يُنشأ من البيانات نفسها، ويحمل شعارك وبياناتك.
اطلب تخطيطاً مناسباً للطباعة، وتحقق من ملف PDF على حجم الورق (A4 أو US Letter). وينبغي أن تنتقل قوائم البنود الطويلة إلى الصفحة التالية بشكل نظيف.
الحصول على المدفوعات إلكترونياً
عرض بيانات الحساب البنكي على الفاتورة يكفي كثيراً من الأعمال. إذا أردت مدفوعات بالبطاقة، فاربط مزوّد دفع:
- Stripe Checkout أو رابط دفع بمبلغ الفاتورة. يضغط العميل «ادفع الآن» في صفحة الفاتورة.
- إشعار webhook من المزوّد يخبر تطبيقك بنجاح الدفع، فيعلّم التطبيق الفاتورة كمدفوعة. لا تعلّمها مدفوعة لمجرد أن العميل عاد إلى صفحة نجاح، فتلك الصفحة يمكن الوصول إليها دون دفع. راجع كيف تضيف المدفوعات إلى تطبيقك.
- وضع الاختبار أولاً. استخدم مفاتيح الاختبار الخاصة بالمزوّد وبطاقات الاختبار حتى يعمل التدفق كاملاً.
ومما يستحق المعرفة: تقدم Stripe أيضاً منتج فوترة خاصاً بها مع صفحات فواتير مستضافة، اعتباراً من سبتمبر 2026. إذا كان كل ما تحتاجه هو إرسال فاتورة والحصول على المال، فقد يكفي ذلك وحده.
التذكيرات
رسائل البريد التلقائية «فاتورتك مستحقة الدفع» من أكثر الميزات المرغوبة، ومن أسهلها في الوقت نفسه أن تُنفَّذ بشكل خاطئ. تحتاج إلى:
- مزوّد بريد (Resend أو Postmark أو SendGrid وغيرها). راجع إرسال رسائل البريد من تطبيقك.
- شيء يعمل وفق جدول زمني لإيجاد الفواتير المتأخرة. التطبيق المنشور الذي ينام عند الخمول لن يستيقظ من تلقاء نفسه، فاسأل المُنشئ كيف سيتم تشغيل الفحص، مثلاً عبر استدعاء مجدول من خدمة cron خارجية إلى نقطة نهاية في تطبيقك.
- سجل بالتذكيرات المُرسلة، حتى لا يتلقى أحد البريد نفسه مرتين.
ابدأ بزر يدوي «أرسل تذكيراً»، وأتمت الأمر لاحقاً.
موجّه أول يعمل
ابنِ تطبيق فوترة لعملي في تصميم المواقع. أسجّل الدخول وأدير العملاء (الاسم، والشركة، والبريد، وعنوان الفوترة، والرقم الضريبي). أُنشئ فواتير ببنود (الوصف، والكمية، وسعر الوحدة)، ونسبة ضريبة لكل بند، وأرى المجموع الفرعي والضريبة والإجمالي تُحسب مباشرة. أرقام الفواتير متسلسلة (INV-0001، INV-0002) وتُعيَّن عندما أضع الفاتورة كمُرسلة؛ المسودات تبقى قابلة للتعديل، والفواتير المُرسلة مقفلة. لكل فاتورة حالة (مسودة، مُرسلة، مدفوعة، متأخرة) وتاريخ استحقاق؛ وتُحسب «متأخرة» من تاريخ الاستحقاق. لكل فاتورة رابط مشاركة خاص وتنزيل PDF بشعاري وبياناتي البنكية. تعرض لوحة التحكم إجمالي المستحق والمتأخر. خزّن المبالغ بالبنسات. الجنيه الإسترليني فقط. احفظ كل شيء في قاعدة بيانات.
خطوات البناء
- الإعدادات والعملاء أولاً. اجعل بياناتك التجارية وقائمة العملاء تعمل، لأن كل فاتورة تعتمد عليهما.
- محرر الفواتير. البنود والضريبة والإجماليات. اختبر بأرقام صعبة، مثل 3 × 33.33 جنيهاً بضريبة 20%، وتحقق من الإجماليات بآلة حاسبة.
- الترقيم والقفل. أصدر ثلاث فواتير، واحذف مسودة، ثم أصدر فاتورة أخرى. يجب أن تبقى الأرقام متسلسلة بلا فجوات أو تكرار.
- صفحة الفاتورة وملف PDF. افتح رابط المشاركة في نافذة خاصة. اطبع ملف PDF.
- المدفوعات. أضف Stripe في وضع الاختبار، وادفع فاتورة ببطاقة اختبار، وتأكد من أن الـ webhook يعلّمها كمدفوعة.
- فحص الأمان. سجّل الخروج، وحاول فتح فاتورة عميل آخر بتغيير المعرّف في الرابط. يجب أن يعمل الرابط الخاص فقط، وألا يكشف فواتير أخرى. تحتوي قائمة فحص الأمان للتطبيقات المبنية بالذكاء الاصطناعي على المزيد مما يمكن تجربته.
- التصدير. أضف تصدير CSV للفواتير والمدفوعات لمحاسبك.
أخطاء شائعة
- الأرقام العشرية العائمة للمال. أن يكون 0.1 + 0.2 لا يساوي 0.3 خطأ حقيقي في تطبيقات حقيقية. خزّن الوحدات الصغرى الصحيحة.
- فواتير مُرسلة قابلة للتعديل. تغيير الفاتورة بعد أن يحصل العميل عليها يسبب نزاعات ومشاكل محاسبية.
- تعيين الأرقام عند المسودة. يسبب فجوات وارتباكاً.
- روابط فواتير يسهل تخمينها. الرابط
/invoice/42يدعو أحداً لتجربة/invoice/43. استخدم رموزاً عشوائية طويلة. - افتراض قاعدة ضريبية واحدة. تختلف نسب الضريبة والعكس الضريبي (reverse charge) والصياغة المطلوبة حسب البلد ونوع العميل. اسأل محاسباً، ولا تترك الذكاء الاصطناعي يخمّن.
- عدم وجود نسخة احتياطية. الفواتير سجلات قد تُلزم بحفظها لسنوات. صدّر بانتظام، وإن سمحت خطتك بذلك فاحفظ الكود في GitHub.
التكاليف والأدوات
| المكوّن | ما الغرض منه | ملاحظات |
|---|---|---|
| منشئ التطبيقات / الاستضافة / قاعدة البيانات | بناء التطبيق وتشغيله | في Mythex، رصيد واحد من الاعتمادات يغطي كل هذه الأمور، راجع الأسعار |
| مزوّد الدفع | المدفوعات بالبطاقة | يفرض رسوماً لكل معاملة؛ راجع الأسعار الحالية للمزوّد في بلدك |
| مزوّد البريد | إرسال الفواتير والتذكيرات | كثير منها له خطط مجانية عند الحجم المنخفض |
| النطاق | روابط فواتير احترافية | اختياري، ويُدفع سنوياً |
متى يكون برنامج الفوترة الجاهز هو الأفضل؟
ابنِ أداتك عندما تكون الفوترة جزءاً من سير عملك الخاص، أو عندما تريد أداة مصممة بالضبط حول طريقة فوترتك، أو عندما تضيف الفواتير إلى تطبيق لديك أصلاً. واختر برنامج محاسبة أو فوترة راسخاً عندما:
- تحتاج إلى مسك الدفاتر، والبنوك، وتتبع المصروفات، والإقرارات الضريبية في مكان واحد.
- يفرض بلدك الفوترة الإلكترونية بصيغة محددة أو عبر قناة معتمدة.
- تفضّل أن يعمل محاسبك في أداة يعرفها أصلاً.
وهناك حل وسط شائع: ابنِ الجزء الخاص بعملك (الوظائف، وساعات العمل، وبوابة عملاء يرى فيها العملاء فواتيرهم)، وصدّر الأرقام إلى برنامج المحاسبة. يشرح البناء مقابل الشراء للبرمجيات في الأعمال الصغيرة هذا القرار.
البناء مع Mythex
في Mythex تصف تطبيق الفوترة في المحادثة وتراه يتشكل في معاينة حية. يضيف قاعدة بيانات عندما يحتاجها التطبيق، ويحفظ مفاتيح الواجهات البرمجية، مثل مفتاح Stripe السري، في أسرار المشروع، وينشر التطبيق على رابط تستخدمه فوراً. توضح وصفة Stripe في الوثائق إعداد استخدام مفاتيحك الخاصة. وللبدء بموجّه يصف الأساسيات، جرّب قالبَي مولّد الفواتير أو فوترة العمل الحر.
الأسئلة
ما الميزات التي يحتاجها تطبيق الفوترة؟
قائمة عملاء، وفواتير ببنود وضريبة وإجماليات، وأرقام فواتير فريدة متسلسلة، وصفحة فاتورة قابلة للمشاركة أو ملف PDF، وحالة لكل فاتورة (مسودة، مُرسلة، مدفوعة، متأخرة). والإضافات الأكثر فائدة بعد ذلك هي الدفع الإلكتروني والتذكيرات.
هل يستطيع تطبيق الفوترة قبول مدفوعات بالبطاقة؟
نعم، عبر مزوّد دفع مثل Stripe. يُنشئ التطبيق رابط دفع أو صفحة دفع بمبلغ الفاتورة، وعندما ينجح الدفع يرسل المزوّد إشعاراً (webhook) يعلّم الفاتورة كمدفوعة.
هل من القانوني استخدام تطبيق فوترة خاص بي؟
عموماً نعم، لكن للفواتير متطلبات قانونية في المحتوى تختلف من بلد لآخر: بيانات البائع، والأرقام الضريبية، والتواريخ، وتفصيل الضريبة، وبعض الدول تشترط الفوترة الإلكترونية بصيغة محددة. تحقق من ذلك مع محاسب لتعرف ما ينطبق عليك قبل الاعتماد عليه.
هل أبني تطبيق فوترة أم أستخدم برنامج محاسبة؟
استخدم برنامج محاسبة إذا كنت تحتاج إلى مسك الدفاتر أو تقديم الإقرارات الضريبية أو التسوية البنكية. ابنِ تطبيقك إذا كانت الفوترة مرتبطة بسير عملك الخاص، مثل الوظائف أو ساعات العمل أو المشاريع، أو إذا أردت أداة بسيطة دون رسوم لكل مقعد.