Guide to Workday Financial Management: Ledger Accounts, Journal Entries, and Expenses
Introduction
Workday Financial Management uses Accounting Journals as the primary mechanism for recording all financial transactions. Unlike some accounting systems that have dedicated "Expense" objects, Workday treats expenses as a specialized type of journal entry. Before working with transactions, you need to understand Workday's Ledger Account structure with its Account Sets and hierarchies.
Apideck's unified Accounting API abstracts these complexities by offering three interconnected resources:
- Ledger Accounts: The chart of accounts organized by Account Sets (Corporate, GAAP, IFRS, etc.)
- Journal Entries: Full control over debit/credit transactions for any accounting operation
- Expenses: Streamlined interface for recording already-paid purchases
This guide provides comprehensive coverage of all three resources, explaining how to retrieve account structures, create financial transactions, manage approval workflows, and handle Workday's unique features like Account Sets and Worktags.
Common Background
Workday's Journal Architecture
In Workday, financial transactions are recorded as Journal Entries. Each journal entry contains:
- Header Information: Company, currency, accounting date, memo, journal source
- Journal Entry Lines: Individual debit and credit lines with ledger accounts
- Worktags: Workday's flexible tagging system for tracking categories (cost centers, projects, spend categories, etc.)
- Status Information: Tracking workflow state from draft through posting
Workday processes journal entries individually. Each entry can be submitted, approved, and posted through its own workflow without affecting other entries.
Account Sets and Encoded IDs
Workday uses a hierarchical Account Set structure for ledger accounts. Each ledger account belongs to an Account Set (like "Corporate", "GAAP", or "Tax"), allowing multiple accounting frameworks in one system.
Apideck's Account ID Format:
This encoding ensures account references work correctly across Workday's multi-dimensional accounting structure.
Apideck's Unified Model
Apideck provides a simplified interface for working with Workday's complex SOAP-based financial APIs:
- Journal Entries: Full control over all debit and credit lines, suitable for any type of accounting transaction
- Expenses: Streamlined interface for "already paid" purchases where you specify expense lines and Apideck generates balancing payment line
Both map to Workday's Submit_Accounting_Journal SOAP operation but present different developer experiences:
- Journal Entries require explicit debit/credit balance
- Expenses automatically create offsetting payment line from the
accountfield
I. Ledger Accounts
Problem Overview
Workday's chart of accounts uses a sophisticated Account Set architecture that supports multiple accounting frameworks simultaneously (Corporate, GAAP, IFRS, Tax, etc.). This means a single ledger account like "Professional Fees" isn't uniquely identified by just its account number – you must specify both the Account_Id and the Account_Set_Id.
Working directly with Workday's SOAP APIs for ledger accounts presents challenges:
- Multi-ID System: Accounts have WIDs, Account_IDs, Account_Set_IDs, and parent references
- Account Set Hierarchy: Each account belongs to a specific accounting framework
- Complex XML Structures: SOAP responses contain deeply nested XML with multiple reference types
- Parent-Child Relationships: Accounts form hierarchies within Account Sets
- Status and Type Management: Active/inactive accounts, various account types (asset, liability, expense, etc.)
Apideck's connector solves this by:
- Encoding Account_Id + Account_Set_Id into a single base64-encoded ID
- Flattening hierarchical structures into simple JSON
- Automatically handling Account Set references in transactions
Retrieving Ledger Accounts
Get All Ledger Accounts
GET /accounting/ledger-accounts retrieves the complete chart of accounts with Account Set information.
Example Request:
Example Response:
Key Response Fields
Identity Fields:
- id: Base64-encoded JSON containing
Account_IdandAccount_Set_Id - display_id: Human-readable ledger account account number
Classification:
- classification: High-level type (
asset,liability,equity,revenue,expense)
Hierarchy:
- parent_account: Parent account details in the hierarchy
Status:
- active: Whether account is active
- status: Account status (active, inactive)
Get One Ledger Account
GET /accounting/ledger-accounts/{id} retrieves a specific account by its encoded ID.
Example Request:
Response: Single account object with same structure as shown above.
Understanding the Encoded Account ID
Decoding the ID Structure
Apideck encodes Workday's two-part account reference into a single ID:
Encoded Format:
eyJBY2NvdW50X0lkIjoiNjQwMCIsIkFjY291bnRfU2V0X0lkIjoiQ29ycG9yYXRlIn0=
Decoded JSON:
Why Encoding is Necessary
Workday's SOAP API requires both pieces of information to uniquely identify an account:
Workday XML Structure:
Why both are needed:
- Account "6400" might exist in multiple Account Sets (Corporate, GAAP, IFRS)
- Each Account Set represents a different accounting framework
- The same account number can have different configurations per framework
Using Encoded IDs in Transactions
When creating journal entries or expenses, use the full encoded ID:
Apideck automatically:
- Decodes the base64 ID
- Extracts Account_Id and Account_Set_Id
- Constructs proper Workday XML references
- Validates the account exists and is active
II. Journal Entries
Problem Overview
Workday's Financial Management uses Accounting Journals as the universal mechanism for recording financial transactions. However, working directly with Workday's SOAP APIs presents several challenges:
- SOAP Complexity: Workday uses SOAP/XML for financial operations, requiring complex XML request construction
- Account Set Hierarchy: Ledger accounts exist within Account Sets, requiring both Account_Id and Account_Set_Id for proper references
- Multi-ID System: Every Workday object has multiple IDs (WID, reference IDs, display IDs) requiring careful handling
- Worktags Complexity: Flexible tagging system with type-specific IDs and parent relationships
- Status Workflow: Six distinct status states with specific transitions between them
Apideck's connector abstracts these complexities by providing a unified Journal Entry model that handles SOAP envelope construction, account encoding, worktag mapping, and status translation automatically.
Initial Setup
Before using journal entry operations, you need to configure your Workday connection in Apideck:
Workday API Access
Please refer to this guide - https://developers.apideck.com/connectors/workday/docs/consumer+connection
Adding Journal Entries (Create)
When you add a journal entry via Apideck, you are creating an Accounting Journal in Workday via the Submit_Accounting_Journal SOAP operation.
Key Aspects
- Unified journal entry model: Apideck provides a simplified JSON model that maps to Workday's complex XML structure
- Status control at creation: Set
status: draftto save without submitting, orstatus: postedto submit and post immediately - Automatic balancing validation: Workday enforces debit/credit balance. Entries will fail submission if debits don't equal credits
- Worktags support: Map tracking_categories to Workday's flexible worktag system (cost centers, projects, spend categories)
- Account encoding: Apideck handles the base64 encoding of Account_Id + Account_Set_Id structures
- Immutable after posting: Once
status: posted, the entry becomes part of the general ledger and cannot be modified
Workday-Specific Fields
Creating a Draft Journal Entry
Request to Apideck:
What Happens:
- Apideck constructs SOAP XML envelope with authentication
- Sends
Submit_Accounting_JournalSOAP request to Workday - Returns unified response with Workday WID as the
id
Response:
Creating and Posting in One Step
To create and immediately post a journal entry, set status: posted:
Updating a Journal Entry
Journal entries can only be updated while in draft status. Once submitted for approval or posted, Workday treats them as immutable.
Update Request:
Important Limitations:
- ✅ Can update: Draft status entries
- ❌ Cannot update: Submitted, approved, or posted entries
- ⚠️ Line replacement: Update replaces ALL lines, not just modified ones
Important Notes:
- Auto_Complete behavior: Determined by Workday configuration. Some tenants allow auto-posting for API-created journals, others require manual approval
- Approval workflows: Workday may route journals to approvers based on amount thresholds, cost centers, or other business rules
- No rollback: Once posted, journal entries are permanent and read-only.
- Individual Processing: Workday posts each journal individually – no risk of accidentally posting other unrelated entries
Retrieving Journal Entries (Get One / Get All)
Get One Journal Entry
GET /accounting/journal-entries/{id} retrieves a single journal entry by its Workday WID.
Example Request:
Example Response:
Get All Journal Entries
GET /accounting/journal-entries returns a list of journal entries.
Example:
Response Structure:
III. Expenses
Problem Overview
Workday doesn't have a dedicated "Expense" API resource. Instead, expenses are recorded as a specific type of Accounting Journal where:
- Debit lines represent expense accounts (where money was spent)
- Credit line represents the payment account (cash, bank, or credit card)
- Journal Source is typically set to identify expense-related entries
Apideck abstracts this by providing an Expenses resource that:
- Accepts simplified expense line items (just amounts and accounts)
- Automatically generates the offsetting payment/credit line
- Uses Workday's
Submit_Accounting_Journalunder the hood
Initial Setup
No additional expense-specific configuration is required. Apideck's expense operations use the same Workday journal mechanisms as journal entries.
Adding Expenses (Create)
When you add an expense via Apideck, you specify the expense lines and payment source. Apideck automatically:
- Creates expense lines as journal entry debits
- Generates balancing credit line from the
accountfield - Sets appropriate journal source and tracking
Expense Request Structure
How Multiple Lines Are Created
Your expense input:
- 2 expense line items totaling $700.00 (debits)
- 1 payment account (credit)
Apideck generates journal entry:
Line 1: Debit $450.00 - Travel Transportation (6100)
Line 2: Debit $250.00 - Travel Lodging (6110)
Line 3: Credit $700.00 - Corporate Credit Card (1000) ← Auto-generated
Result: Balanced journal entry with 3 lines that represents the complete expense transaction.
Request to Apideck
What Happens Behind the Scenes
Workday Processing:
- Validates the journal entry structure
- Checks business rules and permissions
- Assigns WID and journal number
- Sets initial status based on submission flag
Response Structure:
Key Aspects of Expense Creation
Automatic Balancing
You provide:
Apideck generates:
Debit: $450.00 - Travel Transportation (Expense line 1)
Debit: $250.00 - Travel Lodging (Expense line 2)
Credit: $700.00 - Corporate Credit Card (Auto-generated from account)
-----------------------------------------------------
Total: $700.00 = $700.00 ✓ Balanced
Worktags (Tracking Categories)
Workday's Worktags are flexible dimensions for tracking expenses by cost center, project, region, etc.
Tracking Categories Structure:
Common Worktag Types:
Cost_Center_Reference_ID: Cost center allocation (required when creating a journal-entry)Spend_Category_ID: Expense category classificationProject_ID: Project trackingRegion_ID: Geographic tracking
Applied to Line Items: Each expense line can have its own set of worktags, allowing detailed expense allocation:
Status Control
Expenses support the same status workflow as journal entries:
draft: Save expense without submitting for approvalposted: Submit and attempt to post to ledger
Updating an Expense
Like journal entries, expenses can only be updated while in draft status.
Update Request:
Behind the Scenes:
- Apideck fetches existing expense journal from Workday
- Validates expense is in draft status
- Merges updates with existing data
- Recalculates payment line credit amount ($750.00 total)
- Submits updated journal to Workday with new line structure
Important:
- Update replaces ALL expense lines
- Payment account credit line is automatically recalculated
Posting (Approving) an Expense
Posting an expense follows the same workflow as journal entries. Update the status to trigger submission:
Option 1: Create Posted Expense
Option 2: Post Draft Expense
Checking Status:
Retrieving Expenses (Get One / Get All)
Get One Expense
GET /accounting/expenses/{id} retrieves a specific expense by its WID.
Example Response:
Get All Expenses
GET /accounting/expenses returns expenses.
Example Request:
Response:
IV. Workday-Specific Considerations
Account Sets and Multi-Dimensional Accounting
Understanding Account Sets
Account Reference Structure:
How Apideck Handles Account Sets
Encoding: When you use Apideck's Ledger Accounts API, you receive encoded account IDs:
In Expense/Journal Requests:
Apideck's Transformation:
- Decodes base64 ID
- Extracts Account_Id and Account_Set_Id
- Constructs proper Workday XML structure
- Sends to Workday with correct parent references
Working with Different Account Sets
If you need to record transactions in multiple accounting frameworks:
Worktags: Workday's Flexible Tracking
What Are Worktags?
Worktags are Workday's answer to traditional accounting dimensions/segments. Instead of fixed dimensions, Workday allows flexible tagging with type-specific tags:
Standard Worktag Types:
- Cost Centers: Organizational units (departments, divisions)
- Spend Categories: Expense classification (travel, supplies, professional fees)
- Projects: Project/grant tracking
- Regions: Geographic allocation
Worktag Structure in Apideck
Request Format (tracking_categories):
Workday XML Structure:
Worktag Best Practices
1. Validate Worktag Compatibility:
- Not all worktag combinations are valid in Workday
- Some worktags are required based on ledger account configuration
- Workday validates worktags at submission time
2. Use Reference IDs:
Worktag type IDs commonly end in _Reference_ID or _ID:
Cost_Center_Reference_IDSpend_Category_IDProject_IDRegion_Reference_ID
SOAP/XML Abstraction
Apideck Handles SOAP Complexity
Working directly with Workday SOAP APIs requires:
- XML envelope construction
- WSSE security headers
- Namespace management
- Complex nested structures
Direct SOAP Request (340+ lines):
Apideck Request (Simple JSON):
Apideck handles:
- ✅ SOAP envelope construction
- ✅ WSSE authentication
- ✅ XML namespace management
- ✅ Account Set encoding/decoding
- ✅ Worktag structure conversion
- ✅ Line item XML formatting
- ✅ Status code translation
- ✅ Error handling and rollback
V. Comparison: Expenses vs Journal Entries in Workday
When to Use Each Resource
Use Expenses When:
- ✅ Recording "already paid" purchases
- ✅ Simple expense transactions (purchase + payment)
- ✅ Want automatic payment line generation
- ✅ Line items are all expenses with one payment source
- ✅ Prefer simplified API with less accounting detail
Use Journal Entries When:
- ✅ Need explicit control over all debits and credits
- ✅ Recording accounting adjustments or accruals
- ✅ Complex multi-line transactions
- ✅ Need full flexibility in line structure
Implementation Differences
Expenses Implementation
Journal Entries Implementation
Conclusion
Using Apideck's unified API for Workday Financial Management dramatically simplifies working with resources that Workday implements through complex SOAP operations. This guide covered three interconnected resources that form the foundation of financial data management:
Three Core Resources
1. Ledger Accounts:
- Multi-dimensional chart of accounts organized by Account Sets (Corporate, GAAP, IFRS, Tax)
- Base64-encoded IDs that combine Account_Id + Account_Set_Id
- Hierarchical account structures with parent-child relationships
- REST endpoints for retrieval
2. Journal Entries:
- Full control over debit/credit transactions for any accounting operation
- Support for draft, and posted workflows
- Manual balancing requirement with explicit line types
- Suitable for adjustments, accruals, reclassifications, and complex transactions
3. Expenses:
- Streamlined interface for recording already-paid purchases
- Automatic payment line generation from the
accountfield - Same approval workflow as journal entries
- Optimized for simple purchase transactions
What Apideck Handles Automatically
All three resources benefit from Apideck's abstraction layer:
- SOAP/XML Complexity: No need to construct XML envelopes or manage namespaces
- Account Set Encoding: Transparent encoding/decoding of multi-part account references
- Worktag Transformation: Simple JSON tracking_categories → complex Workday Worktag XML
- Error Handling: Consistent error responses with actionable validation messages
- Atomic Operations: Transaction safety with proper rollback on failures
Workday's Unique Features
Account Sets:
- Support multiple accounting frameworks simultaneously
- Same account number can exist in Corporate, GAAP, IFRS, and Tax Account Sets
- Each framework maintains independent balances and configurations
Worktags:
- Flexible tagging system beyond traditional dimensions
- Support for cost centers, projects, regions, spend categories, and custom tags
- Applied at line-item and header level for detailed tracking
Immutability:
- Posted entries become part of permanent ledger
- No risk of accidental modification after posting
Integration Benefits
By leveraging Apideck's Workday connector, developers can:
- Work with familiar REST JSON APIs instead of learning SOAP/XML
- Use encoded account IDs without understanding Workday's multi-ID system
- Apply worktags using simple key-value pairs
- Create transactions with automatic SOAP envelope construction
- Track status through unified workflow states
- Handle errors with consistent validation messages
This allows you to focus on your application logic while ensuring accurate, compliant financial data in Workday's sophisticated financial management system. Whether you're building expense reporting, financial consolidation, or accounting automation, Apideck provides the abstraction layer that makes Workday integration straightforward and maintainable.
Related Resources
Apideck Documentation: