Food Aggregators → POS | HungerStation · Keeta · Jahez · Marsool | Direct Order Sync
by Moaz Nabil https://github.com/moaaznaabilali
Odoo
$ 200.03
In-App PurchasesFOOD DELIVERY AGGREGATORS → ODOO POS · SAUDI ARABIA
Every delivery order, straight into your POS.
HungerStation, Keeta, Jahez and Marsool orders land in Odoo POS automatically — no tablet juggling, no re-keying, no reconciliation nightmare. Webhook-driven and authenticated to each platform's own scheme (API key, OAuth 2.0 or signed webhook), a cashier pop-up with sound, two-way status sync, and full commission & settlement finance.
HungerStation
Keeta
Jahez
Marsool$200 · ONE-TIME · LIFETIME UPDATES · OPL-1 · ODOO 19
العربية؟ النسخة العربية بالأسفل ↓
▶ SEE IT IN ACTION

Prefer the full clip? https://cdn.jsdelivr.net/gh/moaaznaabilali/mn-demos@main/food_aggregator_demo.mp4
▶ INSIDE THE POS — MANAGE EVERY PLATFORM'S ORDERS FROM THE TILL

▶ OPERATIONS & FINANCE DASHBOARD — GMV, COMMISSION, NET, SETTLEMENT, LATE ORDERS

Everything a delivery-heavy kitchen needs
One module — four platforms — on Odoo 19 POS.
01
One webhook per platform
Each platform POSTs to its own URL (e.g. /aggregator/hungerstation/webhook). Authentication adapts to each platform's scheme — API key + secret (Jahez), OAuth 2.0 (HungerStation / Delivery Hero), partner credentials (Keeta) or a signed webhook. Every call is logged and turned into an order idempotently — no dupes on retries.
02
Orders land in your POS
Incoming orders become POS-ready with customer, items, delivery fee, paid flag and platform reference. A cashier pop-up appears with a sound alert so nothing is missed at rush hour.
03
Auto-accept rules
Accept automatically within an amount range (and only when the store is open), or review manually. Reject with a reason (busy / out-of-stock / closed).
04
Two-way status sync
Advance received → accepted → preparing → ready → picked-up → delivered from Odoo, and each step is pushed back to the platform so the customer & driver stay informed.
05
Menu mapping per platform
Link each platform SKU to your Odoo product, bilingual (AR + EN). One place to keep the storefront menu and your catalogue aligned.
06
Settlement reconciliation
Upload the platform's settlement CSV — orders auto-match, the commission books to a fee account, and the bank payout reconciles. See settled vs. unsettled at a glance.
07
Commission & net finance
Every order shows the platform commission and your net. The dashboard rolls up GMV, commission and net per platform, month-to-date and year-to-date.
08
Driver tracking
Driver name, phone and ETA arrive with the order and show on the order screen — your team always knows who's coming and when.
09
Rush-hour pause
Temporarily stop receiving from any platform with one toggle; the webhook politely rejects new orders so they don't pile up while you're slammed.
10
Multi-store & multi-POS
Map each platform's store_id to the right Odoo POS/branch. Run many restaurants and registers from one Odoo.
11
ZATCA-compatible
The resulting POS order produces a standard ZATCA e-invoice when closed — compliant Saudi invoicing with no extra steps.
12
Bilingual Arabic / English
Menu, order screen and cashier UI in Arabic and English — built for Saudi restaurants and staff.
▶ A NEW ORDER — CUSTOMER, DRIVER, MONEY, COMMISSION & STATUS FLOW

▶ ALL ORDERS ACROSS THE FOUR PLATFORMS

▶ PLATFORM SETUP — STORE MAPPING, SECRET, AUTO-ACCEPT & ACCOUNTING

▶ SETTLEMENT RECONCILIATION — MATCH PAYOUTS TO ORDERS

▶ MENU MAPPING — PLATFORM SKU ⇄ ODOO PRODUCT (BILINGUAL)

▶ SIGNED WEBHOOK LOG — EVERY CALL, SIGNATURE STATUS & PAYLOAD

