Skip to content

Finance Module - Document Management

Overview

The Finance module provides document management capabilities for accounting, financial reporting, and compliance. This guide covers document handling for two key Finance entities: Journal Entries and Chart of Accounts.

Finance Document Capabilities:

  • Journal entry supporting documents and receipts
  • Account policy and procedure documentation
  • Bank statements and reconciliation documents
  • Audit trail and compliance documentation
  • Approval workflows and authorization documents
  • Tax and regulatory filings

Supported Entities

The Finance module supports document management for these entities:

EntityPurposeCommon Document TypesMax File Size
Journal EntryTransaction documentationReceipts, invoices, bank statements, approvals50 MB
Chart of AccountAccount documentationPolicies, procedures, compliance documents50 MB

Journal Entry Documents

Overview

Journal Entry documents include receipts, invoices, supporting documents, bank statements, approval documents, reconciliation reports, and audit trail documentation. These documents provide proof and justification for accounting transactions and support financial audits.

Endpoint: /api/v1/finance/journal-entries/{journalEntryId}/documents

Supported Tags

TagPurposeExample Use Case
receiptExpense receiptsPurchase receipts, payment receipts
invoiceInvoice documentsVendor invoices, supplier invoices
supporting_documentSupporting documentationContracts, agreements, other proof
bank_statementBank statementsBank transaction statements
approvalApproval documentsManagement approvals, authorizations
attachmentGeneral attachmentsMiscellaneous supporting files
proofProof documentsTransaction proof, payment proof
reconciliationReconciliation documentsBank reconciliation reports
audit_trailAudit documentationAudit supporting documents

Common Scenarios

Scenario 1: Expense Journal Entry

Document expense transaction with receipt:

bash
# Upload expense receipt
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10001/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@expense_receipt.pdf" \
  -F "type=receipt" \
  -F "tags[]=receipt" \
  -F "tags[]=proof" \
  -F "name=Office Supplies Receipt - Staples" \
  -F "description=Office supplies purchase for Q1" \
  -F "is_public=false" \
  -F "is_sensitive=true"

Scenario 2: Vendor Invoice Payment

Document invoice payment with supporting documents:

bash
# Upload vendor invoice
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10002/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@vendor_invoice.pdf" \
  -F "type=invoice" \
  -F "tags[]=invoice" \
  -F "tags[]=supporting_document" \
  -F "name=Vendor Invoice #INV-12345" \
  -F "description=Software license annual renewal" \
  -F "is_public=false" \
  -F "is_sensitive=true"

# Upload payment approval
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10002/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@payment_approval.pdf" \
  -F "type=form" \
  -F "tags[]=approval" \
  -F "name=Payment Approval - Manager Signature" \
  -F "description=CFO approval for payment" \
  -F "is_public=false" \
  -F "is_sensitive=true"

# Upload bank statement showing payment
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10002/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@bank_statement.pdf" \
  -F "type=financial" \
  -F "tags[]=bank_statement" \
  -F "tags[]=proof" \
  -F "name=Bank Statement - Wire Transfer Confirmation" \
  -F "is_public=false" \
  -F "is_sensitive=true"

Scenario 3: Accrual Adjustment

Document accrual entry with supporting calculation:

bash
# Upload accrual calculation worksheet
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10003/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@accrual_calculation.xlsx" \
  -F "type=report" \
  -F "tags[]=supporting_document" \
  -F "tags[]=attachment" \
  -F "name=Accrual Calculation - Q4 2024" \
  -F "description=Detailed accrual calculation worksheet" \
  -F "is_public=false" \
  -F "is_sensitive=true"

# Upload supporting contract
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10003/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@service_contract.pdf" \
  -F "type=contract" \
  -F "tags[]=supporting_document" \
  -F "name=Service Contract - Accrual Basis" \
  -F "description=Contract showing accrual requirement" \
  -F "is_public=false" \
  -F "is_sensitive=true"

Scenario 4: Bank Reconciliation

Document bank reconciliation with statements and adjustments:

