Qawafel

B2B marketplace and ZATCA-compliant document platform — sync products, orders, merchants and invoices with Saudi Arabia's leading wholesale network.
Connect it
In Keystile Automations → Connections → New connection, choose Qawafel and sign in. Your AI tools and workflows then use it through Keystile; they never see the password or key.How connecting works.
Try it from your AI tool
Using Keystile, in Qawafel: cancel order (Cancel an open order. Once cancelled, the order cannot be reopened — the only path forward is to create a new order).What it can do (15 actions)
| Action | What it does | Changes data |
|---|---|---|
| Cancel Order | Cancel an open order. Once cancelled, the order cannot be reopened — the only path forward is to create a new order. | |
| Create Completed Order | Sync a completed (fulfilled) order into Qawafel. Use this to import historical or externally-completed orders from another storefront, ERP, or B2B portal — the order is created directly in **Fulfilled** state and skips the normal fulfilment workflow. Do **not** use this for new orders that still need to be confirmed, picked, and delivered. | |
| Create Invoice | Create an invoice in Qawafel for a customer. The invoice starts in `draft` state — use the **Generate Invoice** action (or call it from your dashboard) to finalize and issue a ZATCA-compliant copy. | |
| Create Merchant (Customer or Supplier) | Add a new customer or supplier to your Qawafel tenant. Use this when onboarding a new B2B partner from your CRM, signup form, or another system. | |
| Create Product | Add a new product to your Qawafel catalog. The workhorse for catalog sync from your ERP or storefront into Qawafel. | |
| Custom API Call | Make a custom API call to a specific endpoint | Yes |
| Get Invoice | Fetch a single invoice by its Qawafel ID. Returns the full invoice including line items, totals, ZATCA PDF URL, and current state. | |
| Get Order | Fetch a single order by its Qawafel ID. Returns the full order including line items, totals, delivery details, and current state. | |
| Get Product | Fetch a single product by its Qawafel ID. Returns the full product including price, descriptions, and active status. | |
| List Invoices | Get invoices, optionally filtered by status, customer, or creation date. Returns up to 500 invoices (5 pages of 100). | |
| List Orders | Get orders, optionally filtered by status, customer, or creation date. Returns up to 500 orders (5 pages of 100). | |
| List Products | Get products from your catalog, with optional filters by type, supplier, SKU, and active status. Returns up to 500 products (5 pages of 100). | |
| Update Merchant | Edit a merchant's trade name or active state. Only the fields you fill in are updated. (Legal name, CR, VAT and other identity fields cannot be changed via the API.) | |
| Update Order Status | Move an order forward in the Qawafel fulfilment workflow. Qawafel enforces a strict state machine — for example, an order must be **Out for Delivery** before it can be marked **Delivered**. To cancel an order, use the **Cancel Order** action instead. | |
| Update Product | Edit a product's price, description, or active state. Only the fields you fill in are updated — leave the rest blank to keep them unchanged. |
Start a workflow when… (8 triggers)
- New Order — Fires the moment a new sales order is created in Qawafel. Use it to fan out to fulfillment, accounting, Slack alerts, or your CRM.
- Order Status Changed — Fires when an order moves to a specific status (confirmed, out for delivery, delivered, fulfilled, cancelled, etc.). Pick one status per trigger — add the trigger again for additional statuses.
- Invoice Paid — Fires when an invoice is marked as paid in Qawafel. Useful for posting payment receipts to Slack, releasing fulfilment, or syncing revenue to your books.
- New Invoice Generated — Fires when a ZATCA-compliant invoice is finalized in Qawafel (the `invoice.generated` event). Use it to email PDFs to customers, archive invoices to Drive, or push to your accounting system.
- New Product Published — Fires when a new product is created in Qawafel. Use it to mirror your catalog into Shopify, Salla, Zid, or your data warehouse.
- Product Updated — Fires when a product is updated (price change, description edit, activated/deactivated). Use it to keep external storefronts in sync.
- New Merchant Registered — Fires when a new merchant (customer or supplier) is created in Qawafel. Use it to onboard customers in your CRM or add suppliers to your procurement system.
- Refund / Credit Note Created — Fires when a credit note is created against an invoice (i.e. a customer return or refund is initiated). Use it to alert your finance team or trigger a return workflow.
How Keystile protects it
Every Qawafel action is checked before it runs, whether it comes from an AI tool or a workflow. 1 of its actions change data; your rules, limits and budgets decide whether each is allowed, held for a person or stopped, and it all goes into the signed record.
Use Qawafel with your AI assistant — safelyClaude, Cursor or ChatGPT do the work; Keystile checks every action first.
Get early access