RIVET syncs billing data to Xero automatically when you approve pay applications. This guide explains what syncs, how it works, and how to troubleshoot issues.
Pro Feature
What Syncs to Xero
Sales Invoices
Approved pay applications create invoices in Xero:
- Contact linked to GC or project owner
- Invoice number from pay app number
- Line items with revenue accounts
- Net amount (excluding retainage)
- Tracking categories applied
Manual Journals
Retainage entries are created as manual journals:
- Retainage accrual when billing
- Retainage release when collected
- Proper double-entry accounting
Contacts
GCs and owners sync as Xero contacts:
- Company name
- Contact person
- Address and phone
One-Way Sync
When Sync Happens
| RIVET Event | Xero Result |
|---|---|
| Pay app approved | Invoice created + retainage journal |
| Payment recorded | Payment allocated to invoice |
| Retainage released | Release journal entry |
| New GC added | Contact created (if auto-create) |
Invoice Format in Xero
Header
- Contact: GC or owner name
- Invoice #: Pay app number
- Date: Period end date
- Due Date: Based on payment terms
- Reference: Project name
Line Items
Configure how lines appear:
- Single line - Total billing as one line
- Itemized - Line per SOV item billed
Tracking Categories
If configured, tracking appears on each line for job cost reporting.
Retainage Accounting
When Billing (Manual Journal)
| Account | Debit | Credit |
|---|---|---|
| Retainage Receivable | $X | - |
| Sales Revenue | - | $X |
When Released (Manual Journal)
| Account | Debit | Credit |
|---|---|---|
| Accounts Receivable | $X | - |
| Retainage Receivable | - | $X |
Automatic Entries
Sync Status Dashboard
Access the centralized sync dashboard for an overview of all integration activity:
- Go to Integrations in the sidebar
- Click Sync Status to view the dashboard
- See recent sync activity, pending items, and any errors
The dashboard displays cards for each integration showing:
- Last Sync - When data was last synchronized
- Pending Items - Number of items waiting to sync
- Errors - Any sync failures requiring attention
- Connection Health - Overall integration status
Quick Access
Checking Pay App Sync Status
View sync status for each pay application:
- Open the pay application in RIVET
- Find the Xero Sync indicator
- Click for details and linked transactions
Status Values
| Status | Meaning |
|---|---|
| Synced | Successfully in Xero |
| Pending | Queued for sync |
| Failed | Error, needs attention |
| Not Synced | Won't sync (draft, etc.) |
Manual Sync
If automatic sync fails:
- Open the pay application
- Click Sync to Xero
- Review any error messages
- Fix issues and retry
Conflict Resolution
When data exists in both systems with differences, RIVET helps you resolve conflicts:
Types of Conflicts
- Contact mismatch - Customer name differs between systems
- Invoice exists - Invoice number already in Xero
- Amount difference - Invoice totals don't match
Resolution Options
- Keep RIVET - Overwrite Xero with RIVET data
- Keep Xero - Skip sync and keep Xero version
- Link existing - Connect RIVET record to existing Xero record
Review Carefully
Handling Errors
Common Errors
| Error | Solution |
|---|---|
| Account not found | Check account mapping in settings |
| Contact not found | Create contact or update mapping |
| Token expired | Reconnect Xero integration |
| Duplicate invoice | Check if already exists in Xero |
| Tracking category issue | Verify tracking category exists |
Sync Settings
Configure sync in Settings → Integrations → Xero:
Options
- Auto-sync - Toggle automatic syncing
- Invoice format - Single or itemized lines
- Contact creation - Auto-create or manual
- Tracking - Category to use for projects
Reconciliation
Periodically verify RIVET and Xero match:
- Run sync report in RIVET
- Compare to Xero Aged Receivables
- Check retainage balance against asset account
- Investigate and resolve discrepancies
Best Practices
Monthly Review
Use Tracking
Preserve Links
Need Help?
If you're having trouble with Xero sync, contact our support team at support@slpwlk.io.