Add a new field called, e.g, queryableStatus that is a list of strings. Then pre-compute your query logic so that you only need an equality filter.
E.g, when saving the entity (warning: pseudocode ahead):
if status in ['PAID', 'PARTIALLY_PAID']:
invoice.queryableStatus.append('PAID_OR_PARTIALLY_PAID')
# you can have all sorts of logic combinations and tags appended, if you need them
invoice.save()
Then. when you query, you can use an equality:
ofy.query(Invoice.class).filter("status =", ['PAID_OR_PARTIALLY_PAID']).limit(100).list()
This will let the cursor work as expected.
Of course, you'll have to one-time update all your existing invoices. And you'll need to one-time update all your existing invoices whenever your QueryableStatus logic changes.