How it works
1. Enrol your branch in each platform's POS / integration program to get a webhook secret + API access.
2. In Odoo: Aggregators → Platforms → add HungerStation / Keeta / Jahez / Marsool, map the store_id to your POS, paste the secret.
3. Give the platform your webhook URL (shown in Odoo). Map your menu SKUs to products.
4. Orders start flowing into POS; advance them and the status syncs back. Upload settlement CSVs to reconcile the money.
2. In Odoo: Aggregators → Platforms → add HungerStation / Keeta / Jahez / Marsool, map the store_id to your POS, paste the secret.
3. Give the platform your webhook URL (shown in Odoo). Map your menu SKUs to products.
4. Orders start flowing into POS; advance them and the status syncs back. Upload settlement CSVs to reconcile the money.
GOING LIVE
Exactly what to request from each platform
These platforms do not offer a public self-serve API — access is granted through each one's merchant / POS-integration program. Below is precisely what to ask for, where, and what to enter in Odoo. (Verified against each platform's current developer documentation.)
JahezAPI KEY + SECRET
Ask the platform for
• Your restaurant's API Key + Secret Code
• Your Integration ID
• That they register / whitelist your webhook URL
• Your Integration ID
• That they register / whitelist your webhook URL
Where to get it
Email integration@jahez.net asking for POS integration, then manage it in the Jahez Integration Portal (integration-portal.jahez.net). Request their POS integration document.
Enter in Odoo
Auth scheme = API key + secret
API key = API Key · API secret = Secret Code
Merchant/Integration ID = Integration ID
Remote store ID = your branch ID
Paste the Odoo webhook URL into the portal.
API key = API Key · API secret = Secret Code
Merchant/Integration ID = Integration ID
Remote store ID = your branch ID
Paste the Odoo webhook URL into the portal.
HungerStationOAUTH 2.0
Ask the platform for
• Access to the Order Transmission / POS API (Partner API)
• OAuth 2.0 client_id + client_secret + the token endpoint URL
• Your vendor / store code
• Registration of your webhook URL for order & status events
• OAuth 2.0 client_id + client_secret + the token endpoint URL
• Your vendor / store code
• Registration of your webhook URL for order & status events
Where to get it
Request Partner / POS API access through your HungerStation / Delivery Hero account manager. Docs: developer.hungerstation.com and Delivery Hero's Restaurant Integration API (developers.deliveryhero.com/documentation/pos.html).
Enter in Odoo
Auth scheme = OAuth 2.0
Client ID = client_id · Client secret = client_secret
OAuth token URL = token endpoint → click Fetch OAuth token
Remote store ID = vendor code.
Client ID = client_id · Client secret = client_secret
OAuth token URL = token endpoint → click Fetch OAuth token
Remote store ID = vendor code.
KeetaPARTNER API
Ask the platform for
• Partner / developer API credentials (app key + secret)
• Your store ID
• Access to the Menu API and Order API
• Your store ID
• Access to the Menu API and Order API
Where to get it
Sign in to the Keeta merchant portal (merchant.mykeeta.com) and request partner API access. Docs: developers.mykeeta.com and the Menu Integration Guide at api-docs.mykeeta.com.
Enter in Odoo
Auth scheme = API key + secret
API key / secret = the partner credentials
Remote store ID = store ID
Register the Odoo webhook URL where Keeta expects it.
API key / secret = the partner credentials
Remote store ID = store ID
Register the Odoo webhook URL where Keeta expects it.
MarsoolON REQUEST
Ask the platform for
• Whether they offer a merchant POS / order webhook integration
• If yes: the credentials, webhook registration & their payload spec
• If yes: the credentials, webhook registration & their payload spec
Where to get it
Contact Marsool merchant / partner support (no public developer portal published). Marsool is primarily a courier / errand platform — confirm availability first.
Enter in Odoo
Set Auth scheme to whatever they use (API key, OAuth 2.0 or signed webhook) and fill the matching fields. The connector supports all three.
General flow (all platforms): 1) request POS integration → 2) receive credentials + payload spec + a sandbox → 3) in Odoo add the platform, set its Auth scheme, paste the credentials, map store_id → POS → 4) copy the ready-made webhook URL from the form into the platform → 5) map your menu SKUs to products → 6) test in the platform's sandbox, then flip Sandbox off to go live. Each platform's exact payload field names are confirmed against its live spec during onboarding — normal for every connector, and we help you wire it up.
You can prove the whole pipeline today — before any onboarding: send a signed test order to your webhook URL and it lands in POS exactly as a live order would.
STOP JUGGLING TABLETS
Bring every delivery order into Odoo.
$200 · one-time · lifetime updates · OPL-1
WhatsApp — +966 59 621 7950
moaaznaabilali@gmail.com
Compatibility: Odoo 19.0 (Community & Enterprise) with Point of Sale & Accounting. License: OPL-1. Author: Moaz Nabil · moaaznaabilali@gmail.com · +966 59 621 7950. Each platform's webhook secret & API access come from that platform's merchant / POS-integration program. HungerStation, Keeta, Jahez and Marsool are trademarks of their respective owners; this module integrates with them and is not affiliated with or endorsed by any of them.
▼ النسخة العربية · ARABIC VERSION ▼
منصّات التوصيل ← نقاط البيع في أودو · المملكة العربية السعودية
كل طلب توصيل يصل مباشرةً إلى نقطة البيع.
طلبات هنجرستيشن وكيتا وجاهز ومرسول تصل تلقائيًا إلى نقطة البيع في أودو — دون تنقّل بين الأجهزة اللوحية، ودون إعادة إدخال، ودون عناء التسوية. يعمل بالـ Webhook ويُصادَق عليه بأسلوب كل منصّة الخاص (مفتاح API، أو OAuth 2.0، أو توقيع Webhook)، مع نافذة منبثقة للكاشير مع صوت تنبيه، ومزامنة حالة ثنائية الاتجاه، وإدارة كاملة للعمولة والتسوية المالية.
هنجرستيشن
كيتا
جاهز
مرسول200 دولار · دفعة واحدة · تحديثات مدى الحياة · رخصة OPL-1 · أودو 19
▶ شاهده أثناء العمل

