xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Entity Reference/Invoice — entity reference
REFERENCE · Last reviewed

Invoice — entity reference

The customer-billing document that terminates the order-to-cash chain. It is normally released from an Order (the Order-side actions PerformReleaseInvoice, PerformReleaseInvoiceAllocatedLines and SelectiveInvoiceOTC), and can also be built from a DeliveryOrder, a Claim or ClaimBatch, or a ServiceOrder. Almost every money field on the header is a metadata calculated roll-up over InvoiceLines rather than a typed-in value. Posting it writes one balanced journal (Dr Accounts Receivable / Cr Sales plus output tax) and raises a Receivable OpenTransaction — that open item, not the invoice row, is what the AR subledger ages, settles and reports on, so the invoice's own OpenAmount and OutstandingAmount are convenience figures maintained on a separate path.

Fields

FieldLabelTypeRequiredWhat it does
AccountIdAccountLookup → AccountYesThe customer being billed — the party side of the receivable, and the account stamped on the AR control leg of the journal and on the resulting open item. Do not confuse it with PartnerAccountId, which is the company that owns the document. It is fixed after creation and is the field the credit-limit breach message points at.
AccountNameAccount NameText
AdjustedAmountAdjusted AmountCurrencyRunning total of PaymentAdjustment amounts applied to this invoice; the payment-application path adds each adjustment here and immediately recomputes OpenAmount as TotalAmount minus this value. Reversing an adjustment subtracts it back. An adjustment larger than the current OpenAmount is rejected.
AmountPaidAmount PaidCurrencyRoll-up of the Amount of every Payment tagged with this invoice, recomputed by the payment save pipeline on insert, on edit of the amount or invoice link, and on delete. It counts payments pointed at the invoice, not money actually allocated in the subledger, so it can exceed what a settlement allocation records. Defaults to zero and is protected against direct user edits.
ApproximateDistanceApproximate DistanceDecimal
AssetIdAssetLookup
BillingAddressBilling AddressText
BillingCityBilling CityPickListValues: Mumbai, Pune, Chandigarh.
BillingCityPlaceIdBilling CityLookup → PlaceValues: Mumbai, Pune, Chandigarh.
BillingContactAddressIdBilling AddressLookup → ContactAddress
BillingCountryBilling CountryPickListValues: India.
BillingPostalCodeBilling Postal CodeText
BillingRegionBilling RegionText
BillingStateBilling StatePickListValues: Haryana, Maharashtra, New Delhi, Punjab.
BillingStreetBilling StreetText
BranchIdBranchLookup → Branch
CessValueCess ValueCalculated (calculated)Cess Value (E-Invoice)
ClaimBatchIdClaim BatchLookup → ClaimBatch
ClaimIdClaimLookup → Claim
ContactIdContactLookup → Contact
ContactNameContact NameText
ContactNumberContact NumberText
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
DeliveryOrderIdDelivery OrderLookup → DeliveryOrder
DiscountDiscountPercentA header discount expressed as a multiplier, not a percentage out of a hundred — the line formulas apply it as base amount times this value, so 0.10 means ten percent. Changing it pushes the value down onto the invoice lines, and each line also exposes it read-only as InvoiceDiscount.
DiscountGroupIdDiscount GroupLookup → DiscountGroup
DocumentDateDocument DateDateStamped with the server clock at creation and used as the journal date when the invoice posts. It is also the anchor for the cancellation window — the window is measured from this value against the current server time, deliberately rather than from the journal's database-generated timestamp, whose clock and timezone are the database server's.
DocumentSeriesDocument SeriesCalculated (calculated)Metadata-calculated by concatenating the owning company's document-name code with the branch's document-name code, so it identifies which numbering series the document belongs to rather than holding a sequence number. The domain object also falls back to that concatenation when the stored column is empty.
DueDateDue DateDate
EINVAckDateAck Date (eInvoice)Text
EINVAckNoAck No (eInvoice)Text
EINVAdditionalCurrencyCodeAdditional Currency Code (eInvoice)Text
EINVCancellationDateEINV CancellationDateDate
EINVCancellationReasonEINVCancellationReasonText
EINVCancellationRemarksEINV Cancellation RemarksText
EINVCommerceOperatorGSTINe-Commerce Operator GSTIN (eInvoice)Text
EINVExportDutyAmountExport Duty Amount (eInvoice)Currency
EINVIGSTApplicabilityIGST Applicability (eInvoice)Boolean
EINVIRNInvoice Reference Number (eInvoice)Text, unique
EinvoiceImageE-Invoice ImageLongMultiLineText
EINVPayloadPayload (eInvoice)LongMultiLineText
EINVPortCodePort Code (eInvoice)Text
EINVQRCodeQR Code (eInvoice)LongMultiLineText
EINVRemarksRemarks (eInvoice)Text
EINVResponseResponse (eInvoice)LongMultiLineText
EINVReverseChargeReverse Charge (eInvoice)Boolean
EINVShippingBillDateShipping Bill Date (eInvoice)Date
EINVShippingBillNumberShipping Bill Number (eInvoice)Text
EINVSignedInvoiceSigned Invoice (eInvoice)LongMultiLineText
EINVStatusStatus (eInvoice)PickListTracks the invoice-registration-portal lifecycle across the vocabulary Pending, Ready For IRN, Generated, Cancelled and Error. Staging the payload sets it to Pending; the bound integration flow advances it, and a dedicated action can set it (typically to Ready For IRN) inside the same save so the flow reacts on that write. It is an edit-protected system field, writable only while those flows run. Values: Pending, Generated, Cancelled, Error, Ready For IRN.
EINVSupplierCanOptRefundSupplier Can Opt Refund (eInvoice)Boolean
EINVSupplyTypeCodeSupply Type Code (eInvoice)PickListValues: B2B, SEZWP, SEZWOP, EXPWP, EXPWOP, DEXP, O.
EINVTaxSchemeTax Scheme (eInvoice)Text
EWayBillDateE-Way Bill DateDateAndTime
EWayBillNumberE-Way Bill NumberText
ExecutiveResourceIdExecutive ResourceLookup → Resource
ExternalIdExternal IDText
FieldSalesIdField SalesLookup → FieldSales
FinanceAmountFinance AmountCurrencyNot a receivables figure. It is the total DisbursedAmount of the FinanceCase records attached to this invoice — how much a financier has funded against it — and is refreshed whenever those finance cases change. It is nonetheless the amount used as the proposed exposure in the credit-limit check when an invoice is created, and it is edit-protected as a system field.
GeneralLedgerIdGeneral LedgerLookup → GeneralLedger
GLAccountIdGL AccountLookup → GLAccount
GLAmountGL AmountCalculated (calculated)Metadata-calculated as TotalLineAmount plus TotalLineTaxAmount. It is not, however, what actually gets posted: when the invoice has lines the journal's receivable leg is built from the sum of the line legs plus their tax, and the header amount field is consulted only for header-only postings. Treat it as a display total that should agree with the posting rather than as the posting input.
GLPostingTypeGL Posting TypePickListSelects the control account for the header leg at posting time: unset or 'Credit' posts to Accounts Receivable, 'Cash', 'Bank' and 'Credit Card' post to those account types instead, and any other value falls back to Accounts Receivable. The seeded pick list currently offers only 'Credit', so cash-style invoicing requires adding the other values first. Values: Credit.
GSTINGSTINText
GSTInvoiceTypeGST Invoice TypeText
IdIdGuidYes
IgnoredSchemeLineIdIgnored Scheme LineText
InventoryFulfilmentIdInventory FulfilmentLookup → InventoryFulfilment
InvNameInv Name (For E-Invoice)TextDerived from the generated document name by dropping the leading series prefix, so INV-13072026-000177 becomes 13072026-000177.
InvoiceGroupInvoice GroupPickList
InvoiceNumberInvoice NumberTextTreat any value here as externally supplied (for example an interface or migration) and never as the authoritative document number.
InvoiceReferenceNumberInvoice Reference NumberText
IsGLPostedGL PostedBooleanSet by the posting pipeline to record that a journal now exists for this invoice; it is a system field the platform blocks users from editing. Because postings are append-only, a reversal does not clear it — use the invoice's journals and its open item to judge the current ledger state rather than relying on this flag alone.
IsGLPostingApprovedGL Posting ApprovedBooleanThe real posting gate. The posting action turns it on before building the journal, and the posting engine reverses an existing journal instead of writing one whenever this is false or the record is being deleted. It is also the trigger the business rule watches to move Status to Posted, and it is edit-protected except while a system-driven posting is running.
IsILPostingApprovedIs IL Posting ApprovedCalculated (calculated)
IsInJobQueueIn Job QueueBoolean, unique
IsKPICalculatedKPI CalculatedBoolean, uniqueIt will stay at its stored value forever and should not be used to infer that anything has been computed.
ItemServiceContractIdItem Service ContractLookup → ItemServiceContract
JobInterfaceQueueIdJob QueueLookup → InterfaceQueue
LRDateLR DateDateAndTime
LRNumberLR NumberText
ModeOfPaymentMode Of PaymentPickListValues: Card, Electronic Transfer.
ModifiedByIdModified ByLookup → UserAccountYes
NameDocument NumberText
OpenAmountOpen AmountCalculated (calculated)Metadata-calculated as TotalAmount minus AdjustedAmount, so it falls only as PaymentAdjustment rows are applied — not when a Payment is merely tagged to the invoice. This is the field the open-documents lookup filters on (greater than zero means still applicable), and it is a document-level figure kept separately from the OpenTransaction open item the ledger actually settles.
OrderIdOrderLookup → Order
OutstandingAmountOutstanding AmountCalculated (calculated)Metadata-calculated as TotalAmount minus AmountPaid — a second, different measure of what is unpaid from OpenAmount, which nets adjustments instead of payments. The two disagree whenever payments and adjustments are not in step. The overdue-receivables insight signal reads this field together with DueDate.
OwnerIdOwnerLookup → UserAccountYes
PartnerAccountIdPartner AccountLookup → AccountThe owning company or dealer entity, not the customer. It scopes account resolution and posting rules, and posting is skipped altogether unless this account has GL posting enabled. It cannot be changed after creation, and when the invoice came from an order it also cannot be edited away from the order's value.
PartnerAccountNamePartner Account NameText
PaymentTermsPayment TermsText
PendingDeliveryQuantityPending Delivery QuantityCalculated (calculated)
PerformGLPostingPerform GL PostingBoolean
PerformKPICalculationPerform KPI CalculationBoolean, unique
PlaceOfSupplyPlace of SupplyPickListValues: Maharashtra, Gujarat, Rajasthan, Haryana.
PorterContactNumberPorter Contact NumberText
PriceAsOnDatePrice As On DateDate
PriceListIdPrice ListLookup → PriceList
RecordTypeIdRecord TypeGuid, hidden
RemarkRemarksText
RepairOrderServiceOrderIdRepair OrderLookup → ServiceOrder
RNAExternalIdRNA External IDText
RoundOffRound OffCurrencyDeclared and defaulted to zero, but no code path computes or applies it: the rounding service that would populate it is only referenced in a comment in the invoice handler. It does not participate in any calculated total and is not posted, so a value here has no effect on the document or the ledger.
SalesExecutiveResourceIdExecutiveLookup → Resource
ServiceContractItemIdService Contract ItemLookup → Item
ServiceResourceIdService AdvisorLookup → Resource
ServiceTypeIdService TypeLookup → ServiceType
ShippingAddressShipping AddressText
ShippingCityShipping CityPickListValues: Mumbai, Pune, Chandigarh.
ShippingCityPlaceIdShipping CityLookup → PlaceValues: Pune, Mumbai, Chandigarh.
ShippingContactAddressIdShipping AddressLookup → ContactAddress
ShippingCountryShipping CountryPickListValues: India.
ShippingPostalCodeShipping Postal CodeText
ShippingRegionShipping RegionText
ShippingStateShipping StatePickListValues: Haryana, Maharashtra, New Delhi, Punjab.
ShippingStreetShipping StreetText
SkipSchemeSkip SchemeBoolean, unique
SourceOfSupplySource of SupplyPickListValues: Haryana, Rajasthan, Gujarat, Maharashtra.
StatusStatusPickListA two-value vocabulary: it defaults to 'Draft' and a business rule moves it to 'Posted' when IsGLPostingApproved becomes true. A second rule blocks manual edits whenever the status and the approval flag disagree. The cancellation gate requires the invoice to be Posted, and cancelling deliberately leaves this field alone rather than introducing a cancelled state. Values: Draft, Posted, Cancelled.
SubscriptionIdSubscriptionLookup → Subscription
SupplierBranchIdSupplier BranchLookup → Branch
SupplierPartnerAccountIdSupplier Partner AccountLookup → Account
Tax1Tax1Currency
Tax1NameTax Name 1Text
Tax1RateTax Rate 1Currency
Tax1TypeTax Type 1Text
TaxGroupIdTax GroupLookup → TaxGroup
TaxIdTaxLookup → Tax
TaxSupplyTypeTax Supply TypePickListValues: Within State, Outside State, Exempt.
TCSEligibleAmountTCS Eligible AmountCurrencyThe base the header-level tax group is applied to. It does not drive the line-level tax-collected-at-source posting, which keys off the collection section tagged on individual lines.
TotalAmountTotal AmountCalculated (calculated)Metadata-calculated as the sum of InvoiceLine.GrossAmount, so it is tax-inclusive and is the base for both OpenAmount and OutstandingAmount. It shares its formula exactly with TotalLineGrossAmount on this same entity, so the two always hold the same number.
TotalAmountInWordsTotal Amount In WordsTextRegenerated from the document total after a save, but only for updates — the refresh runs in the post-save step for modified records only, so a freshly created invoice has no words until it is edited once. Do not rely on it being present on a newly inserted record.
TotalDiscountAmountTotal Discount AmountCalculated (calculated)Metadata-calculated as the sum of InvoiceLine.NetDiscount, which already collapses the ordinary, secondary and contract discount pairs on each line. It deliberately excludes scheme discount, which rolls up separately into TotalSchemeDiscountAmount2.
TotalInvoiceValueTotal Invoice ValueCalculated (calculated)
TotalLineAmountTotal Line AmountCalculated (calculated)Metadata-calculated as the sum of InvoiceLine.Amount — the net-of-discount, pre-tax value of the lines. Together with TotalLineTaxAmount it forms GLAmount.
TotalLineBaseAmountTotal Line Base AmountCalculated (calculated)
TotalLineGrossAmountTotal Line Gross AmountCalculated (calculated)
TotalLineQuantityTotal Line QuantityCalculated (calculated)
TotalLineTaxAmountTotal Line Tax AmountCalculated (calculated)Metadata-calculated as the sum of InvoiceLine.TaxAmount, which is itself the total of all six tax slots on each line. This is the whole tax on the document, unlike TotalTaxAmount and its siblings which each roll up a single component slot.
TotalSchemeDiscountAmount2Total Scheme AmountCalculated (calculated)Metadata-calculated as the sum of InvoiceLine.NetSchemeDiscount — the promotional-scheme discount only, kept apart from TotalDiscountAmount.
TotalStateCESSValueTotal State CESS ValueCalculated (calculated)
TotalTaxAmountTotal Tax Amount 1Calculated (calculated)Not the grand total of tax: it is metadata-calculated as the sum of the line-level Tax1 slot only. Which tax component lands in slot 1 depends on the tax group configuration, so this is a per-component subtotal (commonly CGST or IGST). For all tax on the document use TotalLineTaxAmount.
TotalTaxAmount2Total Tax Amount 2Calculated (calculated)Metadata-calculated as the sum of the line-level Tax2 slot — the second tax component of the line's tax group, commonly SGST. It is a per-component subtotal, not a running total that includes TotalTaxAmount.
TotalTaxAmount3Total Tax Amount 3Calculated (calculated)
TransactionTypeTransaction TypePickList
TransportDocumentDateTransport Document DateDateAndTime
TransportDocumentNumberTransport Document No.Text
TransporterGSTINTransporter GSTINText
TransporterNameTransporter NameText
TransportModeTransport ModeText
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes
VehicleNumberVehicle NumberText
VisitIdVisitLookup → Visit
VisitPlanIdVisit PlanLookup → VisitPlan
VisitRouteIdVisit RouteLookup → VisitRoute

