# Clorvia — Full User Documentation > Clorvia is a GST billing and accounting platform: GST-compliant invoicing, inventory, customers/suppliers, payments, expenses, double-entry accounting, reports, subscriptions, and support tickets. App: https://app.clorvia.com Docs: https://docs.clorvia.com --- # Clorvia Documentation URL: https://docs.clorvia.com/ # Welcome to Clorvia **Clorvia** is your complete GST billing and accounting platform. Create professional, GST-compliant invoices, track customers and suppliers, manage your inventory, record payments and expenses, keep your books with a built-in accounting ledger, and see how your business is doing — all from one clean dashboard. This guide walks you through everything, from creating your account to running your first report. If you're brand new, start with **[Getting Started](/getting-started)**. ## What you can do with Clorvia | Area | What it covers | |------|----------------| | **[Companies & Firms](/companies)** | Run multiple businesses, each with its own books and GST identity | | **[Items & Inventory](/items)** | Products and services, pricing, HSN/GST rates, stock, batches | | **[Customers & Suppliers](/parties)** | Your parties, GSTINs, credit limits, and pricing tiers | | **[Invoicing & Sales](/invoicing)** | GST tax invoices, quotations, orders, delivery challans | | **[Payments & Receipts](/payments)** | Record money in and out, and settle invoices | | **[Expenses & Purchases](/expenses)** | Track spending, claim input tax credit, manage fixed assets | | **[Accounting](/accounting)** | A double-entry ledger and chart of accounts kept automatically tidy | | **[Reports & Dashboards](/reports)** | Profit & Loss, Balance Sheet, party/item ledgers, revenue | | **[Plans & Billing](/account/billing)** | Choose a plan and subscribe — secure payments via Zoho | | **[Support Tickets](/support/tickets)** | Raise and track support requests, linked to customers | | **[Account & Settings](/account)** | Your profile, team members, roles, and security | ## Quick links - **[Create your account →](/getting-started/create-account)** — sign up in under a minute - **[Set up your first company →](/companies)** — add your business details and GSTIN - **[Make your first invoice →](/invoicing)** — a step-by-step walkthrough - **[Understand GST on invoices →](/invoicing/gst-invoice)** — place of supply, CGST/SGST/IGST - **[See your numbers →](/reports)** — build dashboards and financial reports ## Where to sign in Access Clorvia at **[app.clorvia.com](https://app.clorvia.com)** from any modern web browser (Chrome, Edge, Safari, or Firefox). There is nothing to install. > **New here?** Head to **[Getting Started](/getting-started)** for the full > onboarding flow — we'll take you from sign-up to your first invoice. --- # Onboarding Overview URL: https://docs.clorvia.com/getting-started # Getting Started with Clorvia This page is the big picture: the exact order to set Clorvia up so everything works smoothly. Each step links to a detailed guide. The whole flow takes about **10–15 minutes**, and you only do most of it once. > You work in Clorvia entirely from your browser at **[app.clorvia.com](https://app.clorvia.com)** — > nothing to download or install. ## The onboarding flow ### Create your account Sign up with your email and a password (or continue with Google). Verify your email and you're in. → **[Create Your Account](/getting-started/create-account)** ### Set up your company Your first **company** (workspace) is created automatically. Add your business name, address, GSTIN, and state — this becomes the **firm** that appears on your invoices. → **[Companies & Firms](/companies)** ### Add your customers & suppliers Create the people and businesses you bill or buy from — their name, GSTIN, address, and (optionally) a credit limit. → **[Customers & Suppliers](/parties)** ### Add your items Add the products or services you sell, with their selling price, HSN/SAC code, and GST rate. → **[Items & Inventory](/items)** ### Create your first invoice Pick a customer, add items, and Clorvia builds a GST-compliant tax invoice. → **[Invoicing & Sales](/invoicing)** ### Record payments When a customer pays, record a receipt against the invoice so your outstanding balances stay accurate. → **[Payments & Receipts](/payments)** ### Watch your numbers Open **Reports & Dashboards** to see revenue, outstanding amounts, Profit & Loss, and your Balance Sheet. → **[Reports & Dashboards](/reports)** ## A quick mental model Clorvia is built around a few simple ideas: - A **company** is one business with its own books. You can run **several** companies from the same login and switch between them anytime. - A **firm** is the GST identity (name + GSTIN) that issues invoices for a company. Most companies have one firm; businesses with multiple GST registrations can add more. - **Items** are what you sell. **Parties** are who you sell to or buy from. - **Transactions** (invoices, payments, expenses) connect items and parties, and Clorvia keeps the **accounting** and **reports** up to date for you. > **Tip:** Do the setup steps in order. Adding customers and items first makes > creating your first invoice a 30-second job. ## Next step → **[Create Your Account](/getting-started/create-account)** --- # Create Your Account URL: https://docs.clorvia.com/getting-started/create-account # Create Your Account Getting into Clorvia takes less than a minute. ## Sign up ### Go to the app Open **[app.clorvia.com](https://app.clorvia.com)** in your browser. ### Choose how to sign up You have a few options: - **Email & password** — enter your work email, your name, and a strong password. - **Continue with Google** — sign up instantly using your Google account. - **Continue with Microsoft** — sign in with your Microsoft (Office 365) account. ### Verify your email If you signed up with email, we'll send you a verification code (OTP). Enter it to confirm your address. This keeps your account secure and makes sure invoices and alerts reach you. ### You're in Your first **company** is created automatically, and you land on your dashboard. > **Already have an account?** Just click **Sign in** on the same page and enter > your email and password (or use **Google** / **Microsoft**). Social sign-in is > sign-in only — create your account with email or Google/Microsoft first. ## Choosing a strong password - Use at least 8 characters with a mix of letters, numbers, and symbols. - Don't reuse a password from another site. - You can enable **two-factor authentication (2FA)** later for extra security — see **[Security](/account/security)**. ## Forgot your password? On the sign-in screen, choose **Forgot password**, enter your email, and follow the reset link we send you. ## What happens next After signing in you'll want to: 1. **[Set up your company](/companies)** — add your business details and GSTIN. 2. **[Invite your team](/account/team)** — if others will help manage your books. → Next: **[The Dashboard](/getting-started/dashboard)** --- # The Dashboard URL: https://docs.clorvia.com/getting-started/dashboard # The Dashboard When you sign in, you land on your **dashboard** — your home base for the current company. It gives you an at-a-glance view of your business and quick access to everything else. ## What's on the dashboard - **Key numbers** — totals like sales, outstanding receivables, and recent activity for the company you're viewing. - **Quick actions** — jump straight to creating an invoice, adding a customer, or recording a payment. - **Recent records** — your latest invoices, payments, and other transactions. > The dashboard always reflects the **company you're currently in**. If the numbers > look unfamiliar, check the company switcher (top of the screen) — you may be > viewing a different company. See **[Companies & Firms](/companies)**. ## Build your own dashboards Beyond the default view, Clorvia lets you create **custom dashboards** with charts and number widgets — for example "revenue this month", "outstanding by customer", or "Profit & Loss". You decide what to track. See **[Reports & Dashboards](/reports)**. ## Moving around The **left sidebar** is how you reach every part of Clorvia — Items, Customers, Invoices, Payments, Expenses, Accounting, and Reports. The **top bar** has the company switcher, search, and your account menu. → Next: **[Finding Your Way Around](/getting-started/navigating)** --- # Finding Your Way Around URL: https://docs.clorvia.com/getting-started/navigating # Finding Your Way Around Clorvia keeps a consistent layout everywhere, so once you learn one screen you know them all. ## The layout - **Left sidebar** — your main menu. Each item (Items, Customers, Invoices, etc.) opens a list of records. - **Top bar** — the **company switcher**, **search**, and your **account menu**. - **Main area** — the list or record you're working on. ## Working with records (lists) Most screens show a **list** — a table of records such as invoices or customers. On any list you can: - **Create** a new record with the **+ / New** button. - **Open** a record by clicking its row to see and edit every detail. - **Search** for a record by name or number. - **Filter** to narrow the list (for example, only unpaid invoices). - **Sort** by any column (date, amount, name). - **Select multiple** records to act on them together — for example, edit several items at once (**bulk update**). > **Deleted something by mistake?** Records are not gone forever — Clorvia keeps a > recycle/restore option so you can bring deleted transactions back. See your list's > filter for deleted records. ## Editing a record Open any record to edit it inline. Changes save as you go. Related information — like the line items on an invoice, or the invoices for a customer — shows right on the record so you can move between connected things easily. ## Searching Use the search in the top bar to jump to any customer, item, or invoice by typing part of its name or number. ## Customising fields Need to track something Clorvia doesn't have a field for? You can **add your own custom fields** to items, customers, and more — see **[Items & Inventory](/items)**. → Next: set up your business in **[Companies & Firms](/companies)**. --- # Companies URL: https://docs.clorvia.com/companies # Companies A **company** in Clorvia is one business with its own complete, separate set of books — its own customers, items, invoices, payments, and reports. Nothing leaks between companies. ## Your first company When you sign up, Clorvia creates your first company automatically. To finish setting it up, add your business details and your GST identity (your **firm**) — see **[Firms & GST Identity](/companies/firms)**. ## Running multiple companies If you run more than one business — or you're an accountant managing several clients — you can create **multiple companies** under the same login. Each one is fully isolated. ### Open the company switcher Click your company name at the top of the screen. ### Create a new company Choose **Add / Create company**, give it a name, and confirm. ### Switch anytime Use the same switcher to jump between companies. Everything on screen — the dashboard, lists, and reports — updates to the company you selected. > **Multiple companies vs. multiple firms.** Use a separate **company** when the > businesses have separate books. Use multiple **firms** inside one company when it's > one business with more than one GST registration (for example, branches in > different states). See **[Firms & GST Identity](/companies/firms)**. ## Inviting people to a company Each company can have its own team. Invite colleagues and set what they're allowed to do — see **[Team & Roles](/account/team)**. ## Good to know - Switching companies never mixes data — invoices you create always belong to the company you're in. - Reports and dashboards are per company. - You can rename a company or update its details at any time. → Next: set your GST identity in **[Firms & GST Identity](/companies/firms)**. --- # Firms & GST Identity URL: https://docs.clorvia.com/companies/firms # Firms & GST Identity A **firm** is the seller identity that appears on your invoices — your legal name, **GSTIN**, address, and state. When you create an invoice, Clorvia uses the firm to fill in the "from" side and to work out the correct GST. ## Setting up your firm Add a firm with: - **Name** and **legal name** (as registered) - **GSTIN** — your 15-character GST registration number - **Address** and **state** — the state matters for GST (see below) - Contact **phone** and **email** This information prints on every invoice that firm issues, so keep it accurate. ## Why the firm's state matters GST depends on **where the supply happens**: - If your firm's state and the customer's **place of supply** are the **same** state, the invoice uses **CGST + SGST**. - If they're **different** states, the invoice uses **IGST**. Clorvia uses the firm's state and the invoice's place of supply to apply the right split. Learn more in **[GST on Invoices](/invoicing/gst-invoice)**. ## Multiple GST registrations (multiple firms) Some businesses hold **more than one GSTIN** — for example, registrations in different states. In that case, add a **firm per GSTIN** inside the same company. When you raise an invoice, pick the firm whose GSTIN should issue it. > **One business, many GSTINs → multiple firms in one company.** > **Separate businesses → separate companies.** See **[Companies](/companies)**. ## Keeping it compliant A valid GST tax invoice must show the supplier's name, address, and GSTIN — all of which come from your firm. Make sure these are correct before sending invoices to customers. For the full list of what a compliant invoice needs, see **[GST on Invoices](/invoicing/gst-invoice)**. → Next: add what you sell in **[Items & Inventory](/items)**. --- # Adding Items URL: https://docs.clorvia.com/items # Adding Items **Items** are the products and services you sell (and buy). Setting them up once means you can drop them onto an invoice in seconds, with the right price and tax filled in automatically. ## Create an item ### Open Items Click **Items** in the sidebar, then **+ New**. ### Enter the basics - **Name** — what you'll see on invoices - **Item code** — your own SKU/code (optional) - **Unit** — how you sell it (e.g. NOS, KG, PCS, HRS) ### Set the price and tax - **Sale price** — your default selling price - **Purchase price** — what it costs you (used to calculate profit) - **GST rate %** and **HSN/SAC code** — see **[HSN & GST Rate](/items/gst-hsn)** ### Save Your item is ready to use on invoices and purchases. > **Services count too.** An item can be a physical product or a service (use a SAC > code instead of HSN). For services you can ignore stock fields. ## What you can track per item | Field | Use | |-------|-----| | Sale / Purchase price | Selling and cost prices | | MRP, Wholesale price | Extra price levels — see **[Pricing](/items/pricing)** | | HSN/SAC, GST rate | Tax classification — see **[HSN & GST Rate](/items/gst-hsn)** | | Stock quantity | On-hand inventory | | Batches & serials | Batch/expiry and serial tracking — see **[Stock, Batches & Serials](/items/stock-batches)** | | Custom fields | Anything else you need — see **[Custom Fields](/items/bulk-custom)** | ## Next - **[Pricing](/items/pricing)** — multiple price levels and per-customer rates - **[Stock, Batches & Serials](/items/stock-batches)** — inventory tracking --- # Bulk Update & Custom Fields URL: https://docs.clorvia.com/items/bulk-custom # Bulk Update & Custom Fields Two time-savers for managing a large catalogue. ## Bulk update Need to change many items at once — say, raise prices or update a GST rate across a range of products? Instead of editing one by one: 1. Open **Items**. 2. **Select** the items you want to change (tick the rows). 3. Choose the field to update and apply it to all selected items at once. This is perfect for price revisions, re-classifying tax rates, or tidying up your catalogue in bulk. ## Custom fields Clorvia covers the standard item details, but every business is different. You can **add your own fields** to track anything extra — for example a brand, colour, warranty period, or supplier reference. Custom fields behave just like built-in ones: they appear on the item, you can fill them in, and you can filter and sort by them. > Custom fields aren't limited to items — you can add them to customers and other > records too, so Clorvia fits the way **you** work. → Next: set up who you sell to in **[Customers & Suppliers](/parties)**. --- # HSN & GST Rate URL: https://docs.clorvia.com/items/gst-hsn # HSN & GST Rate Every item you sell should carry the right **tax classification** so your invoices are GST-compliant and the tax is calculated correctly. ## HSN and SAC codes - **HSN** (Harmonised System of Nomenclature) codes classify **goods**. - **SAC** (Services Accounting Code) codes classify **services**. Set the correct code on each item. It carries through to every invoice line, where showing the HSN/SAC is a legal requirement on a GST tax invoice. > Not sure of an item's HSN/SAC? Check with your accountant or the GST portal. Using > the correct code keeps your filings and your customers' input tax credit clean. ## GST rate Set the item's **GST rate %** (for example 0, 5, 12, 18, or 28). When the item goes onto an invoice, Clorvia uses this rate to work out the tax for that line. ## How the tax is split On the invoice, the GST is split based on the **place of supply**: - **Same state** as your firm → **CGST + SGST** (half each). - **Different state** → **IGST** (the full rate). You don't have to do this maths by hand — see **[GST on Invoices](/invoicing/gst-invoice)** for how it appears on the document. ## Cess If an item attracts **GST compensation cess**, that can be captured on the invoice as well. → Next: **[Stock, Batches & Serials](/items/stock-batches)** --- # Pricing URL: https://docs.clorvia.com/items/pricing # Pricing Clorvia supports more than a single price per item, so you can sell the same product at different rates to different kinds of customers. ## Price levels on an item Each item can carry several prices: - **Sale price** — your standard selling rate - **Purchase price** — your cost (drives profit calculations) - **MRP** — maximum retail price - **Wholesale price** — a lower rate for bulk/trade customers When you add the item to an invoice, the appropriate price is suggested — and you can always override the rate on the line. ## Different rates per customer Customers can be tagged with a **price tier** (for example *Retail* or *Wholesale*). Combined with the item's price levels, this lets you bill each customer at the rate that applies to them. Set a customer's tier on their record — see **[Customers & Suppliers](/parties)**. > **How it fits together:** the item defines the available prices; the customer's > tier decides which one to use by default. You can still change the rate on any > individual invoice line. ## Discounts You can apply a **discount** on an invoice line when you need to adjust a price for a specific sale. The taxable value and GST recalculate accordingly. → Next: **[HSN & GST Rate](/items/gst-hsn)** --- # Stock, Batches & Serials URL: https://docs.clorvia.com/items/stock-batches # Stock, Batches & Serials Keep an eye on how much you have and trace individual lots or units. ## Stock quantity Each item can carry a **stock quantity** so you always know what's on hand. Use it to monitor inventory and spot when it's time to reorder. ## Batches For products that come in **batches** — with manufacture dates, expiry dates, or batch numbers (think pharma, food, cosmetics) — Clorvia lets you record a **batch** against an item: - **Batch number** - **Manufacture date** and **expiry date** - **Quantity** in the batch This makes it easy to track which batch went where and to watch expiry dates. ## Serial numbers For high-value or warranty-tracked goods, record a **serial number** so each individual unit can be identified and traced. > **Batches vs. serials:** use a **batch** for a group of identical units made/bought > together (with shared expiry); use a **serial** when you need to track each single > unit on its own. ## Low-stock alerts Clorvia keeps an eye on your stock for you. When items fall **to or below the low-stock level**, you get an **email alert** listing exactly which items are running low and their current quantity — so you can reorder before you run out. The check runs automatically in the background; no setup needed. → Next: **[Bulk Update & Custom Fields](/items/bulk-custom)** --- # Customers & Suppliers URL: https://docs.clorvia.com/parties # Customers & Suppliers In Clorvia, the people and businesses you deal with are called **parties**. A party can be a **customer** (you sell to them), a **supplier** (you buy from them), or both. ## Add a party ### Open the Customers/Suppliers list Click **Customers** (or **Parties**) in the sidebar, then **+ New**. ### Enter their details - **Name** of the person or business - **Type** — customer, supplier, or both - **GSTIN** — their GST number (needed for B2B invoices and for their input tax credit) - **Phone** and **email** - **Billing address** — including state, which affects GST on their invoices ### Save The party is now available to pick when you create invoices, payments, or expenses. > **Why the GSTIN matters:** for business (B2B) customers, their GSTIN must appear on > the tax invoice so they can claim input tax credit. For consumers (B2C) you can > leave it blank. ## What you can track per party | Field | Use | |-------|-----| | GSTIN | Their GST registration (B2B) | | Billing address & state | Used for place of supply / GST | | Credit limit | A ceiling on how much they can owe — see **[Credit Limits & Price Tiers](/parties/credit-pricing)** | | Opening balance | Money they already owe you (or you owe them) when you start | | Price tier | Which price level applies to them (retail, wholesale…) | | Custom fields | Anything else you want to record | ## Seeing a party's history Open any party to see everything connected to them — their invoices, payments, and running balance — all in one place. This makes it easy to see who owes you what. → Next: **[Credit Limits & Price Tiers](/parties/credit-pricing)** --- # Credit Limits & Price Tiers URL: https://docs.clorvia.com/parties/credit-pricing # Credit Limits & Price Tiers Fine-tune how you do business with each party. ## Credit limit Set a **credit limit** on a customer to cap how much they're allowed to owe you at any time. It's a useful guardrail for managing risk with parties who buy on credit. ## Opening balance When you start using Clorvia, a customer may already owe you money (or you may owe a supplier). Record this as their **opening balance** so your books are accurate from day one and the party's running balance is correct. > Set opening balances when you first add your parties — it saves reconciliation > headaches later. ## Price tier Tag a party with a **price tier** (for example *Retail* or *Wholesale*) to decide which of an item's price levels they're billed at by default. This pairs with the prices you set on items — see **[Pricing](/items/pricing)**. For example: - A **Retail** customer is billed at the item's **sale price**. - A **Wholesale** customer is billed at the item's **wholesale price**. You can always override the rate on an individual invoice line. → Next: create your first **[Invoice](/invoicing)**. --- # Create an Invoice URL: https://docs.clorvia.com/invoicing # Create an Invoice This is the heart of Clorvia. Once your firm, customers, and items are set up, raising an invoice takes under a minute. ## Before you start Make sure you've set up: - Your **firm** (your GST identity) — **[Firms & GST Identity](/companies/firms)** - The **customer** you're billing — **[Customers & Suppliers](/parties)** - The **items** you're selling — **[Items & Inventory](/items)** ## Step by step ### Start a new invoice Open **Invoices** in the sidebar and click **+ New**. ### Pick the firm and customer - Choose the **firm** issuing the invoice (if you have more than one GSTIN). - Choose the **customer**. Their details and GSTIN fill in automatically. ### Set the dates and place of supply - **Invoice date** (and **due date** if you offer credit). - **Place of supply** — the customer's state. This determines whether GST is CGST+SGST or IGST. See **[GST on Invoices](/invoicing/gst-invoice)**. ### Add line items For each product or service: - Pick the **item** — its rate, HSN/SAC, and GST rate fill in. - Set the **quantity** (and adjust the **rate** or add a **discount** if needed). - Clorvia shows the **taxable value** and **GST** for the line. ### Review the totals Clorvia totals the **taxable value**, the **CGST/SGST/IGST**, any cess, round-off, and the **grand total**. ### Save and send Save the invoice. You can then share it with your customer and record their payment when it arrives. > **Numbering:** give invoices a clear, sequential number (for example `INV-001`, > `INV-002`). Consistent numbering is part of GST compliance. ## After saving - **Record a payment** when the customer pays — **[Payments & Receipts](/payments)**. - **Track what's owed** from the customer's record or your reports. - **Restore** an invoice if you delete one by mistake — deleted records can be brought back. ## Related - **[GST on Invoices](/invoicing/gst-invoice)** — how the tax is shown and split - **[Quotations, Orders & Challans](/invoicing/document-types)** — other document types - **[TCS, TDS & Other Charges](/invoicing/tax-tcs-tds)** --- # Quotations, Orders & Challans URL: https://docs.clorvia.com/invoicing/document-types # Quotations, Orders & Challans Not every sales document is a tax invoice. Clorvia lets you choose a **document type** so you can use the right one at each stage of a sale. ## The document types | Type | When to use it | |------|----------------| | **Tax Invoice** | The GST-compliant bill that records the sale | | **Proforma Invoice** | A draft bill sent before the sale is final — not a tax invoice | | **Quotation / Estimate** | A price estimate you send before the customer commits | | **Bill of Supply** | For composition dealers or exempt/nil-rated supplies (no GST charged) | | **Delivery Challan** | Accompanies goods being moved — quantities only, no prices/tax | | **Credit Note** | Reduces a customer's dues against an earlier invoice (returns, rebates) — references the original invoice | | **Debit Note** | Increases a customer's dues against an earlier invoice (extra charges) — references the original invoice | Each type prints with the right title and rules — a **Bill of Supply** carries no tax, a **Delivery Challan** shows quantities without prices, and a **Credit/Debit Note** prints the original invoice number and the reason. ## Preview them first On **Settings → Invoice Branding**, the live preview has a **document-type** selector — switch between Tax Invoice, Proforma, Bill of Supply, Credit Note and the rest to see exactly how each looks with your logo and brand colour before you use it. (Your invoice **format** — A4, thermal, etc. — is your saved default; the document **type** is chosen per document.) ## A typical flow 1. Send a **quotation** to win the business. 2. Convert it into a **sales order** once accepted. 3. Issue a **delivery challan** when goods are dispatched. 4. Raise the **tax invoice** to bill the customer. You choose the document type when creating the record, so the same simple screen handles all of them. > **Same screen, different purpose.** All of these are created the same way (firm, > party, line items) — the document type just changes what the document *is* and how > it reads. → Next: **[TCS, TDS & Other Charges](/invoicing/tax-tcs-tds)** --- # E-Way Bills & E-Invoicing URL: https://docs.clorvia.com/invoicing/eway-einvoice # E-Way Bills & E-Invoicing Depending on your turnover and the goods you move, GST may require an **e-invoice** or an **e-way bill**. Clorvia keeps these details on the invoice. ## E-invoicing (IRN & QR) Businesses above the prescribed turnover threshold must report each B2B invoice and obtain an **Invoice Reference Number (IRN)** and a **signed QR code**. Clorvia stores these on the invoice: - **IRN** — the unique reference for the e-invoice - **Acknowledgement number** and **date** - **Signed QR** — printed on the invoice copy you share > **Do I need e-invoicing?** It applies once your aggregate turnover crosses the > government's threshold. If it applies to you, talk to our team about enabling > e-invoice generation for your account. ## E-way bills When goods move above the prescribed value, an **e-way bill** is required. Clorvia stores the **e-way bill number** against the invoice so your documents stay together. ## Keeping your records GST and company law require you to **retain invoices and related records for several years**. Clorvia keeps your records safe and searchable, and deleted documents can be restored — so your history is always there when you need it for filings or audits. → Next: record money received in **[Payments & Receipts](/payments)**. --- # GST on Invoices URL: https://docs.clorvia.com/invoicing/gst-invoice # GST on Invoices Clorvia is built for Indian GST, so your invoices include everything a valid **tax invoice** needs. ## How GST is split The split depends on the **place of supply** (your customer's state) compared with your **firm's state**: | Situation | Tax applied | |-----------|-------------| | Customer in the **same state** as your firm | **CGST + SGST** (half the rate each) | | Customer in a **different state** | **IGST** (the full rate) | You set the **place of supply** on the invoice; Clorvia applies the right split per line and totals it for you. ## What appears on a compliant tax invoice A GST tax invoice must show certain details. Clorvia captures all of them: - **Supplier** name, address, and **GSTIN** — from your **firm** - **Invoice number** and **date** - **Customer** name, address, and **GSTIN** - **Place of supply** - **HSN/SAC code** per line - **Description, quantity, and unit (UQC)** per line - **Taxable value** per line and in total - **Tax rate** and the **CGST / SGST / IGST / Cess** amounts - **Total invoice value** (with round-off) - **Reverse charge** status > **Why this matters:** if a tax invoice is missing required details, it can be > treated as non-compliant — and your business customer may be unable to claim their > input tax credit. Keeping your firm and item details accurate keeps every invoice > clean. ## Reverse charge If a transaction is under **reverse charge** (the recipient pays the GST), mark the invoice accordingly so it's clearly stated on the document. ## Supply type Mark whether a sale is **B2B**, **B2C**, **Export**, or **SEZ**. This affects whether a customer GSTIN is required and how the supply is treated. ## Cess and round-off - **Cess** — captured when an item attracts GST compensation cess. - **Round-off** — the small adjustment to round the grand total to the nearest rupee. → Next: **[Quotations, Orders & Challans](/invoicing/document-types)** --- # Invoice Branding URL: https://docs.clorvia.com/invoicing/invoice-branding # Invoice Branding Make your invoices unmistakably yours. Your **logo** and **brand colour** appear on every invoice PDF — the online view page, the emailed copy, the payment page, and the paid receipt. Go to **Settings → Invoice Branding**. ## Choose your invoice format On **Settings → Invoice Branding** you'll see all formats with a **live preview** that uses your own logo and brand colour. Click any format to preview it, then **Set as default & save** — the one marked **Default** is used for every invoice you download, email, or share. Available formats: - **Normal A4** — a modern full-page invoice for laser/inkjet printers and PDF sharing. Logo, brand colour, GST breakup, signature line, and UPI QR. - **GST Detailed (A4)** — the traditional Tally-style bordered tax invoice: Bill-To/Ship-To boxes, an HSN/rate-wise tax summary, amount in words, bank details, terms & conditions, and a declaration + signatory block. - **A5 Half-page** — the same branded look on a compact A5 sheet. - **Thermal 80mm** — a receipt for standard 80mm thermal/POS printers (retail counters). Black-and-white (thermal heads print only black), amount in words, and a centred Scan & Pay UPI QR. - **Thermal 58mm** — the receipt for small 58mm thermal printers; the business name auto-fits the narrow roll. - **Thermal 104mm** — the receipt for wider 104mm (4-inch) thermal printers. > Brand colour applies to the A4 and A5 formats. Thermal receipts are > black-and-white because thermal printer heads print only black. ## Set your brand colour Pick a colour with the colour picker, or paste a hex code (for example `#2a1fc9`). It's used for the invoice heading, the table header, and the total bar on the PDF. Click **Save**. ## Upload your logo Click **Upload logo** and choose a **PNG or JPG** (up to ~1.5MB). You'll see a live preview. It prints at the top-left of every invoice. To take it off again, click **Remove**, then **Save**. > Tip: a logo with a transparent background (PNG) looks cleanest on the white > invoice. ## UPI "Scan & Pay" QR Want customers to pay you by UPI in seconds? Add your **UPI ID** in **Settings → Payments** (for example `yourname@okhdfcbank`). Once set, every invoice PDF prints a scannable **Scan & Pay** QR with your UPI ID and the invoice amount — your customer opens any UPI app, scans, and pays straight to your bank. See **[Payments](/account/payments)** for the full UPI and online-payment setup. ## Where branding shows up Once saved, your branding is applied automatically everywhere an invoice is rendered: - the **Download PDF** from an invoice, - invoices you **email** to a customer (PDF attached), - the public **invoice view** and **payment** pages you share, and - the **payment-received** receipt sent after an online payment. You don't need to re-apply it per invoice — set it once and every invoice follows. --- # Share & Collect Payment URL: https://docs.clorvia.com/invoicing/share-collect-payment # Share & Collect Payment Once you've created an invoice, open it and click **Share invoice** (bottom-right of the invoice page). You can send it, share it, or collect payment — all from one place. ## Email the invoice Click **Email invoice (PDF)**. Clorvia generates a polished PDF of the invoice and emails it to your customer with the invoice attached. If you've set up your own [email/SMTP](/account/email-smtp), it's sent from **your** mailbox; otherwise it's sent on your behalf. > The recipient defaults to the customer's email on the invoice — you can type a > different address before sending. ## Share on WhatsApp Click **Share on WhatsApp**. Your device's WhatsApp opens with a ready-to-send message — a greeting, the invoice amount and balance, and a link — addressed to the customer's number if it's on file. Just pick the chat and hit send. ## Share view-only Click **Share (view-only)** to get a public link your customer can open to **view** the invoice and download the PDF — no payment, no login. Copy the link and send it however you like. ## Collect payment online Click **Payment link** to get a secure link that takes your customer straight to a payment page. When they pay: - the **invoice is marked paid automatically**, and - a **payment-received email with the invoice PDF** goes to your customer. To collect payments, connect your payment account once under [Settings → Payments](/account/payments). Until then, the payment link shows the invoice view. ## What your customer sees - **Email** — a branded email with the invoice PDF attached and a button to view or pay. - **WhatsApp** — your message with a tap-through link. - **Payment link** — a secure hosted payment page; on success they get a receipt. - **View link** — a clean invoice page with a Download PDF option. --- # TCS, TDS & Other Charges URL: https://docs.clorvia.com/invoicing/tax-tcs-tds # TCS, TDS & Other Charges Beyond GST, invoices sometimes need other adjustments. Clorvia supports these on the invoice. ## TCS (Tax Collected at Source) Where TCS applies to a sale, record the **TCS amount** on the invoice so the total the customer pays is correct and the collection is captured for your filings. ## TDS (Tax Deducted at Source) Where the customer deducts **TDS** on a payment, record the **TDS amount** so the expected receipt and the party's balance are accurate. ## Discounts Apply a **discount** at the line level. The taxable value and GST recalculate so the final figures stay correct. ## Round-off Clorvia can apply a **round-off** to bring the grand total to a clean rupee figure, shown clearly on the invoice. ## Profit on a sale Because items carry a **purchase price**, Clorvia can show the **profit** on a sale (selling price minus cost). It's a handy way to see margin at a glance. > **TCS/TDS rules vary by transaction and turnover.** If you're unsure whether they > apply, check with your accountant — Clorvia gives you the fields to record them > accurately once you know. → Next: **[E-Way Bills & E-Invoicing](/invoicing/eway-einvoice)** --- # Payments & Receipts URL: https://docs.clorvia.com/payments # Payments & Receipts Recording payments keeps your outstanding balances accurate and tells you, at any moment, who owes you and whom you owe. ## Record a receipt (money in) ### Open Payments Click **Payments** in the sidebar and choose **+ New**. ### Enter the details - **Direction** — *In* for money received. - **Amount** received. - **Mode** — cash, UPI, bank transfer, cheque, card, etc. - **Party** — the customer who paid. - **Invoice** — link it to the invoice being settled (optional but recommended). ### Save The customer's balance updates, and the linked invoice reflects the payment. ## Record a payment (money out) For money you pay a supplier, create a payment with **Direction = Out**, choose the supplier, and link it to the relevant bill if you have one. > **Link payments to invoices** whenever you can. It keeps each invoice's > paid/unpaid status correct and makes your outstanding (receivables/payables) > reports trustworthy. ## Part payments If a customer pays only part of an invoice, record the amount they paid. The invoice shows as **partly paid** and the remaining balance stays outstanding until settled. ## Seeing what's outstanding - Open a **party** to see their running balance and history. - Use **[Reports & Dashboards](/reports)** to see outstanding receivables across all customers. → Next: track spending in **[Expenses & Purchases](/expenses)**. --- # Customer Statements URL: https://docs.clorvia.com/payments/statements # Customer Statements A **statement of account** is a single document that shows a customer everything between you for a period — invoices raised, payments received, credit/debit notes — with a **running balance** and the **total they still owe**. ## What's on the statement - Your business header (with your logo and brand colour). - The customer's details and the statement **period**. - An **opening balance**. - A dated ledger — invoices and debit notes as **Debit**, payments and credit notes as **Credit** — with a **running balance** after each entry. - The **Closing Balance Due**. - An **ageing summary** — how much is Current vs 1-30, 31-60, 61-90, and 90+ days overdue, so you can see what's due and what's late at a glance. ## Send a statement 1. Open the customer. 2. Choose **Statement of Account** and pick the period (e.g. this quarter). 3. **Download** the PDF, or **Email** it straight to the customer — the PDF is attached and the email is sent from your own address. > Statements are great for month-end or quarter-end follow-ups, and for giving a > customer a clear picture before they clear their dues. --- # Recording Expenses URL: https://docs.clorvia.com/expenses # Recording Expenses Track what your business spends so your profit and tax position are accurate. ## Record an expense ### Open Expenses Click **Expenses** in the sidebar and choose **+ New**. ### Enter the details - **Description** of the expense - **Amount** (including tax) - **Tax amount** — the GST portion, if any - **Supplier (party)** — who you paid - **Date** and a category/notes if useful ### Save The expense is recorded and flows into your Profit & Loss. ## Input Tax Credit (ITC) When you buy goods or services for your business, the GST you pay can often be claimed back as **input tax credit**. On an expense you can capture the **tax amount** and mark whether the **ITC is claimable**, so you have the figures ready at filing time. > **Keep the supplier's GSTIN on file.** ITC depends on a valid tax invoice from a > registered supplier — recording the supplier as a **party** with their GSTIN keeps > everything connected. ## Expenses vs. fixed assets - An **expense** is consumed now (rent, supplies, utilities). - A **fixed asset** is a long-lived purchase (equipment, vehicles) — record those separately so they're tracked as assets. See **[Fixed Assets](/expenses/fixed-assets)**. → Next: **[Fixed Assets](/expenses/fixed-assets)** --- # Fixed Assets URL: https://docs.clorvia.com/expenses/fixed-assets # Fixed Assets **Fixed assets** are things your business owns and uses over a long time — machinery, computers, furniture, vehicles, and so on. Unlike day-to-day expenses, they're recorded as **assets** because they keep their value and appear on your Balance Sheet. ## Record a fixed asset Open **Fixed Assets** and create a new record with: - **Name** of the asset - **Purchase value** and **purchase date** - A category or notes (optional) ## Why track them separately - They show up under **assets** on your **[Balance Sheet](/reports/financial-reports)**. - You can keep a clear register of what your business owns. - It keeps your day-to-day **expenses** clean and your profit accurate. → Next: understand your books in **[Accounting](/accounting)**. --- # Accounting & Ledger URL: https://docs.clorvia.com/accounting # Accounting & Ledger Clorvia includes a proper **double-entry accounting** system, so the same data that makes your invoices also keeps your books — and powers your Profit & Loss and Balance Sheet. You don't need to be an accountant to use Clorvia, but it helps to understand the pieces. ## Chart of accounts Your **chart of accounts** is the list of "buckets" your money flows through. Each **ledger account** has a type: | Type | Examples | |------|----------| | **Asset** | Cash, Bank, Accounts Receivable, Fixed Assets | | **Liability** | Accounts Payable, GST Payable, Loans | | **Income** | Sales, Other Income | | **Expense** | Purchases, Rent, Salaries | | **Equity** | Owner's capital | ## Journal entries A **journal entry** is a single accounting transaction. Following double-entry rules, every entry has **debits that equal credits** — money always comes *from* somewhere and goes *to* somewhere. For example, a cash sale of ₹1,180: | Account | Debit | Credit | |---------|------:|-------:| | Cash (Asset) | ₹1,180 | | | Sales (Income) | | ₹1,000 | | GST Payable (Liability) | | ₹180 | The total debits (₹1,180) equal the total credits (₹1,180) — the entry **balances**. > **The golden rule:** in double-entry accounting, total debits always equal total > credits. Clorvia keeps every entry balanced so your books are always in order. ## How it connects to everything else Your **invoices**, **payments**, and **expenses** are the source of your accounting. As you record them, your ledger accounts build up — and your financial reports (trial balance, Profit & Loss, Balance Sheet) are produced from these ledgers. ## Recording a manual entry For adjustments that aren't a normal invoice or payment (opening balances, corrections, depreciation), you can create a **journal entry** directly — add the debit and credit lines, make sure they balance, and save. → Next: see the results in **[Reports & Dashboards](/reports)**. --- # Dashboards URL: https://docs.clorvia.com/reports # Dashboards Dashboards turn your data into a picture of your business. Build your own with charts and number widgets — and see exactly the metrics you care about. ## Build a dashboard ### Open Dashboards Find **Dashboards** in your workspace. ### Add a widget Choose what to show — for example: - **Number widgets** — a single figure like *total sales this month*, *outstanding receivables*, or *number of invoices*. - **Chart widgets** — a breakdown such as *sales by month* or *sales by customer*. ### Pick the data and filters Point the widget at your invoices, payments, or expenses, choose the measure (sum, count), and add filters (date range, customer, status). ### Save and arrange Lay your widgets out the way you like. Your dashboard updates as new transactions come in. ## Ideas for useful dashboards | Widget | Shows | |--------|-------| | Total sales (this month) | Revenue at a glance | | Outstanding receivables | How much customers owe you | | Expenses (this month) | What you're spending | | Sales by customer | Who your biggest customers are | | Invoices created | Activity over time | > Dashboards are **per company** — switch companies to see each one's numbers. → For statutory financials, see **[P&L, Balance Sheet & Trial Balance](/reports/financial-reports)**. --- # P&L, Balance Sheet & Trial Balance URL: https://docs.clorvia.com/reports/financial-reports # P&L, Balance Sheet & Trial Balance These are the reports that tell you how your business is really doing. Clorvia builds them from your invoices, payments, expenses, and ledger. ## Profit & Loss (P&L) The **Profit & Loss** shows your **income minus expenses** over a period — your profit (or loss). Use it to answer "did we make money this month/quarter/year?" - **Income** — sales and other revenue - **Expenses** — purchases, rent, salaries, and so on - **Net profit** — what's left over ## Balance Sheet The **Balance Sheet** is a snapshot of what your business **owns and owes** at a point in time: - **Assets** — cash, bank, receivables, fixed assets - **Liabilities** — payables, GST due, loans - **Equity** — the owner's stake Assets always equal liabilities plus equity — that's the accounting balance. ## Trial Balance The **Trial Balance** lists every ledger account with its debit or credit balance. It's the bridge between your day-to-day transactions and your P&L/Balance Sheet, and a quick way to check the books are in order (total debits equal total credits). > **Where the numbers come from:** every invoice, payment, and expense feeds your > ledger accounts (**[Accounting](/accounting)**). These reports simply summarise > those ledgers — so the more consistently you record transactions, the more accurate > your reports. ## Choosing the period Set the **date range** to view a month, quarter, or financial year — handy at filing time or for a board update. → Next: **[Party & Item Reports](/reports/party-item)** --- # GST Returns (GSTR-1 & GSTR-3B) URL: https://docs.clorvia.com/reports/gst-returns # GST Returns Clorvia summarises your sales for the period so filing **GSTR-1** and **GSTR-3B** is quick — no manual adding up. ## GSTR-1 summary For a chosen period you get: - **B2B vs B2C** split (by whether the customer has a GSTIN), with invoice counts and taxable value. - **Rate-wise** breakup — taxable value and CGST / SGST / IGST at each GST rate. - **HSN-wise summary** — quantity, taxable value, and tax per HSN/SAC code. - **Totals** — taxable value and total tax for the period. ## GSTR-3B summary The **3.1(a) outward taxable supplies** figures — total taxable value and IGST / CGST / SGST — ready to enter on the portal. ## How to use it 1. Go to **Reports** and choose **GST Returns**. 2. Pick the period (e.g. a month or quarter). 3. Review the summary on screen and export it. > These are **filing-reference summaries** computed from your invoices. Always > reconcile against your books before filing on the GST portal. Clorvia keeps your > invoices GST-compliant (HSN/SAC, place of supply, CGST/SGST/IGST split) so the > numbers line up. --- # Party & Item Reports URL: https://docs.clorvia.com/reports/party-item # Party & Item Reports Beyond the headline financials, Clorvia helps you drill into **who** and **what** is driving your business. ## Party (customer/supplier) reports Open any **party** to see their complete picture: - Every **invoice** and **payment** linked to them - Their **running balance** — how much they owe you (or you owe them) Across all parties, you can see: - **Outstanding receivables** — total owed to you, by customer - **Outstanding payables** — total you owe, by supplier - **Party-wise profit** — which customers are most profitable This is the fastest way to answer "who owes me money?" and "who are my best customers?" ## Item reports For your products and services, you can see: - **Best sellers** — which items generate the most sales - **Stock levels** — what's running low - **Batch/expiry** — for batch-tracked items ## Build your own Most of these views can also be built as **dashboard widgets** so they're always a click away — see **[Dashboards](/reports)**. → Next: manage your **[Account & Settings](/account)**. --- # Profile & Settings URL: https://docs.clorvia.com/account # Profile & Settings Manage your account and tailor each company to how you work. ## Your profile From your **account menu** (top-right), you can: - Update your **name** and personal details - Change your **password** - Manage **security** options like two-factor authentication — see **[Security](/account/security)** - Sign out ## Company settings Each company has its own settings, including: - **Company / firm details** — name, address, GSTIN (see **[Firms & GST Identity](/companies/firms)**) - **Team members and their roles** — see **[Team & Roles](/account/team)** - **Connected accounts** — link an email/calendar account if you use those features ## Switching companies Use the **company switcher** at the top to move between businesses. Settings always apply to the company you're currently viewing. See **[Companies](/companies)**. → Next: **[Team & Roles](/account/team)** --- # Plans & Billing URL: https://docs.clorvia.com/account/billing # Plans & Billing Clorvia offers simple monthly plans. You can see your current plan, pick a new one, and pay securely — all from **Settings → Billing**. ## Your 14-day free trial Every new account starts with a **14-day free trial** — full access to create invoices, record payments, and run your books, no card required. You'll see a reminder as the trial nears its end. When the trial (or a paid plan) ends, your data stays safe and you can still view everything, but you'll need an **active plan to keep creating and editing** — a prompt will guide you to choose a plan and pick up right where you left off. ## Plans | Plan | Price | Best for | |------|-------|----------| | **Starter** | ₹999/mo | A single business — unlimited invoices & GST reports, items, parties, payments, email support | | **Professional** | ₹2,499/mo | Growing businesses — up to 5 companies, accounting ledger & balance sheet, support tickets & priority help | | **Business** | ₹4,999/mo | Multi-company operations — unlimited companies, e-invoicing & e-way (with GSP), dedicated onboarding | > Prices and inclusions are shown live on the Billing page — that's always the > source of truth. ## Subscribe to a plan ### Open Billing Go to **Settings → Billing**. You'll see your **current plan** at the top and the available plans below. ### Choose a plan and click Subscribe Click **Subscribe** on the plan you want. Clorvia takes you to a **secure Zoho payment page** to complete the purchase. ### Pay securely Complete the payment on the Zoho page (cards, UPI, net banking, and more). Clorvia never sees or stores your card details — payments are handled by **Zoho**. ### You're active Once payment succeeds, your subscription is activated and the Billing page shows your plan as **Active**. ## Managing your subscription The Billing page shows your subscription status: - **No plan** — you haven't subscribed yet; pick a plan to start. - **Pending** — a payment was started but not yet completed. Finish it (or start again) to activate. - **Active** — your plan is live, with its current billing period. **Upgrading:** you can move up to a higher plan any time from the Billing page; the change applies right away. To move to a **lower** plan, contact support so we can help with the transition. > **Need a different plan or have a billing question?** Raise a > **[support ticket](/support/tickets)** or email > [support@clorvia.com](mailto:support@clorvia.com). ## Is my payment secure? Yes. All payments go through **Zoho's hosted, PCI-compliant** payment pages. Clorvia receives only a confirmation that the payment succeeded — never your card or bank details. → Next: manage your **[Team & Roles](/account/team)** or get **[Support](/support)**. --- # Email & SMTP URL: https://docs.clorvia.com/account/email-smtp # Email & SMTP By default, Clorvia sends your emails (like invoices) on your behalf. If you'd rather send from **your own mailbox** — so emails come from your address and land in your sent folder — connect your SMTP server. Go to **Settings → Email & SMTP**. ## Choose how email is sent - **Clorvia default** — we send for you. Nothing to configure. - **My own SMTP** — emails are sent through your mail server. ## Connect your SMTP Pick **My own SMTP** and enter the details from your email provider: | Field | What to enter | |---|---| | **SMTP host** | e.g. `smtp.yourprovider.com` | | **Port** | usually `587` (STARTTLS) or `465` (SSL) | | **Username** | your SMTP login | | **Password** | your SMTP password / app password | > Many providers (Gmail Workspace, Zoho Mail, Outlook) require an **app-specific > password** rather than your normal login password. Check your provider's docs. ## Sender & branding - **From address / From name** — what your customers see as the sender. - **Reply-To** — where replies go, if different from the sender. - **CC** — addresses to copy on every send (e.g. your accounts inbox). - **Invoice email subject / body** — customize the message that accompanies an emailed invoice. You can use placeholders like `{{number}}` and `{{firm}}`. Click **Save**. Your next emailed invoice will use these settings. --- # Payments URL: https://docs.clorvia.com/account/payments # Payments Connect your payment account so customers can pay your invoices online. Money is settled directly to **your own** payment account. Go to **Settings → Payments**. ## Connect Razorpay 1. Sign in to your Razorpay dashboard and open **Settings → API Keys**. 2. Generate a key pair and copy the **Key ID** and **Key Secret**. 3. In Clorvia, paste them into **Settings → Payments**, tick **Enable collecting payments via Razorpay**, and click **Save**. Your key secret is stored securely and never shown again — to change it, just paste a new one. ## How customers pay Once connected, the **Payment link** on any invoice (Share invoice → Payment link) opens a secure Razorpay payment page. When the customer pays: - the invoice is **marked paid automatically**, and - a **payment-received email with the invoice PDF** is sent to your customer. ## UPI "Scan & Pay" QR on invoices Want to collect by UPI without a gateway? Add your **UPI ID** in **Settings → Payments** (for example `yourname@okhdfcbank`). Once set, every invoice PDF prints a scannable **Scan & Pay** QR code with your UPI ID and the invoice amount. Your customer opens any UPI app (GPay, PhonePe, Paytm…), scans, and pays you directly — money lands straight in your bank account. > The UPI QR works on its own — you don't need to connect Razorpay to use it. > You can also do both: show the QR for instant UPI payments and keep the online > payment link for cards, net-banking, and wallets. ## Test vs live Razorpay gives you **test** keys (`rzp_test_…`) and **live** keys (`rzp_live_…`). Use test keys to try the flow without real money, then switch to live keys when you're ready to collect real payments. > Tip: keep your secret safe — anyone with it can act on your payment account. > Rotate it from the Razorpay dashboard if it's ever exposed. --- # Security URL: https://docs.clorvia.com/account/security # Security Your books contain sensitive financial and customer data. Clorvia takes security seriously, and there are a few things you can do to keep your account safe. ## Password - Use a **strong, unique** password. - Change it from your **profile** if you suspect it's been exposed. - Use **Forgot password** on the sign-in screen if you're locked out. ## Two-factor authentication (2FA) Turn on **2FA** for an extra layer of protection. With 2FA, signing in needs both your password and a one-time code from your authenticator app — so a stolen password alone isn't enough to get in. ## Your data is protected - All traffic to Clorvia is **encrypted** (HTTPS). - Each **company's data is isolated** — members only see the companies they've been invited to. - **Roles** limit what each team member can do. > **Privacy:** Clorvia handles your customers' personal data (names, contacts, GSTINs) > in line with applicable data-protection laws. Only collect what you need, and use > team roles to limit who can see sensitive details. ## Good habits - Don't share logins — invite people as **team members** instead. - Remove members who leave. - Sign out on shared devices. → Need help? See **[Support & FAQ](/support)**. --- # Team & Roles URL: https://docs.clorvia.com/account/team # Team & Roles Run your books as a team. Invite colleagues to a company and decide what each person can access. ## Invite a team member ### Open team settings Go to your company's **Team / Members** settings. ### Send an invitation Enter the person's **email** and choose their **role**. They'll receive an invitation to join. ### They accept and join Once they accept, they can sign in and start working in that company. ## Roles Roles control what a member can do — for example a full **Admin** versus a member with limited access. Assign the role that fits each person's responsibilities. > **Members are per company.** Someone invited to one company doesn't automatically > get access to your other companies — invite them to each company they should work > in. ## Removing a member If someone leaves or no longer needs access, remove them from the company's team. Their access ends immediately. → Next: **[Security](/account/security)** --- # Getting Help URL: https://docs.clorvia.com/support # Getting Help We want you to get the most out of Clorvia. Here's how to find answers and reach us. ## Help yourself first - **Search** these docs (top of the page) for any topic. - Start with **[Getting Started](/getting-started)** if you're new. - Check the **[FAQ](/support/faq)** for common questions. ## Contact support If you're stuck or something isn't working as expected, contact our team: - **Email:** [support@clorvia.com](mailto:support@clorvia.com) - **In-app:** use the help option in your account menu > **Tips for a fast resolution:** tell us which **company** you were in, the **screen** > you were on, what you **expected** to happen, and what **actually** happened. A > screenshot of any error message helps a lot. ## Tax & accounting questions These docs explain how to **use Clorvia**. For advice specific to your business — whether e-invoicing applies to you, which HSN code to use, or how to treat a particular transaction — please consult your **accountant or tax advisor**. → See common questions in the **[FAQ](/support/faq)**. --- # Error Messages Explained URL: https://docs.clorvia.com/support/errors # Error Messages Explained When something can't be completed, Clorvia shows a short message (usually a small toast in the corner, or a note under the field you're editing). This page lists the messages you may see, **why** they happen, and **how to fix them**. > **Tip:** the message text tells you the reason. If you ever see a generic > *"An error occurred"*, reload the page and try again — if it keeps happening, > [contact support](/support) with a screenshot. ## Sign-up & sign-in | Message | Why it happens | What to do | | --- | --- | --- | | **A user with this email already exists** | An account is already registered with that email. | Use **Sign in** instead, or reset your password. | | **Email must be a valid email** | The email address is mis-typed (missing `@` or domain). | Check the spelling and try again. | | **Password must be between 8 and 50 characters** | The password is too short or too long. | Use at least 8 characters. | | **Full name is required** | Sign-up needs your name for your workspace profile and invoices. | Enter your full name. | | **Company name is required** | Your company name becomes your workspace name and appears on invoices. | Enter your business / company name. | | **A valid phone number is required** | The phone field is empty or incomplete. | Enter your 10-digit mobile number (the `+91` is added for you). | | **Invalid email or password** | The email/password combination doesn't match an account. | Re-check both. Use **Forgot password** if needed. | | **Captcha verification failed** | The anti-bot check didn't pass (often a slow network or an expired page). | Reload the page and try again. | ## Your session | Message | Why it happens | What to do | | --- | --- | --- | | **Your session has expired** / you're sent back to sign-in | For your security, sign-in sessions don't last forever. | Sign in again. Your data is safe. | | **Unauthorized** | You're not signed in, or your session ended. | Sign in again. | ## Plans, billing & feature access Clorvia has **Free**, **Starter**, **Professional** and **Business** plans, plus a 14-day free trial. Some features are only on higher plans — see [Plans & Billing](/account/billing). | Message | Why it happens | What to do | | --- | --- | --- | | **Upgrade required for this feature** | The feature you tapped isn't included in your current plan. | Open **Settings → Plans** and upgrade. The message names the plan you need. | | **Subscription not active** | Your trial ended (or a paid plan expired) and you're on the **Free** plan, which doesn't include this feature. | Subscribe or renew in **Settings → Plans**. | | **API not available on your plan** | The Developer **REST API** and **MCP** access require the **Business** plan (or an active trial). | Upgrade to **Business**, or use the app directly. | | **Payment failed** | The bank/card declined the payment, or it was cancelled. | Try again, use a different method, or contact your bank. No charge is taken on a failure. | | **Payment is still processing** | The bank hasn't confirmed the payment yet. | Wait a few minutes — Clorvia activates your plan automatically once the bank confirms (even up to an hour later). No need to pay again. | > **Important:** you are never double-charged. If a payment is stuck, wait for the > confirmation rather than paying again — the plan activates on its own when the > bank confirms. ## Workspace & team members | Message | Why it happens | What to do | | --- | --- | --- | | **The workspace owner cannot be removed** | The account that created the workspace is its permanent owner and can't be removed or leave. | To hand over a business, contact support. Other members can still be removed normally. | | **Member not found** | The member was already removed, or the page is out of date. | Reload the Members page. | | **You don't have permission to do this** | Your role doesn't allow that action. | Ask the workspace **owner** to do it or to update your role. | ## Saving records (invoices, items, parties…) | Message | Why it happens | What to do | | --- | --- | --- | | **An item / customer with this name already exists** | Names must be unique within a company. | Use a different name, or edit the existing record. | | **This field is required** | A mandatory field (e.g. invoice date, party) is empty. | Fill the highlighted field. | | **Invalid value** | The value doesn't fit the field (e.g. letters in an amount, a bad GSTIN). | Correct the highlighted field. A GSTIN is 15 characters. | | **Not found** | The record was deleted, or you opened an old link. | Go back and reload the list. | ## Developer API errors If you use the [REST API](/developers/rest-api), errors come back as JSON with an `error` message and the matching HTTP status: | Status | Meaning | Common cause | | --- | --- | --- | | **400** Bad Request | The request body is invalid. | A missing or mis-typed field. Check the `error` text. | | **401** Unauthorized | The API key is missing or wrong. | Send `Authorization: Bearer `. Create one in **Settings → Developers**. | | **402** Payment Required | `API not available on your plan`. | Upgrade to **Business** (or use it during your trial). | | **403** Forbidden | The API key lacks permission for that action. | Use a key with the right access. | | **404** Not Found | The record or endpoint doesn't exist. | Check the ID and the URL path. | | **429** Too Many Requests | You're sending requests too fast. | Slow down / retry after a short pause. | See [Using the API](/developers/using-the-api) for examples. ## Still stuck? If a message isn't listed here, or the fix didn't help: - Reload the page and retry once. - Note the **exact message**, the **screen** you were on, and what you were doing. - [Contact support](/support) with that information (a screenshot helps). --- # FAQ URL: https://docs.clorvia.com/support/faq # Frequently Asked Questions ## Getting started **Do I need to install anything?** No. Clorvia runs in your web browser at [app.clorvia.com](https://app.clorvia.com). **Is my first company set up automatically?** Yes — when you sign up, a company is created for you. Just add your business details and GSTIN (your **[firm](/companies/firms)**) to finish. ## Companies & firms **What's the difference between a company and a firm?** A **company** is a separate business with its own books. A **firm** is the GST identity (name + GSTIN) that issues invoices within a company. One business with multiple GST registrations = multiple **firms** in one company. Separate businesses = separate **companies**. See **[Companies](/companies)**. **Can I run more than one business?** Yes — create multiple companies and switch between them anytime. Their data never mixes. ## Invoicing & GST **How does Clorvia decide CGST/SGST vs IGST?** By comparing your firm's state with the invoice's **place of supply** — same state uses CGST+SGST, different states use IGST. See **[GST on Invoices](/invoicing/gst-invoice)**. **Can I send quotations and delivery challans, not just invoices?** Yes — choose the **document type** when you create the document. See **[Quotations, Orders & Challans](/invoicing/document-types)**. **Do I need e-invoicing (IRN/QR)?** It applies once your turnover crosses the government threshold. Clorvia stores the IRN, acknowledgement, and QR on the invoice. If it applies to you, contact us about enabling generation. See **[E-Way Bills & E-Invoicing](/invoicing/eway-einvoice)**. ## Items & customers **Can I charge different prices to different customers?** Yes — set price levels on items and a **price tier** on each customer. See **[Pricing](/items/pricing)**. **Can I add fields Clorvia doesn't have?** Yes — add **custom fields** to items, customers, and more. See **[Bulk Update & Custom Fields](/items/bulk-custom)**. ## Records & data **I deleted something by mistake — is it gone?** No. Deleted records can be **restored**. Look for the deleted/recycle filter on the relevant list. **How long does Clorvia keep my records?** Your financial records are retained for the long term, in line with statutory requirements, so they're available for filings and audits. ## Reports **Where do I see profit, outstanding amounts, and the Balance Sheet?** In **[Reports & Dashboards](/reports)** — build dashboards for live metrics and open the financial reports for P&L, Balance Sheet, and Trial Balance. ## Account **How do I add my team?** Invite them with a role from your company's team settings. See **[Team & Roles](/account/team)**. **How do I make my account more secure?** Use a strong password and turn on **two-factor authentication**. See **[Security](/account/security)**. --- Didn't find your answer? **[Contact support](/support)**. --- # Support Tickets URL: https://docs.clorvia.com/support/tickets # Support Tickets Clorvia has a built-in **ticket system** so you can track support requests — your own, or ones raised on behalf of a customer — without leaving the app. ## Raise a ticket ### Open Tickets Click **Tickets** in the sidebar, then **+ New**. ### Fill in the details - **Subject** — a short summary of the issue - **Description** — the full details - **Priority** — Low / Medium / High / Urgent - **Category** — Billing / Technical / General - **Customer** — link the ticket to the **[party](/parties)** it relates to (optional) ### Save The ticket is created with status **Open** and a reference number you can quote. ## The conversation thread Open any ticket to see its **message thread**. Add a reply to keep the conversation in one place: - Replies from your team are marked as **staff replies**. - Customer replies are recorded against the ticket too. This gives you a complete history of every support request. ## Track status Each ticket moves through a simple lifecycle — update the **Status** as you work: | Status | Meaning | |--------|---------| | **Open** | New, not yet started | | **In Progress** | Being worked on | | **Resolved** | Fixed, awaiting confirmation | | **Closed** | Done | > **Tip:** Filter the Tickets list by **status** or **priority** to focus on > what needs attention, and open a **customer** to see all their tickets in one place. ## See a customer's tickets Because tickets link to a **party**, opening a customer shows all their support tickets alongside their invoices and payments — a full 360° view of the relationship. → Need to contact us instead? See **[Getting Help](/support)**. --- # Developer API URL: https://docs.clorvia.com/developers # Developer API Clorvia has a full API so you can **automate your books** and **connect Clorvia to your other software** — your own app, an e‑commerce store, a POS, a spreadsheet tool, or any system that can make HTTPS requests. Anything you can do in the Clorvia app, you can do through the API: create customers and items, raise GST invoices, record payments, read reports, and more. ## What you get - **API keys** — secure, revocable keys scoped to a role, so a key can only do what that role is allowed to do. [Manage API keys →](/developers/api-keys) - **A simple REST API** — plain HTTPS endpoints with JSON in and JSON out. List, create, update and delete any of your records (customers, items, invoices, payments…). **This is the recommended way to integrate.** [REST API reference →](/developers/rest-api) - **AI agents (MCP)** — connect Claude or any AI agent with the Model Context Protocol and run your account in natural language. [Connect an agent →](/developers/mcp) - **Webhooks** — get a signed notification the moment something changes (an invoice is paid, a customer is created…) so you don't have to keep polling. [Set up webhooks →](/developers/webhooks) ## How it fits together 1. Create an **API key** in **Settings → APIs & Webhooks** and copy its token. 2. Send REST requests with that token in the `Authorization` header. 3. Optionally register **webhooks** so Clorvia pushes changes to your system in real time. ## Quick start ```bash # List your customers (parties) curl https://api.clorvia.com/api/v1/parties \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` ```bash # Create a customer curl -X POST https://api.clorvia.com/api/v1/parties \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Acme Traders","gstin":"27ABCDE1234F1Z5"}' ``` See the full [REST API reference](/developers/rest-api) for every endpoint, field, filtering, pagination, and examples. ## Good to know - Every key and request is scoped to **your workspace** — the API can never reach another customer's data, and it only exposes your business records (never internal/admin objects). - Keys respect **roles**: give an integration a read‑only role if it only needs to read. - The API requires an **active subscription or trial**. If your plan lapses, API calls return `Subscription Not active` until you renew. - All traffic is over **HTTPS**. --- # API Keys URL: https://docs.clorvia.com/developers/api-keys # API Keys API keys let your other software sign in to Clorvia **as an integration** instead of as a person. Each key is bound to a **role**, so it can only do what that role is allowed to do, and you can **revoke** it at any time. ## Create an API key 1. Go to **Settings → APIs & Webhooks**. 2. Under **API keys**, click **Create API key**. 3. Give it a clear **name** (e.g. "Website checkout", "Accounting sync"). 4. Choose the **role** the key should act as — this controls its permissions. 5. Optionally set an **expiry date**. 6. Click **Create**, then **Generate token**. > **Copy the token now.** The full token is shown **only once**, right after you > generate it. Store it somewhere safe (a secrets manager). If you lose it, just > revoke the key and generate a new one — you can't view it again. ## Use the token Send it as a Bearer token on every request: ``` Authorization: Bearer YOUR_API_KEY_TOKEN ``` See [Using the API](/developers/using-the-api) for full examples. ## Scope a key with roles A key inherits the full permissions of the role you assign it. Best practice: - Create a **dedicated role** for each integration with only the permissions it needs (for example, a **read‑only** role for a reporting tool). - Use **separate keys** for separate systems, so you can revoke one without affecting the others. You can **reassign** a key to a different role later from the same screen. ## Expiry and rotation - An optional **expiry** date means the key stops working automatically after that date — useful for temporary access. - To **rotate** a key, create a new one, switch your integration over, then revoke the old one. ## Revoke a key If a key is no longer needed or may have leaked, click **Revoke**. Revocation is **immediate** — the very next request with that token is rejected. Revoking is permanent; there's no "un‑revoke" (create a new key instead). ## Keep keys safe - **Never** put a key in client‑side code, a public repository, or a URL. - Treat a key like a password — anyone with it can act as that role in your workspace. - Rotate keys periodically and whenever a team member with access leaves. --- # AI Agents (MCP) URL: https://docs.clorvia.com/developers/mcp # AI Agents (MCP) Clorvia has a built-in **MCP server** (Model Context Protocol), so you can connect an **AI agent** — Claude, Cursor, Cline, or your own — and run your account in plain language: *"create a GST invoice for Acme for ₹50,000"*, *"list unpaid invoices"*, *"add a new customer"*. The agent talks to the same secure API as everything else — so it only ever sees **your** workspace, respects your **API key's role**, and stops working if your subscription or trial has lapsed. - **Endpoint:** `https://api.clorvia.com/mcp` - **Transport:** Streamable HTTP (JSON-RPC 2.0) - **Auth:** your Clorvia **API key** in the `Authorization: Bearer ` header ## 1. Create an API key In Clorvia, go to **Settings → APIs & Webhooks**, create a key, and copy its token. Give the key the least-privileged role it needs (read-only is fine if the agent should only read). ## 2. Connect your agent ### Clients that support remote MCP servers Point the client at the URL and add your key as a header: ``` URL: https://api.clorvia.com/mcp Header: Authorization: Bearer YOUR_API_KEY_TOKEN ``` ### Clients that only support local (stdio) servers — e.g. Claude Desktop Use the `mcp-remote` bridge. Add this to your client's MCP config: ```json { "mcpServers": { "clorvia": { "command": "npx", "args": [ "-y", "mcp-remote", "https://api.clorvia.com/mcp", "--header", "Authorization: Bearer YOUR_API_KEY_TOKEN" ] } } } ``` Restart the client and Clorvia's tools will appear. ## 3. What the agent can do | Tool | What it does | |------|--------------| | `whoami` | Show the connected workspace and whether the subscription/trial is active | | `list_objects` | Discover your record types (invoices, customers, items, payments…) | | `describe_object` | List an object's fields so the agent knows what to send | | `list_records` | List records, with optional filters and a limit | | `get_record` | Fetch one record by id | | `create_record` | Create a record (customer, item, invoice…) | | `update_record` | Update fields of a record | | `delete_record` | Delete a record (soft by default) | With these, an agent can read and write anything in your account — for example create customers and items, raise invoices, look up dues, and update records. ## Subscription required MCP uses the same gate as the REST API. If your trial or plan has expired, tool calls return **`Subscription Not active`** until you renew. ## Security - The agent authenticates with **your API key** — it can never reach another customer's data, and it's confined to **your workspace**. - The key respects its **role**: give the agent a read-only key if it should only read. - Revoke the key anytime in **Settings → APIs & Webhooks** to instantly cut off access. - Treat the API key like a password — don't paste it into untrusted tools. → See the [REST API reference](/developers/rest-api) for the underlying operations. --- # REST API URL: https://docs.clorvia.com/developers/rest-api # REST API The Clorvia REST API lets you automate everything in your account with plain HTTPS requests and JSON — no GraphQL needed. List, create, update and delete any of your business records, and read back the full details so you can drive your own systems. - **Base URL:** `https://api.clorvia.com/api/v1` - **Auth:** your API key in the `Authorization: Bearer ` header (or `X-API-Key: `) - **Format:** JSON request and response bodies > The API only exposes **your own business data** (customers, items, invoices, > payments, accounting, tickets…). It never exposes another customer's data or any > internal/admin objects. ## Authentication Create an API key in **Settings → APIs & Webhooks**, then send it on every request: ```bash curl https://api.clorvia.com/api/v1/parties \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` Requests without a valid key get `401 Unauthorized`. ## Subscription required All data endpoints require an **active subscription or trial**. If your trial or plan has expired, every call returns: ```json { "error": "Subscription Not active", "subscriptionActive": false, "status": "expired", "message": "Your trial or subscription has expired. Renew your plan to continue using the API." } ``` with HTTP status `402 Payment Required`. Renew your plan to restore access. You can always check your status at `GET /api/v1/me`. ## Discover your data Your account has a set of **objects** (record types). List them: ```bash curl https://api.clorvia.com/api/v1/objects \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` ```json { "count": 21, "data": [ { "nameSingular": "party", "namePlural": "parties", "labelPlural": "Customers & Suppliers", "endpoint": "/api/v1/parties" }, { "nameSingular": "invoice", "namePlural": "invoices", "labelPlural": "Invoices", "endpoint": "/api/v1/invoices" }, { "nameSingular": "item", "namePlural": "items", "labelPlural": "Items", "endpoint": "/api/v1/items" } ] } ``` See the exact fields of any object: ```bash curl https://api.clorvia.com/api/v1/objects/invoices \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` Each field lists its `name`, `label`, `type`, and whether it's required/unique. ## List records ``` GET /api/v1/{objectPlural} ``` Query parameters: | Param | Meaning | |-------|---------| | `limit` | page size (default 50, max 200) | | `after` | pagination cursor (use the `endCursor` from the previous page) | | `=` | filter by exact match on a field (e.g. `?status=PAID`) | ```bash curl "https://api.clorvia.com/api/v1/invoices?limit=20&status=UNPAID" \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` ```json { "data": [ { "id": "…", "number": "INV-2026-0042", "total": { "amountMicros": "53690000000", "currencyCode": "INR" } } ], "pageInfo": { "hasNextPage": true, "endCursor": "…" }, "totalCount": 134 } ``` To get the next page, pass `?after=`. ## Get one record ```bash curl https://api.clorvia.com/api/v1/invoices/{id} \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` Returns `{ "data": { …the record… } }`, or `404` if it doesn't exist. ## Create a record ```bash curl -X POST https://api.clorvia.com/api/v1/parties \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Traders", "gstin": "27ABCDE1234F1Z5", "city": "Mumbai" }' ``` Returns `201 Created` with `{ "data": { "id": "…", … } }`. ## Update a record ```bash curl -X PATCH https://api.clorvia.com/api/v1/parties/{id} \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "city": "Pune" }' ``` Send only the fields you want to change. ## Delete a record ```bash curl -X DELETE https://api.clorvia.com/api/v1/parties/{id} \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" ``` By default this is a **soft delete** (the record is moved to trash, returns `deletedAt`). To permanently remove it, add `?hard=true`. ## Bulk import Create many records in one call: ```bash curl -X POST https://api.clorvia.com/api/v1/parties/bulk \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "records": [ { "name": "Acme Traders" }, { "name": "Globex" } ] }' ``` Up to **500 records** per request. Returns `{ "created": N, "data": [ … ] }`. ## Recurring documents Schedule a record (e.g. a monthly invoice) to be created automatically: ```bash curl -X POST https://api.clorvia.com/api/v1/recurring \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "object": "invoices", "frequency": "monthly", "startDate": "2026-07-01", "data": { … the same fields you would POST to create one … } }' ``` - `frequency`: `daily`, `weekly`, `monthly` or `yearly`. - `startDate`: when the first one is created (defaults to now). - `data`: the record to create each cycle. List schedules with `GET /api/v1/recurring`; remove one with `DELETE /api/v1/recurring/{id}`. Clorvia creates the document on each due date and advances the schedule automatically. ## Field types Most fields are plain values (text, number, true/false, dates). A few are **structured**: - **Money** (e.g. an invoice total): `{ "amountMicros": "53690000000", "currencyCode": "INR" }` — divide `amountMicros` by 1,000,000 to get rupees. - **Name**: `{ "firstName": "...", "lastName": "..." }` - **Address**: `{ "addressStreet1": "...", "addressCity": "...", "addressState": "...", "addressPostcode": "..." }` - **Links / Emails / Phones**: objects with a `primary…` field. - **Relations** to another record appear as `{relation}Id` (e.g. an invoice's `partyId`). Set them by passing the related record's `id`. Call `GET /api/v1/objects/{objectPlural}` to see every field and its type. ## Errors Errors return a JSON body with an `error` code and a `message`: | HTTP | Meaning | |------|---------| | `401` | Missing or invalid API key | | `402` | `Subscription Not active` — renew your plan | | `404` | Unknown object or record not found | | `400` | Invalid request (e.g. a bad field value) | ## Security & good practice - Keep your API key secret; treat it like a password. Rotate/revoke it any time in **Settings → APIs & Webhooks**. - Give each integration the **least‑privileged role** it needs (read‑only where possible). - All requests must use **HTTPS**. - Every request is strictly scoped to your workspace. → Next: **[Webhooks](/developers/webhooks)** to get real‑time push notifications. --- # Using the API URL: https://docs.clorvia.com/developers/using-the-api # Using the API The Clorvia API is a **GraphQL API**. You send a request to one endpoint and ask for exactly the data you want, or make a change. ## Endpoint ``` POST https://api.clorvia.com/graphql ``` Every request must include your [API key token](/developers/api-keys): ``` Authorization: Bearer YOUR_API_KEY_TOKEN Content-Type: application/json ``` ## Explore your schema with the Playground The fastest way to learn the API is the built‑in **Playground**: **Settings → APIs & Webhooks → Playground** It shows the **exact** queries, mutations, and fields available for *your* workspace (including any custom fields you've added) and lets you run them live. ## Read data Lists are paginated. Ask for the first few records: ```graphql query { invoices(first: 10) { edges { node { id invoiceNumber totalAmount status } } pageInfo { hasNextPage endCursor } } } ``` To get the next page, pass the previous `endCursor` as `after`: ```graphql query { invoices(first: 10, after: "PREVIOUS_END_CURSOR") { edges { node { id invoiceNumber } } pageInfo { hasNextPage endCursor } } } ``` ## Create and update data Use the matching `create…` / `update…` mutation. For example, add a customer: ```graphql mutation { createParty(data: { name: "Acme Pvt Ltd", partyType: "Customer", gstin: "27ABCDE1234F1Z5" }) { id name } } ``` Update a record by id: ```graphql mutation { updateParty(id: "PARTY_ID", data: { phone: "+91 98765 43210" }) { id phone } } ``` > The exact input fields for each object (Invoices, Items, Customers, Firms…) are > shown in the Playground — use it to build your queries. ## A full request with curl ```bash curl https://api.clorvia.com/graphql \ -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query":"mutation { createParty(data: { name: \"Acme Pvt Ltd\", partyType: \"Customer\" }) { id name } }"}' ``` ## Errors GraphQL always returns HTTP `200` for a well‑formed request; check the `errors` array in the response body. Common cases: - **Unauthenticated** — missing, expired, or revoked token. Check the `Authorization` header and that the key is still active. - **Forbidden** — the key's role doesn't permit that action. Assign it a role with the needed permission. - **User input** — a required field is missing or invalid; the message says which. ## Rate & fair use Keep integrations efficient — request only the fields you need, paginate large reads, and prefer [webhooks](/developers/webhooks) over frequent polling. --- # Webhooks URL: https://docs.clorvia.com/developers/webhooks # Webhooks A **webhook** tells your system the moment something happens in Clorvia — an invoice is created, a payment is recorded, a customer is updated — by sending a **signed POST request** to a URL you choose. This replaces having to poll the API on a timer, so your integrations stay in sync and use far fewer requests. ## Register a webhook 1. Go to **Settings → APIs & Webhooks**. 2. Under **Webhooks**, click **Create webhook**. 3. Enter the **URL** Clorvia should POST to (must be HTTPS and publicly reachable). 4. Choose the **events** you want (see below). 5. Save. A **signing secret** is generated — you'll use it to verify deliveries. ## Choose events Events are named `object.action`, for example: | Pattern | Fires when… | | --- | --- | | `invoice.created` | a new invoice is created | | `invoice.updated` | an invoice changes (e.g. marked paid) | | `party.created` | a new customer or supplier is added | | `payment.created` | a payment is recorded | You can use wildcards: - `*.created` — anything created - `invoice.*` — any change to invoices - `*` — every change ## What Clorvia sends A `POST` with a JSON body like: ```json { "eventName": "invoice.updated", "objectNameSingular": "invoice", "action": "updated", "recordId": "…", "updatedFields": ["status"], "record": { "id": "…", "invoiceNumber": "INV-1042", "status": "Paid", "totalAmount": 11800 }, "before": { "status": "Unpaid" }, "after": { "status": "Paid" }, "eventDate": "2026-06-04T10:15:00.000Z" } ``` Headers on every delivery: | Header | Meaning | | --- | --- | | `X-Clorvia-Event` | the event name (e.g. `invoice.updated`) | | `X-Clorvia-Timestamp` | when it was sent (Unix seconds) | | `X-Clorvia-Signature` | HMAC‑SHA256 signature (see below) | | `X-Clorvia-Delivery` | a unique id for this delivery | ## Verify the signature Always verify that a delivery really came from Clorvia before trusting it. The signature is `HMAC‑SHA256` of `timestamp + "." + rawBody`, using your webhook's **signing secret**, hex‑encoded. ```js const crypto = require('crypto') function isValid(req, secret) { const timestamp = req.headers['x-clorvia-timestamp'] const signature = req.headers['x-clorvia-signature'] const expected = crypto .createHmac('sha256', secret) .update(timestamp + '.' + req.rawBody) // the RAW request body, not re-serialized .digest('hex') // constant-time compare return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected)) } ``` Also reject deliveries whose `X-Clorvia-Timestamp` is more than a few minutes old (replay protection). ## Retries & reliability - If your endpoint doesn't return a `2xx`, Clorvia **retries** with backoff. - Make your handler **idempotent** — use `X-Clorvia-Delivery` to ignore a delivery you've already processed. - Respond **quickly** (do heavy work asynchronously); return `200` as soon as you've safely received the event. - You can see recent **delivery attempts** for each webhook in **Settings → APIs & Webhooks**. ## Manage & remove Edit a webhook's URL, events, or secret any time, or **delete** it to stop deliveries. Deleting is immediate. ---