bash
# Upload bank statement
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10004/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@bank_statement_december.pdf" \
  -F "type=financial" \
  -F "tags[]=bank_statement" \
  -F "tags[]=reconciliation" \
  -F "name=Bank Statement - December 2024" \
  -F "is_public=false" \
  -F "is_sensitive=true"

# Upload reconciliation report
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10004/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@reconciliation_report.pdf" \
  -F "type=report" \
  -F "tags[]=reconciliation" \
  -F "tags[]=audit_trail" \
  -F "name=Bank Reconciliation Report - December 2024" \
  -F "description=Monthly bank reconciliation with adjustments" \
  -F "is_public=false" \
  -F "is_sensitive=true"

Scenario 5: Year-End Adjustments

Document year-end closing entries:

bash
# Upload depreciation schedule
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10005/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@depreciation_schedule.xlsx" \
  -F "type=report" \
  -F "tags[]=supporting_document" \
  -F "tags[]=audit_trail" \
  -F "name=Depreciation Schedule 2024" \
  -F "description=Annual depreciation calculation" \
  -F "is_public=false" \
  -F "is_sensitive=true"

# Upload auditor approval
curl -X POST https://api.crm.test/api/v1/finance/journal-entries/10005/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@auditor_approval.pdf" \
  -F "type=form" \
  -F "tags[]=approval" \
  -F "tags[]=audit_trail" \
  -F "name=External Auditor Approval" \
  -F "description=Auditor sign-off on year-end adjustments" \
  -F "is_public=false" \
  -F "is_sensitive=true"

Validation Rules

File Requirements:

  • Maximum size: 50 MB
  • All file types accepted (PDFs, Excel files, images for receipts)

Required Fields:

  • file - The document file
  • type - Document type

Optional Fields:

  • tags - Array of tags (validated against allowed list)
  • name, description
  • is_public - Default: false (all finance documents should be private)
  • is_sensitive - Recommended: true for all financial documents
  • expires_at - Optional expiration date

Chart of Account Documents

Overview

Chart of Account documents include account policies, procedures, compliance documents, audit guidelines, regulatory documentation, and reference materials. These documents define accounting policies and ensure compliance with accounting standards.

Endpoint: /api/v1/finance/chart-of-accounts/{chartOfAccountId}/documents

Supported Tags

TagPurposeExample Use Case
policyAccounting policiesAccount-specific policies
documentationGeneral documentationAccount usage guidelines
complianceCompliance documentsRegulatory compliance docs
auditAudit documentationAudit guidelines, checklists
procedureAccounting proceduresPosting procedures, workflows
guidelineUsage guidelinesAccount usage instructions
referenceReference materialsGAAP references, standards
regulationRegulatory documentsTax regulations, legal requirements

Common Scenarios

Scenario 1: Account Setup Documentation

Document new account setup with policies:

bash
# Upload account policy document
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20001/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@account_policy.pdf" \
  -F "type=policy" \
  -F "tags[]=policy" \
  -F "tags[]=documentation" \
  -F "name=Account 1000 - Cash Policy" \
  -F "description=Cash account usage policy and procedures" \
  -F "is_public=false" \
  -F "is_sensitive=true"

# Upload account posting procedure
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20001/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@posting_procedure.pdf" \
  -F "type=procedure" \
  -F "tags[]=procedure" \
  -F "tags[]=guideline" \
  -F "name=Cash Posting Procedures" \
  -F "description=Step-by-step posting guidelines for cash account" \
  -F "is_public=false"

Scenario 2: Compliance Documentation

Upload compliance and regulatory documents:

bash
# Upload GAAP reference
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20002/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@gaap_reference.pdf" \
  -F "type=policy" \
  -F "tags[]=reference" \
  -F "tags[]=compliance" \
  -F "name=GAAP Revenue Recognition Guidance" \
  -F "description=ASC 606 revenue recognition standards" \
  -F "is_public=false"

# Upload tax regulation document
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20002/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@tax_regulation.pdf" \
  -F "type=legal" \
  -F "tags[]=regulation" \
  -F "tags[]=compliance" \
  -F "name=Tax Treatment - Revenue Account" \
  -F "description=IRS guidance on revenue account treatment" \
  -F "is_public=false" \
  -F "is_sensitive=true"

Scenario 3: Audit Documentation

Upload audit-related documents:

bash
# Upload audit checklist
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20003/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@audit_checklist.pdf" \
  -F "type=procedure" \
  -F "tags[]=audit" \
  -F "tags[]=guideline" \
  -F "name=Account Audit Checklist" \
  -F "description=Annual audit verification procedures" \
  -F "is_public=false"

# Upload compliance certification
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20003/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@compliance_cert.pdf" \
  -F "type=certificate" \
  -F "tags[]=compliance" \
  -F "tags[]=audit" \
  -F "name=SOX Compliance Certification" \
  -F "description=Sarbanes-Oxley compliance for account controls" \
  -F "is_public=false" \
  -F "is_sensitive=true" \
  -F "expires_at=2025-12-31T23:59:59Z"

Scenario 4: Account Usage Guidelines

Document account-specific instructions:

bash
# Upload usage guidelines
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20004/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@usage_guidelines.pdf" \
  -F "type=procedure" \
  -F "tags[]=guideline" \
  -F "tags[]=documentation" \
  -F "name=Expense Account Usage Guidelines" \
  -F "description=When and how to use account 5000 - Travel Expenses" \
  -F "is_public=false"

# Upload approval workflow
curl -X POST https://api.crm.test/api/v1/finance/chart-of-accounts/20004/documents \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@approval_workflow.pdf" \
  -F "type=procedure" \
  -F "tags[]=procedure" \
  -F "tags[]=guideline" \
  -F "name=Approval Workflow - Travel Expenses" \
  -F "description=Required approvals for travel expense postings" \
  -F "is_public=false"

Validation Rules

File Requirements:

  • Maximum size: 50 MB
  • All file types accepted (typically PDFs, Word documents)

Required Fields:

  • file, type

Optional Fields:

  • tags, name, description
  • is_public - Default: false (all CoA documents should be private)
  • is_sensitive - Recommended: true for compliance and audit documents
  • expires_at - For time-limited policies or certifications

Cross-Entity Workflows

Journal Entry Audit Trail

Complete audit documentation workflow:

bash
# 1. Upload supporting documents when creating journal entry
POST /api/v1/finance/journal-entries/10001/documents
{
  "file": <receipt.pdf>,
  "tags": ["receipt", "proof"]
}

# 2. Upload approval document after review
POST /api/v1/finance/journal-entries/10001/documents
{
  "file": <approval.pdf>,
  "tags": ["approval"]
}

# 3. Upload reconciliation document at month-end
POST /api/v1/finance/journal-entries/10001/documents
{
  "file": <reconciliation.pdf>,
  "tags": ["reconciliation", "audit_trail"]
}

# 4. Retrieve complete audit trail
GET /api/v1/finance/journal-entries/10001/documents

Account Policy Updates

Manage policy version control:

bash
# 1. Upload new policy version
POST /api/v1/finance/chart-of-accounts/20001/documents
{
  "file": <policy_v2.pdf>,
  "tags": ["policy", "documentation"],
  "name": "Account Policy v2.0 - Effective 2025"
}
# Note: Old policy automatically archived

# 2. Retrieve policy history
GET /api/v1/finance/chart-of-accounts/20001/documents?tags=policy&include_archived=true

Best Practices

1. Journal Entry Documentation

Complete Documentation:

  • Upload supporting documents for every journal entry
  • Include receipts, invoices, or other proof
  • Document approval workflows
  • Maintain clear audit trail

Naming Conventions:

  • Include journal entry number in document names
  • Reference transaction date in descriptions
  • Use consistent tag combinations for similar transactions
  • Example: "JE-10001 - Expense Receipt - Office Supplies - 2025-01-15"