تريد المقطع الكامل؟ https://cdn.jsdelivr.net/gh/moaaznaabilali/mn-demos@main/food_aggregator_demo.mp4
▶ داخل نقطة البيع — أدِر طلبات كل المنصّات من الكاشير

▶ لوحة العمليات والمالية — المبيعات والعمولة والصافي والتسوية والطلبات المتأخرة

كل ما يحتاجه مطبخ يعتمد على التوصيل
وحدة واحدة — أربع منصّات — على نقاط البيع في أودو 19.
١
Webhook مستقل لكل منصّة
كل منصّة تُرسل إلى رابطها الخاص (مثل /aggregator/hungerstation/webhook). المصادقة تتكيّف مع أسلوب كل منصّة — مفتاح API + سرّ (جاهز)، أو OAuth 2.0 (هنجرستيشن / ديليفري هيرو)، أو بيانات اعتماد شريك (كيتا)، أو Webhook موقّع. كل نداء يُسجَّل ويتحوّل إلى طلب دون تكرار عند إعادة الإرسال.
٢
الطلبات تصل إلى نقطة البيع
الطلبات الواردة تصبح جاهزة في نقطة البيع مع العميل والأصناف ورسوم التوصيل وحالة الدفع ومرجع المنصّة. تظهر نافذة منبثقة للكاشير مع تنبيه صوتي حتى لا يفوت أي طلب في أوقات الذروة.
٣
قواعد القبول التلقائي
اقبل تلقائيًا ضمن نطاق مبلغ محدّد (وفقط عندما يكون المتجر مفتوحًا)، أو راجِع يدويًا. ارفض مع تحديد السبب (مشغول / غير متوفر / مغلق).
٤
مزامنة الحالة ثنائية الاتجاه
انقل الطلب: مستلَم ← مقبول ← قيد التحضير ← جاهز ← استلمه السائق ← تم التسليم من أودو، وتُدفَع كل خطوة إلى المنصّة ليبقى العميل والسائق على اطّلاع.
٥
ربط القائمة لكل منصّة
اربط رمز SKU لكل منصّة بمنتجك في أودو، ثنائي اللغة (عربي + إنجليزي). مكان واحد لمواءمة قائمة المتجر مع كتالوجك.
٦
تسوية المدفوعات
ارفع ملف التسوية CSV من المنصّة — تُطابَق الطلبات تلقائيًا، وتُقيَّد العمولة في حساب مصاريف، وتُسوّى دفعة البنك. تابِع المُسوّى وغير المُسوّى بنظرة واحدة.
٧
العمولة والصافي
كل طلب يُظهِر عمولة المنصّة وصافيك. تُجمِّع اللوحة إجمالي المبيعات والعمولة والصافي لكل منصّة، منذ بداية الشهر ومنذ بداية السنة.
٨
تتبّع السائق
اسم السائق وهاتفه ووقت الوصول المتوقّع تصل مع الطلب وتظهر في شاشة الطلب — فريقك يعرف دائمًا مَن قادم ومتى.
٩
إيقاف مؤقت وقت الذروة
أوقِف الاستقبال من أي منصّة مؤقتًا بزرّ واحد؛ يرفض الـ Webhook الطلبات الجديدة بأدب حتى لا تتراكم أثناء انشغالك.
١٠
متاجر ونقاط بيع متعدّدة
اربط store_id لكل منصّة بنقطة البيع / الفرع الصحيح في أودو. أدِر عدّة مطاعم وكاشيرات من أودو واحد.
١١
متوافق مع هيئة الزكاة والضريبة
ينتج طلب نقطة البيع فاتورة إلكترونية متوافقة مع ZATCA عند إغلاقه — فوترة سعودية متوافقة دون خطوات إضافية.
١٢
ثنائي اللغة عربي / إنجليزي
القائمة وشاشة الطلب وواجهة الكاشير بالعربية والإنجليزية — مبني للمطاعم والموظفين في السعودية.
▶ طلب جديد — العميل والسائق والمال والعمولة وتدفّق الحالة

