Hmm, I don't have any experience working with services, that's an aspect of Blesta I don't use.
I have no issues creating an invoice and adding line items though. The problem could be that you're nesting lists in the dictionary. The API wrapper expects you to nest dictionaries within dictionaries, for example:
value_dict = {'vars': {
'client_id': 12,
'date_billed': '2015-07-13 06:24:27 UTC',
'date_due': '2015-07-13 06:24:27 UTC',
'status': 'active',
'currency': 'AUD', # ISO 4217 3-character currency code
'lines': {
'0': {
'description': 'Test line item',
'qty': '1',
'amount': '12',
'tax': 'true'
}},
}}
r = blesta.api().call(verb='post', classname='invoices', method='add', value_dict=value_dict)