Required Documents:

  • Expense Entries: Receipt or invoice
  • Revenue Entries: Invoice, contract, or proof of delivery
  • Adjustments: Calculation worksheet, approval document
  • Transfers: Supporting documentation showing reason
  • Accruals: Contract or agreement showing accrual basis

2. Chart of Account Documentation

Policy Documentation:

  • Document usage policies for all accounts
  • Define posting procedures clearly
  • Include approval requirements
  • Update policies when standards change

Compliance:

  • Reference applicable accounting standards (GAAP, IFRS)
  • Document regulatory requirements
  • Upload audit guidelines and checklists
  • Set expiration dates for time-limited policies

Version Control:

  • Name policies with version numbers
  • Include effective dates in document names
  • Archive old versions (don't delete)
  • Maintain complete policy history

3. Audit Compliance

Audit Trail:

  • Tag all audit-related documents with audit_trail
  • Maintain complete documentation for financial audits
  • Upload external auditor correspondence
  • Document management approvals for significant transactions

SOX Compliance:

  • Document internal controls for financial accounts
  • Upload control testing documentation
  • Maintain evidence of control effectiveness
  • Set review dates for periodic control assessments

Document Retention:

  • Retain financial documents per regulatory requirements (typically 7 years)
  • Never hard-delete audit documentation
  • Archive vs delete based on retention policies
  • Mark retention period in document metadata

4. Security and Access Control

Mark All Documents as Sensitive:

  • All finance documents should be is_sensitive: true
  • Restrict access to finance team and auditors
  • Implement role-based access controls
  • Audit document access regularly

Data Protection:

  • Never make financial documents public
  • Encrypt sensitive financial data
  • Control download access
  • Track who accesses financial documents

Approval Workflows:

  • Document all approvals digitally
  • Upload signed approval forms
  • Track approval chain in metadata
  • Maintain approval authority documentation

5. Reconciliation and Review

Monthly Close:

  • Upload bank statements for reconciliation
  • Document reconciling items with supporting proof
  • Upload month-end adjustment documentation
  • Maintain complete close checklist with documents

Periodic Reviews:

  • Review account documentation quarterly
  • Update policies when accounting standards change
  • Verify compliance documentation is current
  • Check expiration dates on certifications

Troubleshooting

Common Issues

Problem: Journal entry rejected by auditor due to missing documentation

Solution:

  • Verify all required supporting documents uploaded
  • Check that documents include proper approval signatures
  • Ensure tags include audit_trail for audit compliance
  • Upload supplementary documentation as needed

Problem: Cannot find supporting documents for historical journal entries

Solution:

  • Use include_archived=true to see historical documents
  • Search by journal entry number in document names
  • Filter by date range using created_at timestamps
  • Check that documents weren't hard-deleted (should only be archived)

Problem: Policy document upload fails

Solution:

  • Check file size is under 50 MB
  • Verify file is not corrupted
  • Compress large policy manuals
  • Split multi-section policies into separate documents

Problem: Compliance document expired but still showing

Solution:

  • System doesn't automatically hide expired documents
  • Query documents and filter by expires_at client-side
  • Upload renewed compliance documents
  • Old documents automatically archived when replaced

API Reference

For complete API specifications:

  • OpenAPI Specification: /docs/openapi.yaml
  • Interactive Documentation: Scribe-generated API docs
  • Endpoint Group: Finance Module → Document Management

Compliance Notes

Accounting Standards:

  • Document compliance with GAAP or IFRS as applicable
  • Reference specific ASC codifications in account policies
  • Upload relevant standard interpretations

Tax Compliance:

  • Maintain documentation supporting tax positions
  • Upload IRS or tax authority guidance
  • Document transfer pricing policies
  • Retain records per tax law requirements

SOX Compliance (for public companies):

  • Document internal controls over financial reporting
  • Upload control testing evidence
  • Maintain segregation of duties documentation
  • Document IT general controls

Audit Requirements:

  • Provide complete documentation to external auditors
  • Maintain audit trails for all financial transactions
  • Document significant accounting judgments
  • Upload management representation letters

Documentation for SynthesQ CRM/ERP Platform