In a nutshell, I've been doing freelance iOS development for a client on an ongoing basis since 2013. Originally my main contact with the business was, let's say, Person A. Recently the client has brought on a new person to manage the project, let's call them Person B. Person B hasn't replaced Person A (as in, Person A is still with the business), rather has just supplanted Person A's role as primary point of contact on the project.
The established pattern of work, with Person A, was that I'd quote the cost of a round of development, they'd approve it, and then when I was done I would deliver application binaries together with an invoice for the work. After the invoice was paid, I would refresh the client's internal Git repository with a copy of the application source-code. That worked well and as far as I'm aware kept everybody happy.
However, recently I submitted my binaries and invoice for the latest bundle of work, and then was informed by Person B that I'd not receive payment until I also provided the source-code. I responded that as a matter of policy I don't do that, and I've not heard anything back from Person B since then, nor received any payment. It's been about a week since I've heard anything from them now.
Some other potentially relevant points:
- The work I'm invoicing for is almost entirely work that Person A approved.
- Person B did not mention their desire to receive source-code in advance nor did I (or would I) agree to such a thing, and in fact their process tends to treat independent contractors more like internal developers; they simply create tickets in Jira and then expect people to work on them without further discussion.
- In 2015, when the client was setting up their internal Git repository, I explicitly stated that I would not submit any code into it prior to receiving payment, and there were no objections at the time.
- I've not had any issues with this client in terms of non-payment or demands that I do things that I never agreed to do as condition of payment in the past. It has, until recently, been an amicable and productive relationship.
- I'm confused as to why I'm getting the silent treatment from Person B.
- The binaries I provide prior to invoicing are always fully functional and production ready. I do not prevent the client from immediately deploying them to end-users.
- The project is generally fairly informal; there's no "official" contract and all work is planned, quoted, and approved by e-mail.
- I'm in Australia, where written promises exchanged by e-mail do count legally as civil contracts.
So I'm somewhat at a loss with respect to where I go from here.
Do I give them the source code, when I never agreed to do such a thing, and when I'm pretty sure that doing so is highly unprofessional if not basically crazy?
Do I stand my ground, and if so, how do I get past the impasse with Person B seemingly freezing me out?
What I have at the moment is a draft e-mail to Person A (with Person B CC'ed), which reads like:
Person A, are you able to assist with this?
Person Band I appear to be at an impasse.
I value our professional partnership and the opportunity to work on this project, however I'm unsure from where, when, or why this expectation of receiving source-code prior to payment has materialized. As an independent contractor, I do not transfer ownership of the source code I develop on behalf of
Busisness Name(or any other client) until the work that's gone into it has been paid in full. This is a matter of policy, and something which I made clear in 2015 to
Project Contactwhen he was the main point of contact for this project. It's never been an issue before.
As I've provided binaries which demonstrate that the functionality covered in the invoice sent on 11 November 2016 has been implemented, and as (to the best of my knowledge) those binaries have been deployed to testers and/or end users, I would appreciate it if that invoice would now be paid.
Or if there are any technical faults which you've identified in the work submitted, please advise and I'll correct them as quickly as possible. In the absence of any such advice, however, I can only consider the work completed and the invoice payable. I'll happily refresh the git repository with the latest sources upon receipt of payment, but unfortunately under no circumstance can I do so beforehand.
The plan is to send that on Monday if the situation doesn't change before then. Is that an appropriate and reasonable approach?