xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse 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
Auto DMSConsumer Goods DMSSales Force Automation (SFA) 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/Expense Claim — entity reference
REFERENCE · Last reviewed

Expense Claim — entity reference

An employee's request to be paid back for business expenses: a header for the claimant (Resource), company, period and claim date, with one Expense Claim Line per expense. Evaluate Policy checks the lines against the active expense policies and records violations; only auto-disallow rules change the money. The claim goes through an approval process that the administrator builds (none is shipped). Final approval posts it automatically: each line's allowed amount is debited to its Expense GL Account, ITC-eligible tax to the Tax Credit account, and Employee Payable is credited, opening a payable balance for the claimant. The Post action does the same by hand. The balance is then cleared by Reimburse, a reimbursement batch, Settle via Payroll or an advance settlement, which leaves the claim Paid and Settled. There is no cancel or reverse action.

Fields

FieldLabelTypeRequiredWhat it does
AdvanceAdjustedAmountAdvance Adjusted AmountCurrencyTotal of employee advances settled against this claim with Settle Against Claim on the advance. Each settlement adds to it and reduces Net Reimbursable Amount. Leave it empty before posting: posting subtracts it from the payable without booking the advance, so a pre-filled value makes the posting fail.
ApprovalStatusApproval StatusTextThe outcome of the claim's approval request, written when a decision is made: Approved on final approval, Rejected on rejection, empty after a recall, Pending after an approval is reverted. Submitting does not set it. If posting fails on final approval, this field is not updated either.
BranchIdBranchLookup → BranchThe branch the claim posts under. Used on the Employee Payable line and on expense lines that have no branch of their own.
BusinessUnitIdBusiness UnitLookup → BusinessUnitThe finance business unit the claim belongs to; copied onto the employee-payable balance raised at posting.
ClaimDateClaim DateDateThe date the claim posts on, so it must fall in an open period. Policy effective dates and the late-submission rule are also measured against it.
ClaimPeriodFromClaim Period FromDateStart of the span of time the claimed expenses cover. Informational.
ClaimPeriodToClaim Period ToDateEnd of the span of time the claimed expenses cover. Informational.
CostCenterIdCost CenterLookup → CostCenterDefault cost center for the claim's expense lines. A line's own cost center takes precedence; the cost center is posted on expense lines only, never on the payable.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
CurrencyCodeCurrency CodeTextThe currency the claim is raised in. Free text.
DepartmentIdDepartmentLookupThe department the spend is reported under.
EmployeeAccountIdEmployee AccountLookup → AccountOlder claimant field pointing at an account in the employee role. Posting, policy and payment use Resource instead.
EmployeeIdEmployeeLookup → EmployeeNot stored for expense claims; use Resource to identify the claimant.
EmployeePayableOpenTransactionIdEmployee Payable Open TransactionLookup → OpenTransactionThe employee-payable balance raised when the claim posted. Reimbursement, batch payment, payroll settlement and advance settlement all clear this balance.
GLIdGLLookup → JournalThe journal created when the claim posted. Once set, the claim cannot be posted again.
HasPolicyViolationHas Policy ViolationBooleanTicked when the last Evaluate Policy run recorded at least one violation, cleared when it recorded none. A summary for filtering; the detail is on the claim's policy violations.
IdIdGuidYes
IncludedInPayrollRunIdIncluded In Payroll RunLookup → PayrollRunA payroll run the claim can be cross-referenced to. Settle via Payroll does not fill it and nothing in payroll reads it, so it is set only by hand.
IsGLPostedIs GL PostedBooleanTicked when the claim has posted to the ledger.
IsGLPostingApprovedIs GL Posting ApprovedBooleanFlag on the Controls panel. Not read by expense posting.
ModifiedByIdModified ByLookup → UserAccountYes
NameDocument NumberTextThe claim's document number, generated from the Expense Claim name setting (series EXC by default).
NarrationNarrationTextA free-text note on the claim.
NetReimbursableAmountNet Reimbursable AmountCurrencyWhat the company owes the employee for this claim: set at posting to the allowed total less any advance already adjusted, then reduced by later advance settlements. Not a running total; it is empty until the claim posts.
OwnerIdOwnerLookup → UserAccountYes
PartnerAccountIdPartner AccountLookup → AccountThe company the claim belongs to. Expense policies apply by company, and posting uses this company's Employee Payable and Tax Credit control accounts.
PaymentGLAccountIdPaymentGL AccountLookup → GLAccountThe bank or cash account a finance reimbursement is paid from by default (the Reimburse action uses it when no other bank account is given). It is not credited when the claim itself posts.
PaymentStatusPayment StatusTextUnpaid after posting; Paid once the employee-payable balance is cleared by Reimburse, a reimbursement batch, Settle via Payroll or advance settlements that cover it in full.
PayrollComponentIdPayroll ComponentLookup → PayrollComponentThe payroll component a payroll-mode reimbursement is associated with. Reference only: the claim never becomes a payslip line.
PayrollPeriodIdPayroll PeriodLookup → PayrollPeriodThe payroll period a payroll-mode claim is meant for. Reference only: the payroll handoff does not read it.
PolicyIdPolicyLookup → ExpensePolicyA reference to an expense policy. Evaluation does not read it; it applies every active policy that matches the claim's company, the claimant's grade and the claim date.
PostingStatusPosting StatusTextNotPosted until the claim posts, then Posted. Posting refuses a claim that is already Posted.
ProjectIdProjectLookup → Project
RecordTypeIdRecord TypeGuid, hidden
ReimbursementModeReimbursement ModePickListHow the claim is meant to be paid. Every value other than Payroll means finance payment. Only Payroll changes behaviour: final approval then sets Status to ApprovedForPayroll and the Reimburse action refuses the claim. Settle via Payroll does not check this field. Values: Cash, Bank Transfer.
ResourceIdResourceLookup → ResourceThe claimant. Required for posting; the employee-payable balance is held against this resource, its grade selects grade-specific policies, and duplicate detection compares against this resource's other claims.
StatusStatusTextThe claim's lifecycle: Draft when created; ApprovedForPayment or ApprovedForPayroll on final approval; Rejected on rejection; back to Draft on recall; Submitted when an approval is reverted; Posted once posted; Settled once the payable is cleared. Submission itself does not change it unless the approval process stamps a value.
TaxablePerquisiteFlagTaxable Perquisite FlagBooleanMarks the reimbursement as a taxable perquisite for payroll. Expense posting does not read it.
TotalAmountTotal AmountCurrencyThe amount claimed (amount plus tax over the posted lines), filled in at posting. Empty on a draft.
TotalApprovedAmountTotal Approved AmountCurrencyThe allowed amount after policy disallowances and reviewers' approved-amount reductions, filled in at posting. Empty on a draft.
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete the selected records.
CloneCloneServerAction (Clone)Create a copy of this record
ComputeRechargeCompute RechargeServerAction (ComputeRecharge)Collects the claim's billable lines (isBillableToCustomer with a customerAccountId), moves their billingStatus to PendingBilling, and returns totals grouped by customer and project: raw cost (amount+tax) versus recharge (cost with each line's markupPercent applied) and the line count. No journal and no invoice are created - invoice generation is a separate sales flow.
DeleteDeleteDeleteDelete this ExpenseClaim.
DeleteRecordDeleteDeleteDelete
EditEditEditEdit this ExpenseClaim.
EditInLineEditEditInlineEdit
EditRecordEditEditEdit
EvaluatePolicyEvaluate PolicyServerAction (EvaluatePolicy)Runs the policy engine against the claim: gathers every active rule of active policies matching the tenant, the claimant's grade and the claim date, checks the six enforced rule types (category/grade-hotel limits, receipt-mandatory-above, blocked category, late submission, duplicate detection) plus the automatic inactive-category guard, writes ExpensePolicyViolation rows, sets policyViolationFlag/duplicateFlag on offending lines, adds AutoDisallow excesses to disallowedAmount, and sets the claim's hasPolicyViolation. Returns the violation list with blocked and requires-higher-approval indicators. Evaluation records and flags - run it before submission/approval so disallowances reach the posted amount.
LinkRechargeInvoiceLink Recharge InvoiceServerAction (LinkRechargeInvoice)Stamps the generated customer invoice onto the claim's billable lines: requires a rechargeInvoiceId argument, sets it on every billable line and marks them Billed. Purely a linkage/status update - the invoice itself must already exist.
NewNewNewCreate a ExpenseClaim.
PostClaimPostServerAction (PostClaim)Posts the claim to the ledger. Preconditions: not already posted, a claimant resourceId, at least one line with an expense GL account and non-zero amount, no deactivated expense categories, and an EmployeePayable control account configured. Effects: a journal debiting each expense head (ITC-eligible tax goes to the Input GST control instead), crediting Employee Payable for gross minus advanceAdjustedAmount; an Employee-Payable open item keyed on the Resource; best-effort GST/ITC analytics capture; stamps glId, postingStatus Posted, status Posted, totals and paymentStatus Unpaid. Fails if the advance adjustment covers the whole claim. Note this also runs automatically on final approval via the approval decision listener - manual use is mainly recovery when auto-posting failed.
PostReimbursementReimburseServerAction (PostReimbursement)Pays a posted claim from the bank: Dr Employee Payable / Cr Bank for the full open payable balance, settling the open item and stamping the claim Paid/Settled. Uses the bankGLAccountId argument, falling back to the claim's paymentGLAccountId. Refuses claims that are unposted, already fully paid, or set to reimbursementMode Payroll (those settle through the payroll run).
SettleViaPayrollSettle via PayrollServerAction (SettleClaimViaPayroll)Hands a posted Payroll-mode claim to payroll: Dr Employee Payable / Cr Payroll Payable, settling the expense open item, tagging includedInPayrollRunId and stamping the claim Paid/Settled - the salary payment then discharges Payroll Payable, and the claim is NOT re-accrued as a payroll earning. Requires a posted claim with an open payable and a PayrollPayable control account. Note the underlying handler registers this operation under the name SettleClaimViaPayroll; the reliable path is automatic - the payroll-run integration pulls every posted, unpaid Payroll-mode claim of the run's employees and performs this settlement per claim.

Lookup filters

FilterLookup fieldNotes
BranchFilterBranchId
PartnerAccountFilterPartnerAccountId