How to Convert Financial Statements in XBRL Format [2025]

How to Convert Financial Statements in XBRL Format (1)

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:

  1. Upload your financial statements (Excel, Word, or PDF)
  2. The software helps you map data to appropriate XBRL tags
  3. Built-in validation checks for errors and compliance
  4. Generate XBRL files ready for submission
  5. Collaboration features for team review
  6. Automatic calculation validation
  7. 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:

  1. Install the Excel add-in from the provider
  2. Open your financial statements in Excel
  3. Select a cell containing financial data
  4. Click the add-in toolbar
  5. Choose the appropriate XBRL tag from the taxonomy browser
  6. Assign context (period, entity, currency)
  7. Repeat for all line items
  8. Export as XBRL instance document
  9. 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:

  1. Structure your Excel file with clear labels matching XBRL taxonomy elements
  2. Create a mapping sheet that links your Excel cell references to XBRL tags
  3. 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:

  1. Create account on the platform
  2. Upload your financial statements (PDF, Excel, or Word)
  3. Fill out company information form
  4. Service team maps data to XBRL tags
  5. You receive draft for review within 2-5 business days
  6. Provide feedback and request changes if needed
  7. Receive final validated XBRL files
  8. 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:

  1. Sign up for account (free trial often available)
  2. Select your taxonomy and filing type
  3. Upload financial documents
  4. Review auto-tagged elements
  5. Manually tag remaining items
  6. 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:

  1. Choose template matching your financial statements
  2. Import your data (copy-paste or upload)
  3. Software suggests appropriate tags
  4. Review and adjust as needed
  5. Run validation checks
  6. 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:

  1. Initial consultation to understand your needs
  2. You provide financial statements and filing requirements
  3. Service provider creates initial XBRL draft
  4. You review draft and provide feedback
  5. Provider makes revisions based on your input
  6. Final validation and quality checks
  7. Delivery of complete XBRL package
  8. Optional: Direct filing to SEC EDGAR or other regulator
  9. 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.

Share:

More Posts

Send Us A Message

Scroll to Top