If you're using Java and it needs to be embedded - look at JavaDB. It's embedded in the JVM, so if you're running a newer version of Java (7 or 8), it's already there. It's basically a rebranded version of Apache Derby, so if it works with Derby, it works with JavaDB. You can easily work in an embedded environment, or expand all the way up to a client/server implementation.
You also have similar capabilities to a larger SQL-based database (schemas, roles, triggers, indexes, constraints, sequences, etc.), so you can easily grow up to one of them as needs expand (although Derby can handle several GB of data).
Another thing to consider is that since you're dealing with financials (billing/auditing), data integrity is of utmost concern. For that reason alone I'd limit what I'm looking at to something that enforces data types, referential integrity, and permissions.