Yes it is probably possible. I'm afraid there is as yet little or no documentation about the nBill database structure, and not a lot about development - what there is can be found in the development section of the documentation (
http://www.nbill.co.uk/help/). Of particular interest to you would be nBill events:
http://www.nbill.co.uk/help/index.php?page=events.html - you could probably use either the payment_received event or the income_created event to trigger publication of the entry.
The database structure should be mostly fairly self-explanatory, but briefly:
See the following posts about how clients are stored:
http://www.nbill.co.uk/forum-smf/index.php/topic,1829.msg7371.html#msg7371 and
http://www.nbill.co.uk/forum-smf/index.php/topic,1839.msg7406.html#msg7406Invoices (as well as quotes and credit notes) are stored in #__nbill_document and the individual line items that make up the total are stored in #__nbill_document_items.
Income records (as well as expenditure records) are stored in #__nbill_transaction and can be associated with an invoice via #__nbill_document_transaction (so you can tie up which income record is assoicated with which invoice - eg. in the income_created event).
All transactions that take place through an nBill payment gateway are assigned a gateway transaction id (g_tx_id or gateway_txn_id). If an invoice is paid online, the gateway transaction ID will be stored in the gateway_txn_id column on the #__nbill_document table (so you can tie up a transaction to an invoice in the payment_received event). A comma separated list of document (invoice) IDs is also stored in the document_ids column of the #__nbill_gateway_tx table, which is keyed on the gateway transaction ID.