Skip to content

Voucher kinds and types

The two fields

FieldOwned byStableUse for
voucher_kindBizmitraYesFiltering, branching, business logic
voucher_typeThe customer's Tally companyNoDisplay, and matching an exact configured type

Tally lets users create and rename voucher types. Your customers will have done so. Any logic that switches on voucher_type works against your test company and fails on a real one.

Branch on voucher_kind.

Writing vouchers

Each kind has its own endpoint:

EndpointCreates
POST /api/v1/invoicesSales invoice
POST /api/v1/ordersSales order
POST /api/v1/credit-notesCredit note
POST /api/v1/debit-notesDebit note
POST /api/v1/purchasesPurchase
POST /api/v1/receiptsReceipt
POST /api/v1/paymentsPayment
POST /api/v1/contrasContra
POST /api/v1/journalsJournal

All of them are asynchronous. All return a transaction_id you must check. See Jobs and transactions.

The document shape is common across kinds — see Data model. What differs is which parts are meaningful:

Kindinventory_entriesledger_entriesNotes
Invoice, purchaseUsuallyAlwaysGoods invoices carry both; service invoices carry only ledger entries
Credit / debit noteUsuallyAlwaysShould reference the original document
Receipt, paymentNoAlwaysMoney movement only
ContraNoAlwaysBetween the business's own accounts
JournalNoAlwaysAdjustments; must balance
Sales orderUsuallyRarelyAn order is not yet a financial posting

Reading vouchers

Vouchers created in Tally arrive through the pulled-voucher queue:

http
GET /api/v1/pulled-vouchers?company_id={company_id}

Filter with either field:

ParameterPurpose
voucher_kindNormalized kind — sales, purchase, receipt, …
voucher_typeExact Tally type name
statusConsumption status
start_date, end_dateInclusive voucher-date window
limit, offsetPagination

Use voucher_kind unless you have a specific reason not to.

The invoices response key

List responses return results under invoices, and detail responses under invoice, whatever the voucher kind. A purchase arrives under invoices too. Historical wire names, retained for compatibility — read them as "vouchers".

Dates

Pulled vouchers carry voucher_date in Tally's compact form:

json
"voucher_date": "20260601"

That is YYYYMMDD — 1 June 2026. Payloads you submit use ISO dates ("date": "2026-06-01"). Convert deliberately at your boundary rather than passing strings through and hoping.

Filter parameters start_date and end_date are inclusive on both ends.

Voucher numbers

voucher_number comes from Tally, and Tally's numbering is configured per voucher type per company. Some are automatic, some manual, some restart annually.

Do not assume voucher numbers are unique across a company, sequential, or gap-free. They are none of those things in general. Use transaction_id and tally_voucher_guid as identifiers; treat the number as a human-facing label.

Discovering what a company actually uses

Before building against a customer's data, look at what is there. Pull a page of recent vouchers and inspect the distinct voucher_type values against their voucher_kind.

You will find things like:

voucher_type in the wildvoucher_kind
Salessales
GST Sales Invoicesales
Retail Billsales
Tax Invoice - Branchsales

Four names, one kind. This is normal, and it is the entire reason voucher_kind exists.

Documentation content is all rights reserved; code samples are MIT licensed. Use of the Bizmitra API, Connector App, and hosted services is governed separately by Bizmitra’s commercial terms.