We use CW and Sage 100. We invoice out of CW, and then we import the invoices into Sage 100 using a VI job. Since CW uses SQL, we created a SQL view to capture all of the invoicing data we wanted to import. VI reads the database directly using our view and imports the invoices into AR Inv Data Entry. We update the invoices in Sage 100, and then use Sage 100 for AR Aging and collections. We email the invoices from CW because we do not import all of the line detail into Sage 100 anymore because it can be a LOT of data. However, we used to import all of the detail and send the invoices from Sage 100 via paperless office. The only area we have not messed with because it really isn't painful enough for us to solve is marking the invoices in CW as paid. CW has some really nice utilities for mass updates to documents, so we simply mark invoices as paid in bulk once a month. The only reason this really matters is if you are allowing customers access to the customer portal in CW and they can see their invoices. They seem to get upset if their invoices are showing as unpaid, so we had to make them happy. Go figure, right? Customers are so picky.