▶ كل الطلبات عبر المنصّات الأربع

▶ إعداد المنصّة — ربط المتجر والسرّ والقبول التلقائي والمحاسبة

▶ تسوية المدفوعات — مطابقة الدفعات بالطلبات

▶ ربط القائمة — رمز المنصّة ⇄ منتج أودو (ثنائي اللغة)

▶ سجلّ الـ Webhook الموقّع — كل نداء وحالة التوقيع والحمولة

كيف يعمل
١. سجِّل فرعك في برنامج التكامل / نقاط البيع لدى كل منصّة للحصول على سرّ الـ Webhook + صلاحية API.
٢. في أودو: المنصّات ← أضِف هنجرستيشن / كيتا / جاهز / مرسول، اربط store_id بنقطة البيع، ألصِق السرّ.
٣. أعطِ المنصّة رابط الـ Webhook (يظهر في أودو). اربط رموز قائمتك بالمنتجات.
٤. تبدأ الطلبات بالتدفّق إلى نقطة البيع؛ انقلها فتُزامَن الحالة. ارفع ملفات التسوية CSV لتسوية الأموال.
٢. في أودو: المنصّات ← أضِف هنجرستيشن / كيتا / جاهز / مرسول، اربط store_id بنقطة البيع، ألصِق السرّ.
٣. أعطِ المنصّة رابط الـ Webhook (يظهر في أودو). اربط رموز قائمتك بالمنتجات.
٤. تبدأ الطلبات بالتدفّق إلى نقطة البيع؛ انقلها فتُزامَن الحالة. ارفع ملفات التسوية CSV لتسوية الأموال.
الانطلاق للتشغيل
ماذا تطلب بالضبط من كل منصّة
هذه المنصّات لا توفّر واجهة برمجة عامّة؛ والوصول يكون عبر برنامج تكامل التاجر / نقاط البيع لدى كل منصّة. في الأسفل بالضبط ما تطلبه، ومن أين، وما تُدخِله في أودو. (تمّ التحقق مقابل وثائق كل منصّة الحالية.)
جاهزمفتاح + سرّ
اطلب من المنصّة
• مفتاح API + الرمز السرّي لمطعمك
• معرّف التكامل الخاص بك
• أن يسجّلوا / يُدرِجوا رابط الـ Webhook في القائمة المسموحة
• معرّف التكامل الخاص بك
• أن يسجّلوا / يُدرِجوا رابط الـ Webhook في القائمة المسموحة
أين تحصل عليه
راسِل integration@jahez.net طالبًا تكامل نقاط البيع، ثم أدِره من بوابة تكامل جاهز (integration-portal.jahez.net). اطلب وثيقة تكامل نقاط البيع لديهم.
أدخِله في أودو
أسلوب المصادقة = مفتاح + سرّ
مفتاح API = API Key · سرّ API = الرمز السرّي
معرّف التاجر/التكامل = معرّف التكامل
معرّف المتجر البعيد = رقم فرعك
ألصِق رابط الـ Webhook في البوابة.
مفتاح API = API Key · سرّ API = الرمز السرّي
معرّف التاجر/التكامل = معرّف التكامل
معرّف المتجر البعيد = رقم فرعك
ألصِق رابط الـ Webhook في البوابة.
هنجرستيشنOAUTH 2.0
اطلب من المنصّة
• صلاحية Order Transmission / POS API (واجهة الشريك)
• client_id + client_secret لـ OAuth 2.0 + رابط نقطة إصدار الرمز
• رمز المورّد / المتجر الخاص بك
• تسجيل رابط الـ Webhook لأحداث الطلب والحالة
• client_id + client_secret لـ OAuth 2.0 + رابط نقطة إصدار الرمز
• رمز المورّد / المتجر الخاص بك
• تسجيل رابط الـ Webhook لأحداث الطلب والحالة
أين تحصل عليه
اطلب صلاحية واجهة الشريك / POS API عبر مدير حسابك في هنجرستيشن / ديليفري هيرو. الوثائق: developer.hungerstation.com وواجهة تكامل المطاعم لدى ديليفري هيرو (developers.deliveryhero.com/documentation/pos.html).
أدخِله في أودو
أسلوب المصادقة = OAuth 2.0
Client ID = client_id · Client secret = client_secret
رابط رمز OAuth = نقطة الإصدار ← اضغط جلب رمز OAuth
معرّف المتجر البعيد = رمز المورّد.
Client ID = client_id · Client secret = client_secret
رابط رمز OAuth = نقطة الإصدار ← اضغط جلب رمز OAuth
معرّف المتجر البعيد = رمز المورّد.
كيتاواجهة الشريك
اطلب من المنصّة
• بيانات اعتماد API للشريك / المطوّر (مفتاح تطبيق + سرّ)
• معرّف متجرك
• صلاحية واجهة القائمة وواجهة الطلبات
• معرّف متجرك
• صلاحية واجهة القائمة وواجهة الطلبات
أين تحصل عليه
سجّل الدخول إلى بوابة تجّار كيتا (merchant.mykeeta.com) واطلب صلاحية واجهة الشريك. الوثائق: developers.mykeeta.com ودليل تكامل القائمة على api-docs.mykeeta.com.
أدخِله في أودو
أسلوب المصادقة = مفتاح + سرّ
مفتاح / سرّ API = بيانات اعتماد الشريك
معرّف المتجر البعيد = معرّف المتجر
سجّل رابط الـ Webhook حيث تتوقّعه كيتا.
مفتاح / سرّ API = بيانات اعتماد الشريك
معرّف المتجر البعيد = معرّف المتجر
سجّل رابط الـ Webhook حيث تتوقّعه كيتا.
مرسولعند الطلب
اطلب من المنصّة
• هل يوفّرون تكامل نقاط بيع / Webhook طلبات للتاجر
• إن كان نعم: بيانات الاعتماد وتسجيل الـ Webhook ومواصفات الحمولة
• إن كان نعم: بيانات الاعتماد وتسجيل الـ Webhook ومواصفات الحمولة
أين تحصل عليه
تواصل مع دعم التجّار / الشركاء في مرسول (لا توجد بوابة مطوّرين عامة منشورة). مرسول منصّة توصيل / مشاوير بالأساس — تأكّد من توفّر التكامل أولًا.
أدخِله في أودو
اضبط أسلوب المصادقة على ما يستخدمونه (مفتاح API أو OAuth 2.0 أو Webhook موقّع) واملأ الحقول المطابقة. يدعم الموصّل الأساليب الثلاثة.
الخطوات العامة (لكل المنصّات): ١) اطلب تكامل نقاط البيع ← ٢) استلم بيانات الاعتماد + مواصفات الحمولة + بيئة اختبار ← ٣) في أودو أضِف المنصّة، اضبط أسلوب المصادقة، ألصِق البيانات، اربط store_id بنقطة البيع ← ٤) انسخ رابط الـ Webhook الجاهز من النموذج إلى المنصّة ← ٥) اربط رموز قائمتك بالمنتجات ← ٦) اختبِر في بيئة اختبار المنصّة، ثم أطفئ وضع الاختبار للانطلاق. تُؤكَّد أسماء حقول الحمولة الدقيقة لكل منصّة مقابل مواصفاتها الحيّة أثناء الإعداد — وهذا طبيعي في كل موصّل، ونساعدك في توصيله.
يمكنك إثبات المسار كاملًا اليوم — قبل أي إعداد: أرسِل طلب اختبار موقّعًا إلى رابط الـ Webhook فيصل إلى نقطة البيع تمامًا كطلب حقيقي.
توقّف عن التنقّل بين الأجهزة
أدخِل كل طلب توصيل إلى أودو.
200 دولار · دفعة واحدة · تحديثات مدى الحياة · OPL-1
واتساب — +966 59 621 7950
moaaznaabilali@gmail.com
التوافق: أودو 19.0 (المجتمعي والمؤسسي) مع نقاط البيع والمحاسبة. الترخيص: OPL-1. المطوّر: معاذ نبيل · moaaznaabilali@gmail.com · +966 59 621 7950. يُحصَل على سرّ الـ Webhook وصلاحية الربط من برنامج تكامل التاجر لدى كل منصّة. الأسماء والشعارات علامات تجارية لأصحابها، وهذا المنتج غير تابع لها.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Point of Sale (point_of_sale) • Inventory (stock) |
| Lines of code | 2111 |
| Technical Name |
mn_food_aggregator_pos |
| License | OPL-1 |
| Website | https://github.com/moaaznaabilali |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module