Invoices & expenses

TL:DR - we need your help on tightening up our expenses/invoice process

Hi folks! Pinging you to share some info on how invoices/expenses are processed behind the scenes, and also to crowdsource your ideas.

Background

Our invoice cutoff date is the 20th of the month, however in practice, we often see late invoices coming through.

The 20th has been our invoice cutoff all along (hypothetically!) but we’ve not been strict on it to date as we wanted to make sure that people get paid and all is happy. That said, late invoices are having a knock-on effect.

The problem

In order to streamline our finances and automate as much as possible (which we need to do due to being a 2-person team), we now make all the monthly contractor payments from our Singapore bank account in one single bulk transaction, executed at the end of the month.

This cuts down our admin overhead significantly, which is great, but what it does mean is that late invoices hold up the payment for everyone else.

The workaround we’ve been using for late invoices is to create an off-cycle payment, but this generates additional bank fees (which we cover) - approximately $50.

Expenses

For the reasons mentioned above, we’re now considering asking you to not submit your expense reports any later than the 15th. This was previously the 20th for contractors, but we found in practice that it just didn’t leave enough buffer to sort out any Q&A in time before the end of month bulk payment.

Solutions?

This is where you come in - do you have any creative ideas for solving this problem and getting people’s invoices and expense reports in timely?

Some ideas we’ve floated within the team, but not sure how you would feel about them:

  • Splitting the bank fees with the core contributor in case of late invoices as a financial disincentive to submit invoices late
  • Enforcing the cutoff date more strictly and holding payment of any late invoices/expenses until next month’s payment cycle (seems a bit Draconian?)

Anything else you think might work? How would you feel about this change? - We’d love to hear your thoughts. Once everyone’s had a chance to weigh in on this thread, we’ll ping again to confirm next steps.

Thanks!

I don’t think the second option Draconian at all, this is how it has worked at quite a number of places I’ve worked before. For instance I made a mistake to not submit my Devcon plane ticket before the 20th of September and am more than happy to accept the reimbursement in the next payment cycle.

Additionally - create incentive for employees to use crypto - by allowing them to submit at anytime and get payed asap :wink:

9 Likes

Same as @jacqueswww In fact I thought this was already the way we handle it. :smiley:

3 Likes

Started working on this during hack week. Would be curious to know, how many CCs would opt to get paid in crypto if they could withdraw their accrued salary whenever they want? How about automated invoice generation (as long as the streaming salary is active, invoice can be autogenerated for the CC)?

1 Like

This is only fair. Further more, a reminder email a few days before the deadline would help the forgetful type.

We all have invoice templates, right? I have mine in an *.ods file (Open Document spreadsheet, as generated by LibreOffice) so it just takes a couple of minutes to export it to PDF and mail that to the billing department.

Maybe we can have an smart contract where u register all users with a proportion (lets say register value in USD), then each period all of them can withdraw, but to add a new period the controller needs to set the proportion.
Also this proportion could be autocalculated based on the amount sent in the payable msg to the contract, but I would also add the parameters as sanity check.

Such tool could help you do payments, and beneficiaries could withdraw their funds.

ex.: interface

contract Payout {
function payoff(uint256 nonce, uint256 pointsProportion) payable {
//enables payoff for registered users
}

function addUser(address benecfiary, uint256 points) external {
//add a user that can be paid off
}
function withdraw(uint nonce) external {
 //authorized user withdraw up to nonce
}
}

the problem with this of course is it goes through all process of release, with long lasting audit and so on. but, maybe we need to start it someday to be able to finish it, even if takes long.

1 Like

There is an EIP proposed for money streaming that covers these issues but without the need to limit users to withdrawing at fixed periods: https://github.com/ethereum/EIPs/issues/1620

A salary agreement would be defined as:

    struct Agreement {
      uint256 ratePerSecond;
      uint256 startTime;
      uint256 stopTime;
      address recipient;
      address sender;
      address tokenAddress;
}

Where ratePerSecond would be annualSalary / 365.25 days

Accrued salary would be ratePerSecond * (now - startTime)

When the recipient calls withdraw startTime gets updated to now

1 Like

@barry - hard to know exactly, but currently 32% of core contributors receive all or part of their monthly fee/salary payments in crypto (with 46% getting all/part of their expense reimbursements in crypto). The idea of an automatically generated invoice is cool. Like the idea of streaming overall, wondering if this would throw up any accounting problems (cc @jason & @Dani), also what amount of work/resource it would take to get something like this set up?

@stefantalpalaru good idea re notifications - cc @rajanie.

Will send an email round to everyone soon to confirm but overall it looks like no huge objections to moving the expense deadline forward and trying to dis-incentivise late invoices through cost-sharing any additional bank fees that are incurred.

Cheers all for the input!

1 Like

There are simple implementations of this that already exist such as https://sablier.app/ and the payroll app for Aragon (we could create Aragon organization for handling such payrolls).

An incentivized version that I started working on requires a little bit more work to make sure it’s sound in all scenarios but in the incentivized version CCs would earn interest as their salary accrues and Status would earn interest on the prefunded portion making a nice win/win where the CC gets an instant pay increase while Status payroll costs would decrease from the earned interest offset.

Does it apply to those paid 100% in crypto? There is no banking fees in that case

Good point @yenda. @jason & @Dani - am wondering if we do any batching of monthly crypto payments that would be impacted by late invoices?

Invoices for crypto payments are less time-dependent as (currently) they are processed individually after the fiat cycle. However, we are trialing Remroll (https://www.remroll.com/) which might allow us to implement some automation to this portion of the cycle, too.

I wasn’t aware that 20th was such a strict cut-off date. I know I’m guilty of sending my invoice a bit late a few times, sorry for that. I’ll make sure to do it before the 20th from now on.

Oh, and I agree with not paying out invoices sent in late. If I do that, that’s my fault. Besides, I’m not poor, I’ll survive.

1 Like

Thanks everyone for the input! Just to cap this off, let’s move forward with:

  1. All CC’s to submit expense reports by the 15th of the month.
  2. All contractors to submit their invoices by 20th of the month. Late invoices will incur part of the additional bank fees (fiat). For 100% crypto, your crypto payment will get put at the back of the queue and might be delayed. In both cases, getting your invoice in on time will help us batch your payment = saves us time = it will be much appreciated.

We’ll send email reminders on the expenses and invoice cutoff dates (let us know if you want to opt out).

Streaming crypto salaries is a work in progress, with first tests starting soon. @Dani’s aim is to implement in early 2020 - watch this space!

1 Like