Vyapar GST billing data API
Vyapar is the GST and VAT billing app that Indian and UAE small businesses use to raise tax invoices, verify trading parties and collect payments. It sits at the centre of the merchant's compliance workflow: GSTIN verification, IRN e-invoicing, e-way bills for dispatch, UAE FTA e-invoicing and UPI or card collection all run through one signed-in company session.
As a data source it exposes verified party identity (legalName, panNo, gstInType), statutory tax documents (irn, ackNo, ewbNo) and receivables state (partyCurrentBalance, paymentLink). ERP syncs, working-capital lenders and tax-compliance tools build on these fields to onboard verified businesses, track outstanding balances and archive statutory invoices.
Vyapar is a GST and VAT billing app from an Indian invoicing and accounting vendor, used by small and medium businesses across India and the UAE to raise invoices, manage inventory and collect payments. Behind its invoice, party and payment screens sits a rich dataset: verified GSTIN party records, IRN e-invoices and e-way bills, settlement bank accounts and payment links, party ledgers and collection reminders. That data serves ERP, lending and compliance integrations that need verified business identities, receivables and tax documents straight from the billing workflow.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Sign in and mint session token
POST
/v1/account/sessionopendataOpens the signed-in company session used by GSTIN lookup, e-invoice, e-way, payment-account and party-ledger calls. The nested data.authToken is the Bearer value on every later request.
Auth: Unauthenticated bootstrap. Phone (or email) plus password; the response data.authToken is sent as Authorization: Bearer on later calls.
- authToken
- phone
- userId
- pointsEarned
- message
- statusCode
POST /v1/account/session HTTP/1.1 Content-Type: application/json { "phone": "9876543210", "password": "••••••••", "deviceId": "a1b2c3d4e5f6", "platformId": "android" }{ "data": { "authToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.example", "email": "[email protected]", "phone": "9876543210", "userId": "usr_7c11ab", "pointsEarned": "120" }, "message": "OK", "statusCode": 200 }Illustrative of the app's phone-and-password sign-in flowSession fields mirror what the home and profile screens show after login
Look up GSTIN legal name
GET
/v1/tax-ids/verifyosintResolves a GSTIN to legalName, tradeName, PAN and taxpayer type so the party and firm screens can stamp a verified GSTIN on invoices.
Auth: Authorization: Bearer <authToken>. Query gstin is the 15-character GSTIN typed on the party or firm form.
- gstInType
- isValidGstIn
- legalName
- panNo
- tradeName
- businessType
- statusCode
GET /v1/tax-ids/verify?gstin=27AAPFU0939F1ZV HTTP/1.1 Authorization: Bearer <authToken>{ "data": { "gstInType": "Regular", "isValidGstIn": true, "legalName": "MILL STORE TRADERS PRIVATE LIMITED", "panNo": "AAPFU0939F", "tradeName": "Mill Store", "businessType": "Private Limited Company" }, "message": "OK", "errors": [], "statusCode": 200 }Illustrative of the GSTIN verification step on the party onboarding formResponse fields match the verified-party card shown on invoice forms
Send e-invoice portal login OTP
POST
/v1/tax-portal/otp/requestopenfinanceAsks the GST e-invoice portal to SMS or email an OTP for the merchant GSTIN so the portal session can be verified and opened for IRN work.
Auth: Authorization: Bearer <authToken>. Body gstin is the merchant GSTIN on the e-invoice login screen.
- gstin
- contact
- contactType
POST /v1/tax-portal/otp/request HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "gstin": "27AAPFU0939F1ZV" }{ "data": { "contact": "98******10", "contactType": "MOBILE" }, "statusCode": 200 }Illustrative of the e-invoice settings login flowResponse masks the contact the OTP was delivered to
Open e-invoice portal session
POST
/v1/tax-portal/session/openopenfinanceAuthenticates the merchant's e-invoice portal credentials so later invoice-registration calls can mint an IRN against the government invoice registry.
Auth: Authorization: Bearer <authToken>. Body carries the e-invoice portal username and password stored from the login screen.
- username
- password
- gstin
- sessionActive
POST /v1/tax-portal/session/open HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "username": "millstore_einv", "password": "••••••••", "gstin": "27AAPFU0939F1ZV" }{ "data": { "gstin": "27AAPFU0939F1ZV", "username": "millstore_einv", "sessionActive": true }, "message": "OK", "statusCode": 200 }Illustrative of the portal credential form in e-invoice settingsReturns a session flag the invoice screens check before registering documents
Generate GST e-invoice IRN
POST
/v1/tax-portal/invoices/registeropenfinanceSubmits a sale invoice to the e-invoice portal and returns the IRN, acknowledgement number/date and signed QR that the tax-invoice preview prints.
Auth: Authorization: Bearer <authToken> plus an active e-invoice portal session from the session-open call.
- irn
- ackNo
- ackDt
- txn_einvoice_qr
- gstin
- txnType
- uuid
POST /v1/tax-portal/invoices/register HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "gstin": "27AAPFU0939F1ZV", "txnType": "SALE", "uuid": "txn-8f2a11", "buyerGstin": "29AABCU9603R1ZX", "irn": null }{ "data": { "irn": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2", "ackNo": "112415678901234", "ackDt": "2026-09-28 11:04:00", "txn_einvoice_qr": "eyJhbGciOiJSUzI1NiJ9.signed-qr" }, "statusCode": 200 }Illustrative of the e-invoice generation sheet on a saleIRN and acknowledgement fields appear on the printable tax invoice
Validate GSTIN for e-way bill
GET
/v1/transport/validate/{taxId}osintConfirms a GSTIN is live on the e-way portal before a waybill is minted, filling the consignor and consignee legal names on the transport form.
Auth: Authorization: Bearer <authToken>. Path taxId is the consignor or consignee GSTIN on the transport form.
- gstin
- isValidGstIn
- legalName
- legalNameOfConsignor
- gstinType
GET /v1/transport/validate/27AAPFU0939F1ZV HTTP/1.1 Authorization: Bearer <authToken>{ "data": { "gstin": "27AAPFU0939F1ZV", "isValidGstIn": true, "legalName": "MILL STORE TRADERS PRIVATE LIMITED", "legalNameOfConsignor": "MILL STORE TRADERS PRIVATE LIMITED", "gstinType": "Regular" }, "statusCode": 200 }Illustrative of the GSTIN check inside the e-way bill formLegal-name fields prefill the consignor and consignee blocks
Generate e-way bill number
POST
/v1/transport/waybillsopenfinanceCreates an e-way bill for a taxable movement and returns ewbNo for the preview, cancel and print flow.
Auth: Authorization: Bearer <authToken> plus e-way portal credentials from the portal login flow.
- ewbNo
- gstinOfConsignor
- gstinOfConsignee
- legalNameOfConsignor
- legalNameOfConsignee
- txnType
POST /v1/transport/waybills HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "gstinOfConsignor": "27AAPFU0939F1ZV", "gstinOfConsignee": "29AABCU9603R1ZX", "legalNameOfConsignor": "MILL STORE TRADERS PRIVATE LIMITED", "legalNameOfConsignee": "SOUTH DISTRIBUTORS LLP", "txnType": "SALE" }{ "data": { "ewbNo": "351234567890", "gstinOfConsignor": "27AAPFU0939F1ZV", "gstinOfConsignee": "29AABCU9603R1ZX" }, "statusCode": 200 }Illustrative of the dispatch step on a sale invoiceThe returned waybill number is stamped on the transport copy
Sign in to UAE FTA e-invoice
POST
/v1/ae/tax/sessionopenfinanceCompletes the UAE e-invoice OTP login (request then verify) and returns the session token plus EmaraTax profile (TIN, orgId, partyName) used to download FTA invoices.
Auth: Authorization: Bearer <authToken>. Body carries the service-provider code, wizard step, TIN and OTP from the UAE e-invoice login screen.
- asp
- step
- tin
- otp
- nextStep
- maskedEmail
- token
- orgId
- emarataxEmail
- profileId
- companyId
- partyName
- status
POST /v1/ae/tax/session HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "asp": "MARMIN", "step": 4, "tin": "100123456700003", "otp": "482913" }{ "nextStep": 4, "data": { "nextStep": 4, "email": "[email protected]", "maskedEmail": "acc****@millstore.ae", "token": "eyJhbGciOiJSUzI1NiJ9.uae-einvoice", "profile": { "tin": "100123456700003", "orgId": "org_ae_91", "emarataxEmail": "[email protected]", "profileId": "prf_44", "companyId": "co_91", "partyName": "Mill Store Traders FZ-LLC", "status": "ACTIVE" } } }Illustrative of the UAE e-invoice login wizardProfile fields mirror the EmaraTax account card shown after sign-in
Download UAE e-invoice PDF
GET
/v1/ae/invoices/{docType}/{docId}/fileopenfinanceFetches the FTA e-invoice PDF for a UAE sale after login, substituting document type and id into the path.
Auth: Authorization: Bearer <authToken> plus the UAE session token from the sign-in call sent as a dedicated header. Accept: application/pdf.
- txnType
- uuid
- filename
- contentType
GET /v1/ae/invoices/1/txn-8f2a11/file HTTP/1.1 Authorization: Bearer <authToken> X-Uae-Session: <uae-token> Accept: application/pdf{ "contentType": "application/pdf", "txnType": 1, "uuid": "txn-8f2a11", "filename": "uae-einvoice-txn-8f2a11.pdf" }Illustrative of the download action on a UAE saleReturns the PDF the app archives next to the invoice row
Create payment-gateway KYC account
POST
/v1/payouts/accountsopenbankingRegisters the merchant settlement account (bank + GSTIN + PAN) that later payment links debit into. Returns the account id and the creation/view tokens checkout uses.
Auth: Authorization: Bearer <authToken>. Body is the KYC packet from the verification screen (PAN, GSTIN, bank, IFSC).
- accountHolderName
- accountNumber
- ifscCode
- gst
- ownerPan
- ownerPanHolderName
- businessPan
- legalBusinessName
- activationStatus
- id
- paymentCreationToken
- paymentViewToken
POST /v1/payouts/accounts HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "accountHolderName": "Ravi Kumar", "accountNumber": "50100012345678", "bankName": "HDFC Bank", "ifscCode": "HDFC0001234", "gst": "27AAPFU0939F1ZV", "ownerPan": "AAPFU0939F", "ownerPanHolderName": "RAVI KUMAR", "businessPan": "AAPFU0939F", "legalBusinessName": "MILL STORE TRADERS PRIVATE LIMITED", "businessType": "Private Limited", "deviceId": "a1b2c3d4e5f6", "firebaseToken": "fcm-token", "clevertapId": "ct-99aa" }{ "data": { "accountDetails": { "id": "acc_9f21", "accountHolderName": "Ravi Kumar", "accountNumber": "50100012345678", "ifscCode": "HDFC0001234", "gst": "27AAPFU0939F1ZV", "activationStatus": "PENDING_KYC", "legalBusinessName": "MILL STORE TRADERS PRIVATE LIMITED", "ownerPan": "AAPFU0939F", "businessPan": "AAPFU0939F", "cin": null, "certKey": null }, "paymentCreationToken": "pct_7e11", "paymentViewToken": "pvt_3c90" }, "message": "OK", "errors": [], "statusCode": 200 }Illustrative of the payments KYC wizardAccount fields match the verification status card shown after submission
Read payment account bank details
GET
/v1/payouts/accounts/settlementopenbankingReturns the linked settlement bank (account number, IFSC, holder name) shown on the bank-account screen and stamped on invoices as collect-payment details.
Auth: Authorization: Bearer <authToken>.
- id
- accountHolderName
- accountNumber
- ifscCode
- bankName
- activationStatus
GET /v1/payouts/accounts/settlement HTTP/1.1 Authorization: Bearer <authToken>{ "data": { "accountDetails": { "id": "acc_9f21", "accountHolderName": "Ravi Kumar", "accountNumber": "50100012345678", "ifscCode": "HDFC0001234", "bankName": "HDFC Bank", "activationStatus": "ACTIVE" } }, "statusCode": 200 }Illustrative of the linked bank account screenFields match the collect-payment block printed on invoices
Create invoice payment link
POST
/v1/paylinksopenbankingMints a collect link and UPI QR for a sale invoice; the app stores the returned link on the local invoice row for sharing.
Auth: Authorization: Bearer <authToken>.
- paymentLink
- txn_paymentgateway_link
- txn_paymentgateway_qr
- txn_paymentgateway_payment_txn_id
- amount
- partyName
- customerPhone
- accountId
POST /v1/paylinks HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "accountId": "acc_9f21", "partyName": "South Distributors LLP", "amount": "18500.00", "partyCurrentBalance": "18500.00", "customerPhone": "9887766554", "customerEmail": "[email protected]", "uuid": "txn-8f2a11" }{ "data": { "paymentLink": "https://example.invalid/i/invoice-8f2a11", "txn_paymentgateway_link": "https://example.invalid/i/invoice-8f2a11", "txn_paymentgateway_qr": "upi://pay?pa=millstore@hdfcbank&am=18500.00", "txn_paymentgateway_payment_txn_id": "pay_N7kQ1", "amount": "18500.00" }, "statusCode": 200 }Illustrative of the share-and-collect sheet on an invoiceResponse carries the link and UPI QR the customer pays through
Invite party to share details
POST
/v1/contacts/invitesopendataCreates a share-link invite so a customer can fill GSTIN, phone and billing/shipping addresses; the response inviteId is what the refresh call later updates.
Auth: Authorization: Bearer <authToken>.
- inviteId
- uuid
- partyId
- partyName
- phoneNumber
- emailId
- gstin
- gstinType
- companyDBName
- clientUserId
- billingAddress
- shippingAddress
POST /v1/contacts/invites HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "uuid": "inv-aa12", "partyId": "42", "partyName": "South Distributors LLP", "phoneNumber": "9887766554", "emailId": "[email protected]", "gstin": "29AABCU9603R1ZX", "gstinType": "Regular", "companyName": "Mill Store Traders", "companyAddress": "Andheri East, Mumbai", "billingAddress": "Andheri East, Mumbai", "shippingAddress": "Whitefield, Bengaluru", "companyDBName": "millstore_main", "cleverTapId": "ct-99aa" }{ "inviteId": "inv_44c0", "partyName": "South Distributors LLP", "uuid": "inv-aa12", "partyId": "42", "companyDBName": "millstore_main", "clientUserId": "cus_1ab", "gstin": "29AABCU9603R1ZX", "gstinType": "Regular", "phoneNumber": "9887766554", "emailId": "[email protected]" }Illustrative of the ask-party-details share sheetResponse invite id is reused when the link is refreshed
Create party-ledger share link
POST
/v1/statements/shareopendataIssues a hosted party-statement URL the merchant shares from the statement report so the customer can view outstanding balance without opening the app.
Auth: Authorization: Bearer <authToken>.
- currentCompanyId
- initialCompanyId
- partyId
- firmId
- deviceId
- cleverTapId
- firebaseToken
- platformId
- shareUrl
POST /v1/statements/share HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "currentCompanyId": "co_91", "initialCompanyId": "co_91", "partyId": "42", "firmId": "firm_1", "deviceId": "a1b2c3d4e5f6", "cleverTapId": "ct-99aa", "firebaseToken": "fcm-token", "platformId": "android" }{ "data": { "partyId": "42", "shareUrl": "https://example.invalid/statement", "currentCompanyId": "co_91", "firmId": "firm_1" }, "statusCode": 200 }Illustrative of the share action on the party statement reportResponse URL opens a read-only statement for the customer
Send party payment reminder SMS
POST
/v1/messaging/remindersopendataSends a collection SMS with the party's outstanding amount from the reminder screen; the response status is success or failed.
Auth: Authorization: Bearer <authToken>.
- recipient
- firmName
- firmPhone
- smsId
- partyName
- amount
- partyCurrentBalance
- status
- errorCode
- errorSmsIds
POST /v1/messaging/reminders HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "footer": "Sent via Vyapar", "deviceType": 1, "deviceId": "a1b2c3d4e5f6", "isLicensedUser": true, "recipient": "9887766554", "firmName": "Mill Store Traders", "firmEmail": "[email protected]", "firmPhone": "9876543210", "smsId": "sms-77", "reminderDetails": { "partyName": "South Distributors LLP", "amount": "18500.00", "partyCurrentBalance": "18500.00", "customerPhone": "9887766554", "customerEmail": "[email protected]" } }{ "status": "success", "errorCode": 0, "errorSmsIds": [] }Illustrative of the payment reminder composerResponse reports per-message success and failures
Read multi-currency exchange rates
POST
/v1/fx/quotesopendataReturns conversion rates keyed by currency code plus a last-updated timestamp so UAE/INR invoices can stamp a live FX rate on multi-currency sales.
Auth: Authorization: Bearer <authToken>.
- conversionRates
- lastUpdatedAt
- baseCurrency
POST /v1/fx/quotes HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "baseCurrency": "INR", "quoteCurrencies": ["AED", "USD"] }{ "conversionRates": { "AED": 0.044, "USD": 0.012 }, "lastUpdatedAt": "2026-09-28T06:00:00Z" }Illustrative of the multi-currency toggle in invoice settingsRates match the conversion line shown on foreign-currency invoices
List synced companies
GET
/v1/orgs/booksopendataReturns the merchant's cloud-synced company books so the sync screen can pick which firm to download, share users against, or upgrade.
Auth: Authorization: Bearer <authToken> from the session-token call. Used by the sync screen after cloud sync is enabled.
- company_global_id
- company_name
- company_db_name
- sync_company_global_id
- initial_company_id
- current_company_id
GET /v1/orgs/books HTTP/1.1 Authorization: Bearer <authToken>{ "companies": [ { "company_global_id": "cgid_91aa", "company_name": "Mill Store Traders", "company_db_name": "millstore_main", "sync_company_global_id": "cgid_91aa", "initial_company_id": "co_91", "current_company_id": "co_91" } ] }Illustrative of the sync-and-share company pickerCompany ids mirror the firm list shown in settings
Notify sale invoice over WhatsApp
POST
/v1/messaging/invoice-notifyopendataPushes a WhatsApp sale notification with invoice number, total and outstanding balance to the party's mobile number from the invoice share sheet.
Auth: Authorization: Bearer <authToken>. Body is the sale envelope the invoice-share sheet builds.
- date
- invoiceNo
- companyName
- partyName
- partyMobileNum
- countryCode
- totalAmount
- balance
- totalBalance
- daysDue
- saleType
- paymentMode
POST /v1/messaging/invoice-notify HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "date": "28-09-2026", "invoiceNo": "INV-1042", "companyName": "Mill Store Traders", "partyName": "South Distributors LLP", "partyMobileNum": "9887766554", "countryCode": "IN", "totalAmount": 18500.0, "balance": 18500.0, "totalBalance": 18500.0, "daysDue": 7, "saleType": 1, "paymentMode": 0, "isLicencedUser": true }{ "status": "success", "invoiceNo": "INV-1042", "partyMobileNum": "9887766554" }Illustrative of the WhatsApp option on the invoice share sheetBody fields match the notification preview the merchant sees
Data categories
- GSTIN registry
- e-invoices
- e-way bills
- UAE FTA e-invoices
- payment accounts
- payment links
- party ledgers
- collection reminders
- FX rates
- synced companies
- WhatsApp invoices
Where teams use this data
GSTIN-verified party onboarding
An ERP bot calls GET /v1/tax-ids/verify with a typed GSTIN, stores legalName, panNo and gstInType on the party, then POSTs /v1/contacts/invites so the customer can confirm billingAddress and shippingAddress before the first tax invoice.
IRN and e-way after a sale
When a sale crosses the e-invoice threshold the client requests the portal OTP at /v1/tax-portal/otp/request, opens a portal session at /v1/tax-portal/session/open, registers the invoice at /v1/tax-portal/invoices/register (irn, ackNo, ackDt), then mints ewbNo at /v1/transport/waybills for the dispatch copy.
Collect outstanding on a sale
After KYC at POST /v1/payouts/accounts the invoice flow creates a paymentLink via /v1/paylinks and optionally fires /v1/messaging/reminders with partyCurrentBalance so the customer can pay UPI or card without a second call.
UAE FTA e-invoice download
A Dubai firm signs in at POST /v1/ae/tax/session with tin and otp, stores the returned token and profile.tin, then GETs /v1/ae/invoices/{docType}/{docId}/file with the session-token header to archive the FTA PDF next to the INR IRN.
Frequently asked questions
How does Vyapar authenticate API calls?
A session call such as POST /v1/account/session returns data.authToken, email, phone and userId. Later calls send Authorization: Bearer with that token. E-invoice writes need a second portal login at /v1/tax-portal/session/open; UAE FTA downloads add the session-token header returned by /v1/ae/tax/session.
Which calls return GSTIN and e-invoice fields?
GET /v1/tax-ids/verify resolves gstInType, isValidGstIn, legalName, panNo and tradeName. POST /v1/tax-portal/invoices/register returns irn, ackNo, ackDt and the signed QR; GET /v1/transport/validate/{taxId} and POST /v1/transport/waybills cover e-way GSTIN checks and ewbNo.
How do payment links get created?
Merchants first submit KYC (accountHolderName, accountNumber, ifscCode, gst, ownerPan) to POST /v1/payouts/accounts. Each sale then POSTs /v1/paylinks with partyName, amount and customerPhone; the response paymentLink and txn_paymentgateway_qr are what the invoice shares.
Does Vyapar cover UAE e-invoicing as well as Indian GST?
Yes. POST /v1/ae/tax/session takes the service-provider code, TIN and OTP and returns token plus profile.tin, orgId and emarataxEmail. GET /v1/ae/invoices/{docType}/{docId}/file then fetches the FTA PDF using the session-token header. FX stamps come from POST /v1/fx/quotes (conversionRates, lastUpdatedAt).
Apps similar to Vyapar Invoice GST Billing App
- Khatabook — Khatabook is a Bengaluru-based digital-ledger app that lets Indian micro and small businesses record customer credit and debit in place of a paper bahi-khata.
- myBillBook — myBillBook is a GST billing and accounting app for Indian small and medium businesses that covers invoicing, inventory, e-invoicing and e-way bills.
- OkCredit — OkCredit is a digital ledger app from Faridabad that helps Indian shop owners track customer credit and sends collection reminders over SMS and WhatsApp.
- Zoho Invoice — Zoho Invoice is Zoho's cloud invoicing app aimed at freelancers and service businesses, with integration into the wider Zoho suite.
- TallyPrime — TallyPrime is the business management software from Bengaluru-based Tally Solutions covering accounting, taxation and GST compliance, typically used by firms with more complex books.
- ClearTax — ClearTax is an Indian tax-compliance platform whose GST billing, e-invoicing and return-filing tools target businesses and tax professionals.
- CashBook - Balance & Expense — CashBook is an Indian business cashbook from Obopay that records income and expenses in shared passbooks and settles staff spending through UPI wallets.
Topics
- Vyapar GST API
- e-invoice IRN
- GSTIN lookup
- e-way bill ewbNo
- UAE FTA e-invoice
- Vyapar payment link
- party ledger
- GST billing data API
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use