Skip to main content

Overview

Access comprehensive financial reporting and management tools through the Royalti.io API. View real-time earnings calculations, track expenses and revenue, manage payments, and maintain accurate accounting records across your music catalog.

Key Features

  • Real-time earnings - View current earnings and payment status for all users
  • Automatic calculations - Earnings updated automatically when royalties upload or splits change
  • Expense tracking - Record costs at any level (user, artist, product, asset, general)
  • Revenue management - Track additional income sources beyond streaming royalties
  • Transaction history - Complete audit trail of all financial activity
  • Flexible reporting - Monthly breakdowns, summaries, and custom date ranges
  • Multi-currency support - Handle international transactions with automatic USD conversion

Prerequisites

Required Data

Before accessing financial features, ensure you have:
  • User accounts - Collaborators with earnings
  • Configured splits - Revenue distribution defined with percentages
  • Royalty data uploaded - Revenue data processed from DSPs/distributors
  • Payment settings - Bank accounts or payment methods configured (for payments)

Authentication

All financial endpoints require authentication with a Bearer token.

Quick Start: Complete Financial Cycle

1

Check User Earnings

View earnings breakdown for a specific user:
2

Track an Expense

Record costs associated with a product release:
3

Record Additional Revenue

Track income beyond streaming royalties:
4

Review Updated Balances

Verify accounting reflects all transactions:

Viewing Earnings & Accounting

Get User Accounting Statistics

Retrieve comprehensive earnings data for a specific user:
Response Fields:
  • Royalty_Share - Gross earnings from all splits
  • paid - Total amount paid to user
  • due - Outstanding balance (Royalty_Share - paid)
Query Parameters:
  • include=royalty - Include detailed royalty breakdown
  • forceRefresh=true - Recalculate from source data
Example Response:

Get Detailed Royalty Breakdown

Include royalty summary for streams, downloads, and rates:

Current Balances for All Users

Get list of all users with their outstanding balances:
Query Parameters:
  • q - Search by user name
  • page - Page number (default: 1)
  • size - Page size (default: 10, max: 100)
  • sort - Sort field: gross, net, paid, due (default: due)
  • order - Sort order: ASC or DESC (default: DESC)
Response Fields per User:

Total Outstanding for Workspace

Get aggregate due amount across all users:
Response Example:

Transaction History

Get paginated list of all financial transactions:
Query Parameters:
  • page - Page number (default: 1)
  • size - Items per page (default: 10, max: 100)
  • start - Start date filter (ISO format: YYYY-MM-DD)
  • end - End date filter (ISO format: YYYY-MM-DD)
Transaction Types:
  • payment - Payment made to user
  • revenue - Revenue received
  • expense - Expense recorded
  • paymentRequest - Payment request created
Filter by Date Range:

Transaction Summary

Get aggregated totals across all transaction types:
Response Example:
The summary provides all-time totals for the workspace. Use the monthly breakdown endpoint for time-series analysis.

Monthly Transaction Breakdown

Analyze transactions by month with type breakdown:
Query Parameters:
  • start - Start date (ISO format: YYYY-MM-DD)
  • stop - End date (ISO format: YYYY-MM-DD)
Response Format:

Expense Management

Track costs associated with releases, artists, and operations. Expenses reduce user earnings in accounting calculations.

Flexible Expense Association

Expenses can be associated with different types of entities in your catalog: How It Works:
  • Specify the type field to indicate the entity type
  • Provide the id field with the entity’s UUID
  • For general expenses, omit the id field
This flexible system allows you to:
  • Track costs at any level of granularity
  • Generate expense reports by artist, product, or asset
  • Allocate expenses to the appropriate earnings calculations

Create Product Expense

Create Artist Expense

Create Asset Expense

Track costs for individual tracks or recordings:

Create General Expense

List Expenses

Expense Splits

Distribute expenses among multiple users:
Expense splits reduce user earnings in accounting calculations. The total share should equal 100.

Bulk Expense Creation

Create multiple expenses in a single request:

Revenue Management

Track additional income sources beyond streaming royalties.

Create Sync Licensing Revenue

Create Merchandise Revenue

List Revenue

Bulk Revenue Creation

Create multiple revenue records in a single request:

Accounting Operations

When to Refresh Accounting Data

Accounting data is automatically calculated when:
  • Royalty files are uploaded and processed
  • Splits are created or modified
  • Payments are recorded
  • Expenses or revenue entries are created
You may want to manually refresh when:
  • You’ve made multiple split changes
  • You need guaranteed latest data
  • You suspect calculations are out of sync

Refresh for Specific User

Request updated calculations for a single user:
Query Parameters:
  • forceRefresh=true - Force recalculation even if data is recent
Response:

Refresh All Users in Workspace

Request recalculation for all users:
Query Parameters:
  • batchSize - Users per batch (default: 100, min: 1, max: 500)
Response:
For workspaces with many users (100+), recalculation is processed in batches to ensure reliability. Check the status endpoint to monitor progress.

Immediate Refresh (Small Workspaces)

For small workspaces with fewer than 100 users, you can use the immediate refresh:
Response:
This endpoint processes all users immediately. For workspaces with 100+ users, use the batched recalculate endpoint instead to avoid timeouts.

