AskHN: Freelancing – Questions from a temporary freelancer

6 points by mobini ↗ HN
I'm in need of 2k, so I've decided to do some short 1-2 day contracts. I'm not looking for long-term commitment. This is my first time doing freelancing, and I found some interested parties on craigslist.

I've read a few helpful HN threads on this topic, with lots of comments about writing up a contract that clearly stipulates payment and project scope. I'll also hold copyright until last payment, and then I'll transfer the copyright. I am unclear on a few things though:

- I would like to avoid Paypal as I have read stories about clients doing chargebacks. Bank wire seems better. What personal information do I have to reveal to the client (effectively a random internet person) to receive payment through a bank transfer? I'm afraid of scammers who are only interested in mining personal info. So far this person does not seem the type, but I'd like to mitigate the risk if there's a way.

- One of the clients wants a web scraper to scrape some sites that have no api. The problem is he wants it to be "reliable". As we all know, web scrappers can fail if the site has a redesign. How can I avoid a false chargeback/dispute if the scraper is done and fails 2 weeks later because of a site change?

- For my own tax records(I'm in the US), how do I get my 'pay stub' from the client? Would I just print out a record of my bank transfer statement? Similarly for paypal, would I print out the paypal transfer?

8 comments

[ 1.6 ms ] story [ 28.9 ms ] thread
- on contracts there is the classic 'f*ck you pay me' video http://vimeo.com/22053820

- on bank transfer it's just your name, bank name and bank account numbers. An outsider can't get your address easily.

- I don't like paypal for the same reason. If the transaction gets investigated they lock the money for months.

- will the scraper run on your systems or theirs? If it's yours then you should charge monthly maintenance to cover any breaks or redesigns. Ideally you deliver them software only and be done. It's a bad situation. All crawlers I wrote broke at one point or another, e.g. running out of disc space or fail to send emails.

- tax office is interested in a proper invoice that lists your full address, the clients full address, a date, a description of services. You can create a simple PDF document. How and when the money transaction happened is secondary. They might not even care if the client has a copy of the invoice.

mtmail already made the point on the monthly maintenance on the web scraper. One more thing I'd do, as an addendum (or even separate) to the contract, I'd have a one page written/signed document that points out web scrapers are useful but fragile when sites change (give the reasons etc). That should help keep you pretty safe.

As for payment, try not to take a credit card or paypal, get a physical check, ACH or wire transfer. As for taxes, most places will require you to provide a W9 which they will then use to report what they paid you to the IRS (although sometimes when the fees are low they don't bother). In the end even if they don't, just report it on your taxes as additional income and keep a copy of your invoice and record of payment, including any fees or costs you incurred on the project and to get paid. This way you can get your deductions but also have proof.

I just read that giving out the bank account number may be dangerous as well... http://money.stackexchange.com/questions/15218/is-it-safe-to...

It seems like I have to either accept paypal and risk a chargeback, or I have to provide my bank details which can be used for fraudulent withdrawals.

I think maybe I'll risk paypal then and keep detailed records of our email in the event of a chargeback.

Unless I've misunderstood something?

It is true that technically people can process a payment or deposit against any account where they have the Routing and Account number. However, the legal consequences of doing an unauthorized withdrawal is quite stiff, not to mention the audit trail is really easy to follow. And your own bank will provide fraud protection if someone does this, limiting your liability to basically nothing.

I generally have no issues giving a company our wire information or ACH information. I'd much rather get the fraud protection from my bank. The difference to me is this. My bank sides with me first until the other side proves they were authorized, e.g. within 24 hours they put the money back in my account and fight with the other side to prove they had my authorization for the withdrawal. If you get a chargeback or Paypal refund, they both side against you and make you prove you were entitled to receive the funds, and even then many times won't care (Paypal).

BTW -- one other point, anyone that sees another persons check has all they need to electronically process a payment (or deposit) against their account. What stops them from doing it is generally 1: a lack of knowledge, 2: the Fraud protection and audit trail combined with stiff penalties (e.g. its a US federal felony from what I understand) for doing it.

Not that it doesn't happen, but in 10+ years I have never had anyone dispute an ACH/Wire transfer (or illegally reprocess one), but Paypal fights and (a few) chargebacks we have had.

One last note, payroll departments many times have you sign an agreement that says IF they over pay you that they can automatically go into your account and auto debit the over payment amount. That is completely legal and legit, but I've never had a company send me an agreement granting them the same permission, and I wouldn't sign it if they did.

Usually contracting with a client is pretty straight forward and simple . . . a contract is a good idea . . . but for straight forward projects it can be as simple as an email exchange outlining the scope and quote. 50% upfront is pretty standard and then 50% upon completion then deliver the code/product after the final payment (keep it on your hosting for reiview/final ok.) That said best practice is to always setup a simple contract, I don't always though and if the total is less than $1k I don't expect you're going to take them to court to uphold their end of the contract especially overseas . . . typically you can keep everyone happy and receive payments using an incremental review/payment. 50% up front, then 50% at the end or maybe two 25% milestones. If you get some payment up front and keep code on your server till final payment you're pretty well covered. If they balk at 50% get 25% upfront . . . or do a quick 25% milestone.

The goal is a combination to see they are paying . . . have them view the work . . . see that they are happy and want to move forward. Then you just keep moving milestone to milestone.

You might run in to issues on paypal occasionally but not often. If you have a string of emails from the same email address they send payments from you can usually submit that string of emails and paypal will dispute and win the charge back. I understand your concern but paypal is simple and fast. Just make sure to ask for an email indicating the project was completed successfully and they are happy with the work if you're worried about it.

Wire transfers are a pain, you could setup a domain name/SSL and use stripe for payments but they could always request a charge back. In the states most clients are happy to just mail a check (make sure they clear before sending the code over/going to far)

For the scraping app . . . note in the scope that at some point the website being scraped will change and the scraper will have to be updated. Can you setup a monthly fee to monitor that part of the app. Build in an automated email if the scrape fails and you can fix it as part of your monthly fee (setup via stripe or paypal (gasp!). Or have a maintenance fee already quoted for making those updates each time. They should understand that the format of a 3rd party site is out of your control/and their control and will require some tweaks occasionally. Try for monthly, recurring revenue is always best.

For tax records just track your side business income and expenses. In the states they are required to send you a 1099 for work totaling over $600 in a year. See getting an EIN number below that you can use on your W-9 they need to generate your 1099. You'll most likely file a schedule C or C-ez along with your 1040. It's not real elaborate they only ask for totals. Just keep invoices and wire/paypal/stripe records to verify your numbers if needed.

If you're worried about your address, get a UPS store address. To protect your Social Security Number you can get an EIN number using your name as the sole proprietorship name. This is useful for affil. programs or anything else that generates revenue to minimize exposing your SSN.

When you do use a contract I usually note that the client can use the delivered code as they see fit and that I retain the right to use and re-use portions of the code provided on past, current and future projects. Most code is modular and re-useable and every developer has modules they re-use.

Also add to your contract that you aren't responsible for lost revenue or potential revenue resulting from delays or downtime. And that you will guarantee the product/code is functional and you will resolve any defects with in the first 90(or 180) days. (if their project is super time sensitive you can provide them with a proposal that is 20x your quote if they want a guaranteed delivery date that they feel will impact them significantly financially if it's not met. Occasionally I've ran in to...

Thanks. I think you might be right about the paypal thing. I've been reading up on some articles. The general consensus seems to be that if you know the person, it's probably OK to give away bank details (ie, landlord). However, the people I'm talking with are random strangers off the internet, so their intentions are more difficult to figure out.

I'm leaning towards paypal now. I think I can offset the risk of chargeback by writing some built in locking and then releasing it after x days. Would that be okay?

Maybe I'm just being too pessimistic.

Freelancing is good. But it's not really for everyone. It requires a lot more patience than most people think, especially for beginners