Actions

ActionLabelTypeWhat it does
ApplyPackageConfigurationApply Package ConfigurationServerAction (ApplyPackageConfiguration)Writes the chosen package makeup onto the invoice: for the given LineId and components array it updates the quantity of child invoice lines that already exist for a component and creates new child lines (linked back through the package line reference) for newly selected ones. Both LineId and a non-empty components array are required.
ApplySchemeApply SchemeServerAction (ApplyScheme)ApplyScheme
BulkDeleteDeleteDeleteDelete the selected records.
CancelInvoiceCancelServerAction (CancelInvoice)Cancel the invoice and reverse its inventory and journal postings.
CloneCloneServerAction (Clone)Create a copy of this record
CreateShipmentCreate ShipmentServerAction (CreateShipment)CreateShipment
DeleteDeleteDeleteDelete
DeleteRowDeleteDeleteDelete List Row
EditEditEditEdit List Row
EditDetailEditEditInlineEdit
EditInLineEditEditEdit in page.
EditInListEditEditInlineEdit
EInvoiceGeneratorE Invoice GeneratorServerAction (EInvoiceGenerator)Builds the IRP e-invoice payload from the invoice and its lines and stages it on the record, setting the payload field and moving the e-invoice status to Pending; the bound integration flow then transmits it and records the IRN, acknowledgement number and QR code back. The action refuses to run when the invoice already carries an IRN, so it cannot be used to regenerate.
EInvoiceGenerator (dup-84993847)E Invoice GeneratorServerAction (EInvoiceGenerator)A duplicate of the EInvoiceGenerator row whose name was suffixed to resolve a clash.
EWayBillE Way BillServerAction (EWayBill)Creates a Draft EWayBill register entry (the Part-A consignment record) for this invoice and returns its id; the bound integration flow generates the actual e-way bill number and records it. Optional arguments are distanceKm, transportMode (defaulting to Road) and vehicleNumber.
GetBenefitDetailsGet Benefit DetailsServerAction (GetBenefitDetails)GetBenefitDetails
GetConfigurableItemsGet Configurable ItemsServerAction (GetConfigurableItems)Read-only. Returns the invoice's lines whose item is flagged as a package, with the item and SKU identification needed by the package-configuration UI. It returns nothing for an invoice with no package lines.
GetOpenDocumentsGet Open DocumentsServerAction (GetOpenDocuments)Read-only lookup that feeds the payment-application screen. Scoped by the invoice's company, branch and customer, it returns open Orders, Invoices and CreditNotes together with unapplied Payments of the opposite direction (open amount above zero). It requires AccountId to be set and writes nothing.
GetPackageConfigurationGet Package ConfigurationServerAction (GetPackageConfiguration)Read-only. For one package line (LineId is required) it returns the applicable components for the sale channel and customer, each with the quantity already configured on existing child lines and a price resolved against the invoice's price list. Returns nothing when the line's item is not a package.
GetPaymentAmountSummaryGet Payment AmountSummaryServerAction (GetPaymentAmountSummary)Read-only. Returns the invoice's total, the amount already adjusted, the remaining open amount, and the Payment and PaymentAdjustment rows tagged to this invoice. It reads the invoice's own stored fields rather than the OpenTransaction subledger, so its figures can diverge from an ageing report or party statement.
GetQualifiedBenefitsGet Qualified BenefitsServerAction (GetQualifiedBenefits)GetQualifiedBenefits
GetQualifiedSchemeSlabsGet Qualified Scheme SlabsServerAction (GetQualifiedSchemeSlabs)GetQualifiedSchemeSlabs
GetSchemeRecommendationsGet Scheme RecommendationsServerAction (GetSchemeRecommendations)GetSchemeRecommendations
NewNewNewNew
PaymentPaymentServerActionRecording a receipt against the invoice means creating a Payment record tagged with this invoice.
PerformDeliveryPerform DeliveryServerAction (PerformDelivery)Creates a DeliveryOrder from this invoice, taking only the lines whose pending delivery quantity is above zero. Validation refuses the call when the invoice has no lines or nothing is left pending on any of them.
PerformInventoryPostingPost InventoryServerAction (PerformInventoryPosting)It touches stock only — the general ledger is untouched, and cost of goods sold is recognised separately by the perpetual costing hook at goods issue.
PostAdjustmentsPost AdjustmentsServerAction (PostAdjustments), inactiveApplying money to an invoice is done by creating Payment and PaymentAdjustment rows, which is what maintains AdjustedAmount and OpenAmount.
PostGeneralLedgerPost General LedgerServerAction (PostGeneralLedger)Sets IsGLPostingApproved and runs document-journal posting: one balanced journal, Dr Accounts Receivable against Cr Sales plus output tax, together with a Receivable open item that becomes the AR subledger row. Re-posting is reverse-then-repost — the earlier journal flips to Reversed and a suffixed replacement is written, nothing is edited in place. It then captures output-GST TaxTransaction rows for the return analytics (best effort, a failure there never blocks the ledger) and posts TCS for any line carrying a collection section (not best effort — a TCS failure rolls the whole posting back). Status moving to Posted is done by a business rule reacting to the approval flag, not by this action.
PreviewPreviewPreviewPreview Entity details
PreviewListHeaderPreviewPreviewPreviewListHeader
PrintInvoicePrint InvoicePrint (PrintInvoice)Print Invoice
PrintServiceInvoicePrint Service InvoicePrintService Order Print
PrintTestPrint TestPrintTest
ProductConfiguratorProduct ConfiguratorServerAction (ProductConfigurator)The working configuration flow on this entity is GetConfigurableItems, then GetPackageConfiguration, then ApplyPackageConfiguration.
ReleaseReleaseUIAction, inactiveAn inactive action of UI type with no server handler behind it. Turning an order into an invoice is driven from the Order side instead, by its PerformReleaseInvoice, PerformReleaseInvoiceAllocatedLines or SelectiveInvoiceOTC actions.
SelectiveCreateShipmentSelective Create ShipmentServerAction (SelectiveCreateShipment)SelectiveCreateShipment
SetEInvoiceStatusSet E-Invoice StatusServerAction (SetEInvoiceStatus)SetEInvoiceStatus

Lookup filters

FilterLookup fieldNotes
Branch For Partner AccountBranchId
Contact for AccountContactId
Customer Account FilterAccountId
Executive FilterSalesExecutiveResourceId
Partner Account FilterPartnerAccountId