If you’re involved in financial reporting, regulatory compliance, or corporate accounting, you’ve probably heard about XBRL. This standardized format is now required by regulators worldwide, including the SEC, HMRC, and many other financial authorities. Converting financial statements to XBRL might seem challenging at first, but this guide will show you exactly how to do it—whether you’re a finance professional or a business owner handling your own reporting.
How to Convert Financial Statements to XBRL Format
Converting financial statements to XBRL involves tagging each financial data point with standardized labels that computers can read and process. The process typically includes preparing your financial data, selecting the appropriate taxonomy, mapping your line items to XBRL tags, validating the output, and generating the final XBRL files.
There are several methods to convert your financial statements to XBRL format:
Using specialized XBRL software – Commercial tools like Workiva, Certent, or Fujitsu XWand provide user-friendly interfaces for tagging and validation.
Excel-based conversion – Using add-ins that work within Microsoft Excel, allowing you to tag cells directly in your familiar spreadsheet environment.
Python programming – For technical users who need automation, Python libraries like Arelle enable custom XBRL generation.
Online conversion services – Web-based platforms where you upload your statements and receive XBRL files.
Professional XBRL service providers – Outsourcing to specialists who handle the entire conversion process for you.
The best method depends on your technical expertise, budget, filing frequency, and complexity of your financial statements. Let’s explore each approach in detail.
What is XBRL and Why Does It Matter?
XBRL stands for eXtensible Business Reporting Language. Think of it as a universal language for financial data that allows computers to automatically read, process, and compare financial information across different companies and countries.
Here’s why XBRL is important:
Unlike traditional PDF or paper financial statements, XBRL tags each piece of financial data with a specific label. For example, instead of just showing “Revenue: $1,000,000” as text, XBRL marks it as “us-gaap:Revenue” with the value 1000000 and the currency USD. This makes the data machine-readable and searchable.
Key benefits of XBRL:
- Mandatory for SEC filings and many international regulators
- Reduces errors in financial reporting
- Makes financial analysis faster and more accurate
- Enables automated data validation and comparison
- Improves transparency for investors and stakeholders
- Simplifies regulatory compliance
- Facilitates cross-company financial comparisons
- Speeds up data processing for analysts and investors
Who Needs to Convert Financial Statements to XBRL?
Public companies – Required by SEC for 10-K, 10-Q, and other regulatory filings in the United States.
Private companies filing in certain jurisdictions – UK companies filing with HMRC, European companies under ESEF regulations, and companies in other countries with XBRL mandates.
Financial institutions – Banks and insurance companies often have specific XBRL reporting requirements.
Listed companies globally – Stock exchanges in Japan, India, Singapore, China, Australia, and many other countries require XBRL submissions.
Companies seeking transparency – Even if not required, some companies voluntarily use XBRL to improve data accessibility for investors.
Accounting firms – Preparing XBRL filings for multiple clients requires efficient conversion processes.
Understanding XBRL Taxonomy
Before converting, you need to understand XBRL taxonomy—essentially the dictionary that defines all the tags and labels used in financial reporting.
Common taxonomies include:
US GAAP Taxonomy – Used for companies following US Generally Accepted Accounting Principles. This is required for SEC filings and includes thousands of predefined elements for income statements, balance sheets, cash flows, and footnotes.
IFRS Taxonomy – Used by companies following International Financial Reporting Standards. Common in Europe, Asia, and other international markets.
Country-specific taxonomies – Many countries have their own versions, like UK GAAP, Indian Accounting Standards, Japanese GAAP, or Australian Accounting Standards.
Industry-specific extensions – Banking, insurance, real estate, and other industries may have specialized taxonomies with additional elements.
Custom extensions – When standard taxonomy doesn’t have an appropriate tag, companies can create custom extensions (though regulators prefer using standard tags when possible).
Method 1: Using XBRL Software Tools (Recommended for Most Users)
This is the most practical approach for businesses that need reliable, compliant XBRL conversions without extensive technical knowledge.
Popular XBRL Software Solutions
Workiva (Wdesk)
Workiva is one of the most popular enterprise-level solutions for XBRL reporting.
How it works:
- Upload your financial statements (Excel, Word, or PDF)
- The software helps you map data to appropriate XBRL tags
- Built-in validation checks for errors and compliance
- Generate XBRL files ready for submission
- Collaboration features for team review
- Automatic calculation validation
- Version control and audit trails
Best for: Large public companies, those with complex reporting needs, and teams requiring collaboration features.
Pricing: Enterprise pricing (typically $10,000-$50,000+ annually depending on features and company size)
Certent (formerly DataTracks)
Certent offers comprehensive XBRL creation and validation tools with strong focus on regulatory compliance.
Features:
- Automated tagging suggestions based on your data
- Support for multiple taxonomies (US GAAP, IFRS, etc.)
- Real-time validation against SEC rules
- Integration with Excel and Word
- Filing management and deadline tracking
- Support for inline XBRL (iXBRL)
- Extensive taxonomy mapping libraries
Best for: Mid to large companies, CFOs and financial controllers managing regular filings.
Pricing: Subscription-based, starts around $5,000-$15,000 annually
Fujitsu XWand
A cost-effective solution particularly popular in Asia and Europe.
Key features:
- User-friendly interface for non-technical users
- Support for multiple international taxonomies
- Excel add-in for easy tagging
- Validation and quality checks
- Batch processing capabilities
- Multi-language support
- Taxonomy update notifications
Best for: Small to medium enterprises, international companies.
Pricing: More affordable than enterprise solutions, around $2,000-$5,000 annually
Arelle (Free Open-Source Option)
Arelle is a free, open-source XBRL platform that’s surprisingly powerful.
What it does:
- View and validate XBRL documents
- Convert financial data to XBRL format
- Support for most major taxonomies
- Plugin architecture for extensions
- Command-line tools for automation
- Formula validation
- Rendering capabilities
Best for: Technical users, small companies on a budget, developers building custom solutions, academics studying XBRL.
Pricing: Completely free (donations welcome)
Download: arelle.org
Step-by-Step: Converting with XBRL Software
Let me walk you through the general process using any XBRL software:
Step 1: Prepare Your Financial Statements
Make sure your financial statements are complete and accurate. You’ll need:
- Balance Sheet (Statement of Financial Position)
- Income Statement (Profit & Loss Statement)
- Cash Flow Statement
- Statement of Changes in Equity
- Notes to financial statements
- Accounting policies
- Related party disclosures
Have these in Excel or Word format for easier data mapping. Clean formatting helps the software better identify line items.
Step 2: Choose Your Taxonomy
Select the appropriate taxonomy based on your reporting requirements:
- US GAAP for SEC filings
- IFRS for international reporting
- Country-specific taxonomy if required by local regulators
- Verify you’re using the correct taxonomy year/version
Your software will download the latest version of the taxonomy automatically.
Step 3: Map Your Data to XBRL Tags
This is the most important step. You’ll assign XBRL tags to each line item in your financial statements.
For example:
- “Total Revenue” → us-gaap:Revenues
- “Cost of Goods Sold” → us-gaap:CostOfGoodsSold
- “Net Income” → us-gaap:NetIncomeLoss
- “Total Assets” → us-gaap:Assets
- “Cash and Cash Equivalents” → us-gaap:CashAndCashEquivalentsAtCarryingValue
- “Accounts Receivable” → us-gaap:AccountsReceivableNetCurrent
- “Property, Plant and Equipment” → us-gaap:PropertyPlantAndEquipmentNet
Most modern software provides intelligent suggestions based on your line item descriptions. Review these carefully to ensure accurate mapping.
Step 4: Add Context and Dimensions
XBRL isn’t just about the numbers—you need to provide context:
- Reporting period – Start and end dates for duration items (income, expenses)
- Instant dates – Specific dates for point-in-time items (assets, liabilities)
- Currency – USD, EUR, GBP, etc.
- Entity information – Company name, CIK number for SEC, registration number
- Segment information – Geographic or business segment dimensions if applicable
- Comparative periods – Prior year data with appropriate contexts
- Units – Shares, pure numbers, percentages
Step 5: Validate Your XBRL Document
Run validation checks to ensure:
- All required elements are present
- Calculations are correct (assets = liabilities + equity)
- No duplicate tags
- Proper taxonomy version used
- Compliance with regulatory rules (SEC Edgar Filer Manual, etc.)
- Context references are valid
- No broken calculation linkbases
Most software will flag errors in red and warnings in yellow, providing suggestions for fixes.
Step 6: Review Rendering
Check the human-readable rendering of your XBRL to ensure it displays correctly:
- Financial statements appear in proper format
- Notes are readable and properly linked
- Tables display correctly
- Formatting matches your intent
Step 7: Generate and Export
Once validation passes, generate your XBRL instance document. You’ll typically get:
- An .xml or .xbrl file (the actual XBRL data)
- Supporting schema files (if using custom extensions)
- Linkbase files (calculation, presentation, definition, label)
- An inline XBRL file (.html) if required
- A rendering preview (PDF or HTML)
Step 8: Test Filing
Before submitting officially:
- Upload to SEC EDGAR test system or equivalent
- Check for any filing-specific errors
- Verify all required exhibits are included
- Review the live rendering on the filing platform
Step 9: Submit to Regulator
Upload your XBRL files to the appropriate filing system:
- SEC EDGAR for US public companies
- HMRC for UK companies
- ESMA systems for European filings
- Country-specific platforms for other jurisdictions
Method 2: Excel-Based Conversion with Add-ins
If you’re comfortable with Excel and want more control over the process, Excel add-ins can be an excellent middle ground between manual work and full software suites.
Using Excel Add-ins for XBRL
Several add-ins convert Excel spreadsheets directly to XBRL:
RDG Filings Tagger
- Excel plugin that tags cells with XBRL elements
- Works within your existing Excel workflow
- Supports multiple taxonomies
- Built-in validation
- Color-coded tagging system
How to use:
- Install the Excel add-in from the provider
- Open your financial statements in Excel
- Select a cell containing financial data
- Click the add-in toolbar
- Choose the appropriate XBRL tag from the taxonomy browser
- Assign context (period, entity, currency)
- Repeat for all line items
- Export as XBRL instance document
- Review validation results
Certent Excel Add-in
- Part of the Certent suite
- Tag directly in Excel without leaving your spreadsheet
- Auto-validation features
- Preview XBRL output without leaving Excel
- Supports calculations and rollups
- Integration with main Certent platform
CoreFiling Excel Add-in
- Professional-grade tagging
- Support for complex calculations
- Dimensional analysis
- Multi-period handling
- Taxonomy search and filtering
Advantages of Excel add-ins:
- Work in familiar environment
- No need to learn new software interface
- Direct control over data
- Can maintain Excel-based workflow
- Lower cost than full software suites
- Good for smaller companies
Disadvantages:
- More manual work required
- Less automation than dedicated software
- Requires good understanding of XBRL concepts
- Validation may be less comprehensive
DIY Excel Method
If you want to build your own process:
- Structure your Excel file with clear labels matching XBRL taxonomy elements
- Create a mapping sheet that links your Excel cell references to XBRL tags
- Use VBA or Python to read the Excel file and generate XBRL XML
Here’s an example structure in Excel:
Sheet 1: Financial Data
Line Item20242023Revenue1,000,000850,000Cost of Sales600,000510,000Gross Profit400,000340,000Operating Expenses250,000220,000Net Income150,000120,000
Sheet 2: XBRL Mapping
Line ItemCell ReferenceXBRL TagPeriod TypeDebit/CreditRevenueB2us-gaap:RevenuesDurationCreditCost of SalesB3us-gaap:CostOfGoodsSoldDurationDebitNet IncomeB6us-gaap:NetIncomeLossDurationCreditTotal AssetsB10us-gaap:AssetsInstantDebit
Sheet 3: Context Information
Context IDTypeStart DateEnd DateEntity CIKCY2024Duration2024-01-012024-12-310001234567CY2023Duration2023-01-012023-12-310001234567CY2024EndInstant-2024-12-310001234567
This structured approach makes it easier to automate XBRL generation using scripts.
Method 3: Python Programming for Custom Solutions
For developers or those needing automated, repeatable processes, Python offers powerful XBRL libraries.
Using Python XBRL Libraries
Installation:
bash
pip install arelle-release
pip install xbrlpy
pip install pandas openpyxl lxml
Basic Python Script to Create XBRL:
python
from lxml import etree
import pandas as pd
from datetime import datetime
def create_xbrl_instance(financial_data, company_info, output_file):
"""
Create XBRL instance document from financial data
Args:
financial_data: Dictionary with financial line items
company_info: Dictionary with company details
output_file: Path for output XBRL file
"""
# Define namespaces
NSMAP = {
None: "http://www.xbrl.org/2003/instance",
'xsi': "http://www.w3.org/2001/XMLSchema-instance",
'link': "http://www.xbrl.org/2003/linkbase",
'xlink': "http://www.w3.org/1999/xlink",
'iso4217': "http://www.xbrl.org/2003/iso4217",
'us-gaap': "http://fasb.org/us-gaap/2024",
'dei': "http://xbrl.sec.gov/dei/2024"
}
# Create root element
root = etree.Element('xbrl', nsmap=NSMAP)
# Add schema reference
schema_ref = etree.SubElement(root,
'{http://www.xbrl.org/2003/linkbase}schemaRef',
{'{http://www.w3.org/1999/xlink}type': 'simple',
'{http://www.w3.org/1999/xlink}href':
'https://xbrl.fasb.org/us-gaap/2024/entire/us-gaap-entryPoint-std-2024.xsd'})
# Add contexts
# Duration context for income statement items
context_duration = etree.SubElement(root, 'context', id='FY2024')
entity = etree.SubElement(context_duration, 'entity')
identifier = etree.SubElement(entity, 'identifier',
scheme='http://www.sec.gov/CIK')
identifier.text = company_info['cik']
period = etree.SubElement(context_duration, 'period')
start_date = etree.SubElement(period, 'startDate')
start_date.text = '2024-01-01'
end_date = etree.SubElement(period, 'endDate')
end_date.text = '2024-12-31'
# Instant context for balance sheet items
context_instant = etree.SubElement(root, 'context', id='FY2024End')
entity2 = etree.SubElement(context_instant, 'entity')
identifier2 = etree.SubElement(entity2, 'identifier',
scheme='http://www.sec.gov/CIK')
identifier2.text = company_info['cik']
period2 = etree.SubElement(context_instant, 'period')
instant = etree.SubElement(period2, 'instant')
instant.text = '2024-12-31'
# Add unit (USD)
unit = etree.SubElement(root, 'unit', id='USD')
measure = etree.SubElement(unit, 'measure')
measure.text = 'iso4217:USD'
# Add company information facts
entity_name = etree.SubElement(root, '{http://xbrl.sec.gov/dei/2024}EntityRegistrantName',
contextRef='FY2024End')
entity_name.text = company_info['name']
cik_fact = etree.SubElement(root, '{http://xbrl.sec.gov/dei/2024}EntityCentralIndexKey',
contextRef='FY2024End')
cik_fact.text = company_info['cik']
# Add financial facts
for item_name, item_data in financial_data.items():
xbrl_tag = item_data['tag']
value = item_data['value']
context_ref = item_data['context'] # 'FY2024' or 'FY2024End'
fact = etree.SubElement(root,
f"{{http://fasb.org/us-gaap/2024}}{xbrl_tag}",
contextRef=context_ref,
unitRef='USD',
decimals='0')
fact.text = str(value)
# Write to file
tree = etree.ElementTree(root)
tree.write(output_file,
pretty_print=True,
xml_declaration=True,
encoding='utf-8')
print(f"✓ XBRL instance created: {output_file}")
# Example usage
company_info = {
'name': 'Example Corporation',
'cik': '0001234567'
}
financial_data = {
'revenue': {
'tag': 'Revenues',
'value': 1000000,
'context': 'FY2024'
},
'cost_of_sales': {
'tag': 'CostOfGoodsSold',
'value': 600000,
'context': 'FY2024'
},
'net_income': {
'tag': 'NetIncomeLoss',
'value': 150000,
'context': 'FY2024'
},
'assets': {
'tag': 'Assets',
'value': 5000000,
'context': 'FY2024End'
},
'liabilities': {
'tag': 'Liabilities',
'value': 3000000,
'context': 'FY2024End'
},
'equity': {
'tag': 'StockholdersEquity',
'value': 2000000,
'context': 'FY2024End'
}
}
create_xbrl_instance(financial_data, company_info, 'financial_statement.xbrl')
More Advanced Python Example with Excel Input
python
import pandas as pd
from lxml import etree
from datetime import datetime
def excel_to_xbrl_advanced(excel_file, output_file):
"""
Read financial statements from Excel and create XBRL
Excel should have sheets:
- FinancialData: Line items with values
- Mapping: XBRL tag mappings
- CompanyInfo: Entity details
"""
# Read Excel sheets
financial_df = pd.read_excel(excel_file, sheet_name='FinancialData')
mapping_df = pd.read_excel(excel_file, sheet_name='Mapping')
company_df = pd.read_excel(excel_file, sheet_name='CompanyInfo')
# Extract company information
company_name = company_df.loc[company_df['Field'] == 'Name', 'Value'].values[0]
company_cik = company_df.loc[company_df['Field'] == 'CIK', 'Value'].values[0]
fiscal_year_end = company_df.loc[company_df['Field'] == 'FiscalYearEnd', 'Value'].values[0]
# Create XBRL structure
NSMAP = {
None: "http://www.xbrl.org/2003/instance",
'xsi': "http://www.w3.org/2001/XMLSchema-instance",
'link': "http://www.xbrl.org/2003/linkbase",
'xlink': "http://www.w3.org/1999/xlink",
'iso4217': "http://www.xbrl.org/2003/iso4217",
'us-gaap': "http://fasb.org/us-gaap/2024",
'dei': "http://xbrl.sec.gov/dei/2024"
}
root = etree.Element('xbrl', nsmap=NSMAP)
# Add schema reference
schema_ref = etree.SubElement(root,
'{http://www.xbrl.org/2003/linkbase}schemaRef',
{'{http://www.w3.org/1999/xlink}type': 'simple',
'{http://www.w3.org/1999/xlink}href':
'https://xbrl.fasb.org/us-gaap/2024/entire/us-gaap-entryPoint-std-2024.xsd'})
# Create contexts based on period types in mapping
contexts_needed = mapping_df['PeriodType'].unique()
for period_type in contexts_needed:
if period_type == 'Duration':
context = etree.SubElement(root, 'context', id='Current_Duration')
entity = etree.SubElement(context, 'entity')
identifier = etree.SubElement(entity, 'identifier',
scheme='http://www.sec.gov/CIK')
identifier.text = str(company_cik)
period = etree.SubElement(context, 'period')
start_date = etree.SubElement(period, 'startDate')
start_date.text = '2024-01-01'
end_date = etree.SubElement(period, 'endDate')
end_date.text = fiscal_year_end
elif period_type == 'Instant':
context = etree.SubElement(root, 'context', id='Current_Instant')
entity = etree.SubElement(context, 'entity')
identifier = etree.SubElement(entity, 'identifier',
scheme='http://www.sec.gov/CIK')
identifier.text = str(company_cik)
period = etree.SubElement(context, 'period')
instant = etree.SubElement(period, 'instant')
instant.text = fiscal_year_end
# Add unit
unit = etree.SubElement(root, 'unit', id='USD')
measure = etree.SubElement(unit, 'measure')
measure.text = 'iso4217:USD'
# Merge financial data with mapping
merged_df = financial_df.merge(mapping_df, on='LineItem', how='left')
# Create facts
for _, row in merged_df.iterrows():
if pd.notna(row['XBRLTag']) and pd.notna(row['Value']):
xbrl_tag = row['XBRLTag']
value = row['Value']
period_type = row['PeriodType']
context_ref = 'Current_Duration' if period_type == 'Duration' else 'Current_Instant'
fact = etree.SubElement(root,
f"{{http://fasb.org/us-gaap/2024}}{xbrl_tag}",
contextRef=context_ref,
unitRef='USD',
decimals='0')
fact.text = str(int(value))
# Write to file
tree = etree.ElementTree(root)
tree.write(output_file,
pretty_print=True,
xml_declaration=True,
encoding='utf-8')
print(f"✓ Successfully converted {excel_file} to {output_file}")
print(f"✓ Company: {company_name}")
print(f"✓ Facts created: {len(merged_df)}")
# Usage
excel_to_xbrl_advanced('financial_statements_template.xlsx', 'output.xbrl')
Excel Template Structure:
Sheet: FinancialData
LineItemValueYearRevenue10000002024Cost of Goods Sold6000002024Net Income1500002024Total Assets50000002024Total Liabilities30000002024
Sheet: Mapping
LineItemXBRLTagPeriodTypeNamespaceRevenueRevenuesDurationus-gaapCost of Goods SoldCostOfGoodsSoldDurationus-gaapNet IncomeNetIncomeLossDurationus-gaapTotal AssetsAssetsInstantus-gaapTotal LiabilitiesLiabilitiesInstantus-gaap
Sheet: CompanyInfo
FieldValueNameExample CorporationCIK0001234567FiscalYearEnd2024-12-31TickerEXAM
Method 4: Online XBRL Conversion Services
Several online platforms offer XBRL conversion as a service, ideal for occasional filers or small companies who prefer not to invest in software or technical expertise.
Cloud-Based XBRL Services
SEC XBRL Prep Services
- Specialized in SEC filings
- Full-service: you submit financials, they return XBRL
- Includes review and validation
- Handles amendments and resubmissions
- Expert review by XBRL professionals
How it works:
- Create account on the platform
- Upload your financial statements (PDF, Excel, or Word)
- Fill out company information form
- Service team maps data to XBRL tags
- You receive draft for review within 2-5 business days
- Provide feedback and request changes if needed
- Receive final validated XBRL files
- Optional filing service directly to SEC EDGAR
Pricing: Per-filing basis, typically $1,500-$5,000 depending on complexity
Popular providers: Toppan Merrill, Donnelley Financial Solutions (DFIN), Workiva Services
DataTracks Online Portal
- Web-based XBRL creation platform
- No software installation required
- Template-based approach for faster creation
- Support for multiple taxonomies (US GAAP, IFRS, country-specific)
- Step-by-step wizard interface
- Built-in validation engine
- Document upload and automatic extraction
Process:
- Sign up for account (free trial often available)
- Select your taxonomy and filing type
- Upload financial documents
- Review auto-tagged elements
- Manually tag remaining items
- Validate and download XBRL files
Pricing: Subscription or pay-per-use, typically $500-$2,000 per filing
iXBRL Solutions
- Creates inline XBRL (human and machine readable in one document)
- Growing requirement in many jurisdictions (UK, EU, etc.)
- Web-based tagging interface
- Automatic validation against regulatory rules
- Preview in browser before finalizing
Benefits of iXBRL:
- Single document serves both humans and machines
- No separate instance and rendering documents
- Easier to review and verify
- Becoming standard in many countries
TagniFi
- Focus on ease of use for non-technical users
- Pre-built templates for common financial statements
- Drag-and-drop interface
- Affordable pricing for small businesses
- Cloud storage for filing history
- Automated reminders for filing deadlines
Process:
- Choose template matching your financial statements
- Import your data (copy-paste or upload)
- Software suggests appropriate tags
- Review and adjust as needed
- Run validation checks
- Export XBRL files
Pricing: Affordable monthly subscriptions starting around $50-$200/month
Advantages of Online Services
- No software installation or updates needed
- Access from anywhere with internet
- Lower upfront costs
- Professional support available
- Regular taxonomy updates handled automatically
- Good for occasional filers
- Scalable based on needs
Disadvantages
- Ongoing subscription costs
- Less control over tagging process
- Privacy concerns (uploading sensitive financial data)
- May require internet connection
- Limited customization compared to desktop software
Method 5: Hiring XBRL Service Providers
For companies that file occasionally or lack internal expertise, outsourcing to XBRL specialists can be the most cost-effective and stress-free option.
What XBRL Service Providers Do
Full-service XBRL conversion includes:
- Accept your financial statements in any format (PDF, Word, Excel, scanned documents)
- Analyze your financial statement structure
- Map all data to appropriate XBRL tags from correct taxonomy
- Handle taxonomy selection and custom extensions if needed
- Create calculation, presentation, and definition linkbases
- Validate against regulatory requirements (SEC, HMRC, etc.)
- Generate human-readable renderings
- File directly with regulators if requested
- Handle amendments and corrections
- Provide documentation and support
Typical process:
- Initial consultation to understand your needs
- You provide financial statements and filing requirements
- Service provider creates initial XBRL draft
- You review draft and provide feedback
- Provider makes revisions based on your input
- Final validation and quality checks
- Delivery of complete XBRL package
- Optional: Direct filing to SEC EDGAR or other regulator
- Post-filing support for any questions or amendments
Cost considerations:
- First-time filings: $3,000-$10,000 (more complex due to initial setup and custom extensions)
- Recurring quarterly filings: $1,500-$3,000 per quarter
- Annual filings only: $2,000-$5,000
- Complex filings with extensive footnotes: $10,000-$20,000+
- Rush fees for tight deadlines: 25-50% additional
- Amendment fees: $500-$2,000 depending on changes needed
Top XBRL service providers:
Donnelley Financial Solutions (DFIN)
- One of the largest financial communications firms
- Extensive XBRL experience with thousands of filings
- Full-service including printing and filing
- Premium pricing but highest quality
Toppan Merrill
- Major player in financial printing and XBRL
- Strong expertise in complex SEC filings
- Technology platform combined with human expertise
- Competitive pricing
Workiva Professional Services
- Part of the Workiva ecosystem
- Can combine with Workiva software for hybrid approach
- Strong for ongoing compliance programs
- Good for companies needing both tools and services
Certent Services
- Professional services arm of Certent software
- Flexible engagement models
- Good for international filings
- Supports IFRS and country-specific taxonomies
Local and regional accounting firms
- Many CPA firms now offer XBRL services
- More personal service
- Often more affordable
- Good understanding of your business
- May have limitations on very complex filings
When to Use Service Providers
Best situations for outsourcing:
- First-time XBRL filers who need expert guidance
- Companies without dedicated financial reporting staff
- Complex financial structures requiring custom extensions
- Tight deadlines with no room for error
- Occasional filers (annual only) where software doesn’t make sense
- Companies transitioning to XBRL compliance
- Need for professional liability insurance coverage
- Multiple jurisdiction filings with different requirements
When to consider keeping in-house:
- Frequent filers (quarterly) where per-filing costs add up
- Large finance teams with technical capacity
- Need for complete control over tagging decisions
- Sensitive financial information you prefer not to share
- Long-term cost savings justify software investment
- Desire to build internal XBRL expertise
Understanding XBRL File Structure
To work effectively with XBRL, it helps to understand what’s actually in these files.
Components of an XBRL Filing
Instance Document (.xml or .xbrl)
- Contains your actual financial data (the facts)
- References the taxonomy being used
- Includes contexts (time periods, entities)
- Includes units (currency, shares, etc.)
- The core document that regulators receive
Taxonomy Schema (.xsd)
- Defines the elements that can be used
- Specifies data types (monetary, string, decimal, etc.)
- Published by standard-setters (FASB, IASB)
- You typically reference existing schemas rather than creating new ones
Linkbase Files (.xml)
- Calculation Linkbase: Defines how elements add up (e.g., assets = liabilities + equity)
- Presentation Linkbase: Defines how statements should be displayed
- Definition Linkbase: Defines relationships between concepts
- Label Linkbase: Provides human-readable labels for elements
- Reference Linkbase: Links to authoritative literature
Extension Taxonomy (if needed)
- Custom schema for company-specific elements
- Custom linkbases for your specific presentation
- Required when standard taxonomy doesn’t have appropriate tags
- Must follow extension naming conventions
Sample XBRL Instance Structure
xml
<?xml version="1.0" encoding="UTF-8"?>
<xbrl xmlns="http://www.xbrl.org/2003/instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:us-gaap="http://fasb.org/us-gaap/2024"
xmlns:dei="http://xbrl.sec.gov/dei/2024"
xmlns:iso4217="http://www.xbrl.org/2003/iso4217">
<!-- Schema Reference -->
<link:schemaRef xlink:type="simple"
xlink:href="https://xbrl.fasb.org/us-gaap/2024/entire/us-gaap-entryPoint-std-2024.xsd"/>
<!-- Context for Duration (Income Statement) -->
<context id="FY2024">
<entity>
<identifier scheme="http://www.sec.gov/CIK">0001234567</identifier>
</entity>
<period>
<startDate>2024-01-01</startDate>
<endDate>2024-12-31</endDate>
</period>
</context>
<!-- Context for Instant (Balance Sheet) -->
<context id="FY2024End">
<entity>
<identifier scheme="http://www.sec.gov/CIK">0001234567</identifier>
</entity>
<period>
<instant>2024-12-31</instant>
</period>
</context>
<!-- Unit Definition -->
<unit id="USD">
<measure>iso4217:USD</measure>
</unit>
<!-- Company Information Facts -->
<dei:EntityRegistrantName contextRef="FY2024End">
Example Corporation
</dei:EntityRegistrantName>
<dei:EntityCentralIndexKey contextRef="FY2024End">
0001234567
</dei:EntityCentralIndexKey>
<!-- Financial Facts -->
<us-gaap:Revenues contextRef="FY2024" unitRef="USD" decimals="0">
1000000
</us-gaap:Revenues>
<us-gaap:CostOfGoodsSold contextRef="FY2024" unitRef="USD" decimals="0">
600000
</us-gaap:CostOfGoodsSold>
<us-gaap:NetIncomeLoss contextRef="FY2024" unitRef="USD" decimals="0">
150000
</us-gaap:NetIncomeLoss>
<us-gaap:Assets contextRef="FY2024End" unitRef="USD" decimals="0">
5000000
</us-gaap:Assets>
<us-gaap:Liabilities contextRef="FY2024End" unitRef="USD" decimals="0">
3000000
</us-gaap:Liabilities>
<us-gaap:StockholdersEquity contextRef="FY2024End" unitRef="USD" decimals="0">
2000000
</us-gaap:StockholdersEquity>
</xbrl>
Common XBRL Conversion Challenges and Solutions
Challenge 1: Finding the Right XBRL Tag
Your financial statement might use terminology that doesn’t exactly match taxonomy elements.
Solution:
- Use taxonomy search tools within your software
- Consult the US GAAP taxonomy documentation
- Look at similar companies’ filings on SEC EDGAR for guidance
- When in doubt, choose the closest match that doesn’t misrepresent your data
- Create custom extension only as last resort
Challenge 2: Handling Custom Line Items
Your company has unique line items not in standard taxonomy.
Solution:
- First, try very hard to find a standard element that fits
- If truly necessary, create a custom extension element
- Follow proper naming conventions: [namespace]_[ElementName]
- Document why standard taxonomy was insufficient
- Be aware regulators scrutinize custom extensions
Challenge 3: Complex Calculations
Multi-level calculations that must validate correctly.
Solution:
- Map out calculation hierarchy before tagging
- Use calculation linkbase to define relationships
- Test calculations at each level
- Common calculation checks:
- Total Assets = Total Liabilities + Equity
- Revenue – Expenses = Net Income
- Operating Income + Non-operating items = Income Before Tax
Challenge 4: Dimensional Reporting
Segment information, geographic breakdown, product lines.
Solution:
- Use XBRL dimensions (axis and members)
- Define explicit members for each segment
- Create contexts for each dimensional combination
- Example: RevenueFromContractWithCustomerTextBlock [Segment=North America]
Challenge 5: Text Blocks and Footnotes
Converting narrative disclosures to XBRL.
Solution:
- Use TextBlock elements for narrative sections
- Tag individual disclosures appropriately
- Escape special characters in XML
- Consider inline XBRL for easier footnote handling
- Keep formatting simple to avoid rendering issues
Challenge 6: Comparative Period Data
Including prior year comparisons.
Solution:
- Create separate contexts for each period
- Use consistent tagging across periods
- Verify comparative data matches prior filings
- Document any restatements or reclassifications
Best Practices for XBRL Conversion
Start early – Don’t wait until filing deadline approaches. XBRL conversion takes time, especially first time.
Understand the taxonomy – Spend time learning the taxonomy structure relevant to your industry and reporting framework.
Be consistent – Use the same tags for the same concepts across periods. This enables meaningful comparisons.
Document your choices – Keep notes on why you chose specific tags, especially for ambiguous items.
Validate thoroughly – Run all validation checks multiple times. Fix errors before filing.
Review the rendering – Always check how your XBRL displays to ensure it’s readable and accurate.
Learn from others – Review filings from similar companies to see how they handle similar items.
Keep current – Taxonomies update annually. Make sure you’re using the correct version.
Test before filing – Use test/staging filing systems before submitting officially.
Maintain version control – Keep copies of all XBRL filings and related documents.
XBRL Validation Checklist
Before submitting your XBRL filing, verify:
✓ Taxonomy version is correct – Using the required taxonomy for the filing period
✓ All required elements present – Entity information, financial statements, required disclosures
✓ Calculations validate – All arithmetic relationships are correct
✓ Contexts are complete – All facts have proper context with dates and entity info
✓ Units are defined – Currency and other units properly specified
✓ No duplicate facts – Same fact not reported twice with identical context
✓ Custom extensions documented – If used, properly justified and named
✓ Labels are meaningful – Human-readable labels make sense
✓ Rendering displays correctly – Visual presentation matches intent
✓ File size reasonable – Not unnecessarily large due to inefficient structuring
✓ Encoding is correct – UTF-8 encoding for special characters
✓ Schema references valid – Links to taxonomy files work
✓ Regulatory rules met – Compliance with specific regulator requirements (SEC, HMRC, etc.)
Cost Comparison: Different Conversion Methods
DIY with Free Tools (Arelle)
- Cost: $0
- Time investment: High (20-40 hours first time, 10-15 hours recurring)
- Best for: Technical users, very small companies, learning XBRL
Excel Add-ins
- Cost: $500-$2,000/year
- Time investment: Medium (10-20 hours first time, 5-10 hours recurring)
- Best for: Excel-comfortable users, small to medium companies
XBRL Software
- Cost: $2,000-$50,000/year depending on solution
- Time investment: Medium (15-25 hours first time, 3-8 hours recurring)
- Best for: Regular filers, medium to large companies, teams
Online Services
- Cost: $500-$2,000 per filing
- Time investment: Low (2-5 hours for review and feedback)
- Best for: Occasional filers, small companies, those wanting support
Professional Services
- Cost: $1,500-$10,000+ per filing
- Time investment: Minimal (1-3 hours for providing data and review)
- Best for: Complex filings, first-time filers, companies without expertise
Resources for Learning More
Official XBRL Resources:
- XBRL International: xbrl.org
- US GAAP Taxonomy: fasb.org/xbrl
- IFRS Taxonomy: ifrs.org/issued-standards/xbrl-taxonomies
- SEC XBRL Information: sec.gov/structureddata
Regulatory Guidance:
- SEC EDGAR Filer Manual
- HMRC XBRL Requirements (UK)
- ESMA ESEF Requirements (Europe)
- Your country’s securities regulator website
Technical Documentation:
- XBRL 2.1 Specification
- Dimensions 1.0 Specification
- Inline XBRL Specification
- Formula Specification
Training and Certification:
- XBRL International offers certification programs
- Many software vendors offer training
- Online courses on XBRL fundamentals
- Industry conferences and webinars
Simplify Your XBRL Conversion Process
Converting financial statements to XBRL format doesn’t have to be overwhelming. Whether you choose software tools, coding solutions, online services, or professional help, the key is finding the approach that matches your technical expertise, budget, and filing frequency.
For most companies, starting with a structured Excel template makes the process much smoother. If you need to convert your financial statements from PDF format to Excel first, Your Bank Statement Converter can help you extract clean, structured data quickly. Once your data is in Excel, you can easily map it to XBRL tags using any of the methods described in this guide.
Remember, XBRL compliance is not just a regulatory requirement—it’s an opportunity to improve your financial data management, enhance transparency with stakeholders, and streamline your reporting processes.
Start with the method that feels most comfortable, and don’t hesitate to seek professional help for your first filing. With each conversion, the process becomes faster and easier as you build expertise and establish efficient workflows.
Ready to begin your XBRL journey? Choose the method that best fits your needs and take the first step toward compliant, structured financial reporting.


