I have a sample loan usecase, where I have two states:

* Invoice State, and
* Loan State.

Loan State is created by passing Invoice State as input.

[![enter image description here](https://i.stack.imgur.com/MvPRB.png)](https://i.stack.imgur.com/MvPRB.png)

Now as Corda follows UTXO model, when I do the default vault query, the Invoice state is not showed as it's consumed now. 

To solve this, there are two possible ways: 

1. Either, I query on all states i.e consumed and unconsumed.
2. Or, I
can maintain a status at Invoice state and mark the status to
something as Invoice paid after consuming it to create Loan State *(So this is more like evolving state, something like bitcoin where balance is always getting transferred.)*. 
Something like this:

[![enter image description here](https://i.stack.imgur.com/oNXQW.png)](https://i.stack.imgur.com/oNXQW.png)

Can anybody please recommend what would be the correct architecture decision?