def build_invoice(event, context):
    log.info('Getting customer config')
    customers = get_customer_config()

    for customer in customers:
        next_due = datetime.strptime(customer['next_payment_date'], '%m/%d/%Y')
        if not is_payment_due(datetime.now().date(), next_due.date()):
            log.info('No payment due for {} until {}'.format(
                customer['customer_email'], next_due.strftime('%m/%d/%Y')))
            continue

        invoice = Invoice({
            'merchant_info': {
                'email': '*****@*****.**',
                'first_name': 'FIRSTNAME',
                'last_name': 'LASTNAME'
            },
            'billing_info': [{
                'email': customer['customer_email']
            }],
            'items': [{
                'name': 'Hosting Plan',
                'quantity': 1,
                'unit_price': {
                    'currency': 'USD',
                    'value': float(customer['plan_rate'])
                }
            }]
        })

        if invoice.create():
            log.info("Invoice[%s] created successfully" % (invoice.id))
        else:
            log.info(invoice.error)

        if invoice.send():
            log.info("Invoice[%s] sent successfully" % (invoice.id))
        else:
            log.info(invoice.error)

        next_payment = set_next_payment_date(next_due, customer['bill_freq'])
        customer['next_payment_date'] = next_payment.strftime('%m/%d/%Y')

    log.info('Writing new customers file to S3')
    write_new_file(customers)
        "address": {
            "line1": "1234 Broad St.",
            "city": "Portland",
            "state": "OR",
            "postal_code": "97216",
            "country_code": "US"
        }
    }
})

if invoice.create():
    print(("Invoice[%s] created successfully" % (invoice.id)))
else:
    print((invoice.error))

if invoice.send():  # return True or False
    print(("Invoice[%s] send successfully" % (invoice.id)))
else:
    print((invoice.error))

payment_attr = {
    "method": "CASH",
    "date": "2014-07-10 03:30:00 PST",
    "note": "Cash received."
}

if invoice.record_payment(payment_attr):  # return True or False
    print(("Payment record on Invoice[%s] successfully" % (invoice.id)))
else:
    print((invoice.error))
    "address": {
      "line1": "1234 Broad St.",
      "city": "Portland",
      "state": "OR",
      "postal_code": "97216",
      "country_code": "US"
    }
  }
})

if invoice.create():
  print("Invoice[%s] created successfully"%(invoice.id))
else:
  print(invoice.error)
    
if invoice.send():  # return True or False
  print("Invoice[%s] send successfully"%(invoice.id))
else:
  print(invoice.error)

payment_attr = {
    "method" : "CASH",
    "date" : "2014-07-10 03:30:00 PST",
    "note" : "Cash received."
}

if invoice.record_payment(payment_attr):  # return True or False
  print("Payment record on Invoice[%s] successfully"%(invoice.id))
else:
  print(invoice.error)