Package: invoicexpress-api
Thin Python 3 wrapper for the InvoiceXpress REST API. Currently rough and incomplete.API docs at:https://developers.invoicexpress.com/docs/versions/2.0.0/Included APIsAPIDone inInvoicesv0.1.0Estimatesto-doGuidesto-doPurchase Ordersto-doClientsv0.1.0Itemsto-doSequencesto-doTaxesto-doAccountsto-doSAF-Tto-doInstallationAutomatic install via pip:$pipinstallinvoicexpress-apiUsageSetup>>>importinvoicexpress_apiasie>>>c=ie.Client('my_account_name','my_api_key')Create an invoice>>>invoice_type=ie.invoices.Types.INVOICE_RECEIPT>>>invoice_data={"invoice": {
        "date": "17/04/2018",
        "due_date": "17/04/2018",
        "client": {
                "name": "John Doe",
                "code": "XYZ123"
        },
        "items": [
                {
                  "name": "SRV1",
                  "description": "Service 1",
                  "unit_price": 10.0,
                  "quantity": 5.0,
                  "tax": {
                          "name": "IVA23"
                          }
                }
          ]
   }
}>>>ie.invoices.create(c,invoice_data,invoice_type){
    'invoice_receipt':{
        'id':12345678,
        'status':'draft',
        'archived':False,
        'type':'InvoiceReceipt',
        'sequence_number':'rascunho',
        'date':'17/04/2018',
        'due_date':'17/04/2018',
        'reference':None,
        'observations':None,
        'retention':None,
        'permalink':'https://www.app.invoicexpress.com/documents/113a4152...',
        'sum':50.0,
        'discount':0.0,
        'before_taxes':50.0,
        'taxes':11.5,
        'total':61.5,
        'currency':'Euro',
        'client':{
            'id':1234567,
            'name':'John Doe',
            'code':'XYZ123'
        },
        'items':[
            {
                'name':'SRV1',
                'description':'Service 1',
                'unit_price':'10.0',
                'unit':None,
                'quantity':'5.0',
                'tax':{
                    'id':123456,
                    'name':'IVA23',
                    'value':23.0
                },
                'discount':0.0,
                'subtotal':50.0,
                'tax_amount':11.5,
                'discount_amount':0.0,
                'total':61.5
            }
        ]
    }
}Fetch and update an invoice>>>inv=ie.invoices.get(c,12345678,invoice_type)>>>inv[invoice_type]['items'][0]['unit_price']=150>>>ie.invoices.update(c,12345678,inv,invoice_type)>>>ie.invoices.get(c,12345678,invoice_type){
    'invoice_receipt':{
        'id':12345678,
        'status':'settled',
        'archived':False,
        'type':'InvoiceReceipt',
        'sequence_number':'1/A',
        'inverted_sequence_number':'A/1',
        'sequence_id':123456,
        'date':'17/04/2018',
        'due_date':'17/04/2018',
        'reference':None,
        'observations':None,
        'retention':None,
        'permalink':'https://www.app.invoicexpress.com/documents/113a4152...',
        'saft_hash':'iyuX',
        'sum':750.0,
        'discount':0.0,
        'before_taxes':750.0,
        'taxes':172.5,
        'total':922.5,
        'currency':'Euro',
        'client':{
            'id':1234567,
            'name':'John Doe',
            'code':'XYZ123',
        },
        'items':[
            {
                'name':'SRV1',
                'description':'Service 1',
                'unit_price':'150.0',
                'unit':None,
                'quantity':'5.0',
                'tax':{
                    'id':123456,
                    'name':'IVA23',
                    'value':23.0
                },
                'discount':0.0,
                'subtotal':750.0,
                'tax_amount':172.5,
                'discount_amount':0.0,
                'total':922.5
            }
        ]
    }
}Set invoice state and send by e-mail>>>ie.invoices.change_state(c,12345678,ie.invoices.States.FINAL)>>>ie.invoices.send_email(c,12345678,'name@domain.tld','New invoice!',
                           'Hi John,\r\nHere is your invoice\r\nRegards,')LicenseMIT License. See theLICENSEfile for details.