Check Recalculation Status

Monitor the progress of recalculation operations:
Job States:
  • waiting - Job queued, not yet started
  • active - Currently processing
  • completed - Successfully finished
  • failed - Encountered an error
  • delayed - Temporarily delayed, will retry
Response Example:

Queue Overview

View overall queue status without specifying a job ID:

Statistics Pipeline

Refresh all statistics and accounting data in the correct order:
Response:
This endpoint ensures all statistics are recalculated in the correct dependency order. Use this after bulk data uploads or major catalog changes.

Multi-Currency Handling

All financial records support multi-currency transactions with automatic USD conversion:
Example: Euro Payment:
The system uses amountUSD for all accounting calculations to ensure consistency across currencies.

Best Practices

Data Accuracy

  1. Trust automatic calculations - The system updates accounting when royalties upload or splits change
  2. Use forceRefresh sparingly - Only when you need guaranteed fresh data
  3. Validate splits first - Ensure splits total 100% before expecting accurate earnings
  4. Regular reconciliation - Compare accounting data with actual payments monthly
  5. Verify amounts - Always double-check USD conversion rates
  6. Detailed memos - Include transaction context for audit trails

Performance Optimization

  1. Use default cached data - Faster response times for most queries
  2. Batch operations - Use bulk endpoints for multiple records
  3. Monitor queue status - Track long-running recalculation operations
  4. Paginate results - Use reasonable page sizes (10-50 items)
  5. Async processing - Don’t wait for recalculation to complete

Reporting Workflows

  1. Use date filters - Filter transactions by specific periods for reports
  2. Export for analysis - Use transaction endpoints for external reporting tools
  3. Monitor monthly trends - Track revenue and payment patterns over time
  4. Check user balances - Regularly review who is owed payment
  5. Weekly reviews - Check user balances and pending items
  6. Monthly cycles - Establish consistent payment schedules
  7. Quarterly audits - Reconcile all transactions against external records

Error Handling

Always implement robust error handling for financial operations:

Troubleshooting

Checklist:
  • Verify split configurations are active
  • Check split date ranges include relevant periods
  • Review conditional split logic (territory, DSP-specific splits)
  • Ensure royalty data uploaded successfully
  • Check for expenses reducing earnings
Solutions:
  1. Check user stats: GET /accounting/{userId}/stats
  2. Force refresh: GET /accounting/{userId}/stats?forceRefresh=true
  3. Verify splits: GET /split?userId={userId}
  4. Check royalty data: GET /royalty?userId={userId}
  5. Review expenses: GET /expense?userId={userId}
Possible causes:
  • Recent split changes not yet reflected
  • Royalty file just uploaded
  • Manual refresh needed
  • Cache delay
Solutions:
  1. Use forceRefresh=true parameter
  2. Check recent uploads: GET /file?status=completed
  3. Verify split changes saved: GET /split/{splitId}
  4. Request recalculation: POST /accounting/users/{userId}/recalculate
Check job status:
Common causes:
  • Invalid split data (doesn’t total 100%)
  • Missing royalty data
  • Database connection issues
  • Large dataset processing
Solutions:
  1. Check error details in job status
  2. Verify split configurations
  3. Retry with smaller batch size
  4. Contact support if error persists
Expected Processing Times:
  • Small workspaces (<100 users): 1-2 minutes
  • Medium workspaces (100-1000 users): 2-10 minutes
  • Large workspaces (1000+ users): 10-30 minutes
Checklist:
  • User has at least one active split
  • Split date ranges include current period
  • Asset/Product has royalty data uploaded
  • Split percentages are valid (0-100)
  • User actually has positive balance
Verify:
  1. Check user splits: GET /split?userId={userId}
  2. Check user stats: GET /accounting/{userId}/stats
  3. Verify user exists: GET /user/{userId}
  4. Force recalculation if needed
Reconciliation steps:
If mismatched:
  1. Check for deleted payments
  2. Verify all payments recorded correctly
  3. Review expenses and revenue entries
  4. Force full workspace refresh
Common Mistakes:
  • Wrong conversion direction (USD/EUR vs EUR/USD)
  • Missing conversionRate
  • amountUSD doesn’t match calculation
Correct Example:
Checklist:
  • Expense split configured correctly
  • User IDs in split are valid
  • Share percentages total 100
  • Expense transaction date is within accounting period
Solutions:
  1. Verify expense: GET /expense/{id}
  2. Check split configuration in expense record
  3. Force user recalculation: POST /accounting/users/{userId}/recalculate
  4. Review accounting stats: GET /accounting/{userId}/stats?forceRefresh=true
Checklist:
  • Revenue splits configured correctly
  • User IDs in splits are valid
  • Share percentages total 100
  • Revenue amount is positive
Solutions:
  1. Verify revenue: GET /revenue/{id}
  2. Check split configuration
  3. Force user recalculation: POST /accounting/users/{userId}/recalculate
  4. Review accounting stats: GET /accounting/{userId}/stats?forceRefresh=true

API Reference

For complete endpoint documentation, see: Accounting & Earnings: Refresh Operations: Expenses: Revenue: Related Guides:

Support

Need help with financial management?