I've had a few bad experiences where I've been paid past due, and I'm concerned about building products for clients that I'll never see a dime for.

I have some friends that get credit card information from their clients before starting work to ensure that they are paid for the time they spend on their work, but I wonder if this scares away potential clients.

Is this a good practice? Are there other reliable ways to ensure that you get paid for the work you complete as a freelance programmer?

  • 1
    So, you don't trust me to pay you, but you expect me to trust you with my credit card information? You're not getting the contract. Jun 30 '14 at 18:45
  • Agreed @Pete, i think that's a valid concern. On the flip side, losing 40+ hours of salary is (i think) more important than losing a few potential contracts.
    – Kyle
    Jun 30 '14 at 19:04
  • 1
    Hotels typically ask for a credit card or cash deposit at reservation and/or upon check-in. Contractors commonly take the milestone approach @ChrisForrence mentions. Some folks just set their prices so they can afford to take an occasional loss or take it to court... The right answer may depend on what you are freelancing in and what the conventions are for that field.
    – keshlam
    Jul 1 '14 at 3:32
  • 2
    @PeteBecker You can buy prepaid credit cards at most convenience stores. By spending the balance before handing out the numbers you can limit your risk to $0.00. This is why I think it is a bad idea. It antagonizes honest clients but does not really provide protection from dishonest clients.
    – emory
    Jul 1 '14 at 13:35

To address your direct question, no, it's not a great practice. To think of it in terms of risks, I would not want to risk my clients' credit card information being stolen (because I would likely be liable for that!)

A more common practice is to require a deposit, or a percentage of the total fee due upfront before any work is to be completed. This ensures that, no matter what, you've at least received something for your time. Also, the client is motivated to follow through with the contract, since they've already paid money to you.

Another practice is to require payments upon certain milestones, or well-defined break marks in the project. Work would not begin on the next milestone until payment has been made.

Is it 100% reliable? No. Does it ensure that you at least get something for your time? Yes.

  • The way I used to do it before I quit freelancing was with a deposit. I would require 40% up front non-refundable. The rest of the 60% was due before I released the project over to the customer. Before then, everything that a client could just copy had watermarks. That way the client would see what they're getting, pay me the final 60%, then receive their project. Just make sure that if you do go about the deposit rule, that you get everything in contract! My first (very unlucky) contract lost me a cool $1000 because the deposit was word of mouth and the client threatened legal action. Jul 1 '14 at 3:37
  • The milestone method seems to work great so far. You break it into pieces and you get paid for every pieces after you finished it. This helps a lot when you have a big project, that might take 2-3 months to finish. You won't have to wait 3 months to get paid. Jul 7 '14 at 8:49
  • Depending on where you are doing business, asking for card details may not even be legal...
    – Phil Haigh
    Jul 30 '14 at 8:23

Be careful asking for (and storing) credit card information. Unless you're a PCI-compliant business, there are portions of credit card info that you aren't supposed to store anywhere as part of a transaction.

A deposit is a good choice. Always have a contract that states the payment terms.

Some freelancers also have a "kill fee" where you still get paid X amount if the client decides to cancel the project.

There's a great talk(maybe nsfw, language) on this subject that addresses common pitfalls you're likely to encounter when trying to get paid for freelance work. Some of it applies more to design than programming, but it's still definitely useful information.

  • Good points on being liable for storing the credit card information!
    – jmort253
    Jul 26 '14 at 5:07

I think an actual deposit is better, whether it's in direct bank funds (cash, check, cashier's check, money order, ACH), or a credit card transaction UP FRONT (meaning that you get the info and make a charge RIGHT AWAY), or maybe even PayPal.

Here's why:

You can collect the credit card info as you are describing, but until you do a transaction, you don't know if the funds are actually available!!! Doing it early will let you know what kind of customer you're dealing with. Customers who start backtracking when you ask for credit card information might be indicating, inadvertently, that they don't actually have the money to pay you.

"When someone shows you who they are believe them; the first time."- Maya Angelou

  • Or they might be indicating that they've been bitten before.
    – Ben Voigt
    Jul 1 '14 at 1:35
  • @Ben Nope, can't agree with that one. If you're a freelancer doing anything dirty with a customer's credit card, the customer ALWAYS has the bank's dispute process as resolution. On the flipside, a freelancer who hasn't been paid a cent has far fewer options. A customer who's trying to hustle the freelancer KNOWS that. The freelancer has only so-called "legal remedies," NONE of which are effective without having some money in the pocket.
    – Xavier J
    Jul 1 '14 at 8:24
  • Not saying the potential cost to them is as high as to you. Just that it's far more than zero.
    – Ben Voigt
    Jul 1 '14 at 11:54

While I agree with @ChrisForrence about the deposits, percentages and milestones for payments, I disagree that it isn't a good practice if done correctly, meaning you have a legally binding agreement that authorizes you to charge their credit card upon non-payment of work.

You have a contract that says something to the effect:

You authorize [company name or your name] to charge your credit card for any unpaid amounts of work after completion of project.

Below this sentence they would fill in their credit card information and sign the paper. This gives you the authorization to charge their credit card if they never pay for the work. Of course I would recommend having a lawyer create this document so it complies with any legal requirements but I have seen this used before.

This method can be used in conjunction with deposits or milestone payments. Those who use this kind of a document tell me they typically try to contact the client before making the charge. It is when the client either refuses to pay or won't reply to them that they charge the card.

Also, when using this information be sure the contract with the credit card info is kept in a locked and secure place.

  • 1
    +1: I do agree that if done correctly, it's acceptable to take payment via card. My main concern (and the reason why I dismissed it as an option) is liability, especially if one is a sole proprietor or the like. You do address this, though, by keeping the information in a "locked and secure place". Jun 30 '14 at 19:26
  • 1
    Also, you'd need a plan for properly disposing the information when you're no longer required to keep the records. The contract isn't something that should end up blowing down the street when a skunk knocks over your trash can. :) A paper shredder would be a great investment if one were to go this route.
    – jmort253
    Jul 26 '14 at 5:10
  • @jmort253 - Great point!
    – L84
    Jul 26 '14 at 6:32

Yes. The way I look at this - my attorney get a retainer before she starts work. My builder needed a deposit to start work. So do most professionals.

You can always get a check and put it in escrow or ask for partial payments.

I agree with other comments that credit cards and paypal both have protection for the buyer.

I've paid freelances this way for initial work with my company. After we know each other better, they invoice me and I cut and mail a check.


It's actually illegal to store a credit card number outright, though some old terminals still print summaries with full numbers at the end of each day (which is, of course, illegal). If you store any payment information, there are very strict policies and laws that you have to follow. It would cost you more to implement a compliant system than it's worth.

One option is to use something like Stripe, which stores a client's information for you. You can charge the client at any point, but it's not going to help you much: they can still file a chargeback later.

Unless you can obtain payment up front or in very small increments (each day/week/etc.), you're best off using an escrow service, such as Escrow.com. I'd recommend Agreed.com, but they're more specialized (specifically for domain names and websites).


I wouldn't even give them an option to use a credit card if you are just doing freelance work, if you insist on using it, make sure to have a terminal or some sort to process the information. Maybe use Bitcoin(or other cryptocurrencies), Paypal (wait a week or so to ensure it's not fraudulent, or get them to take a picture with their I.D [Sensitive areas blacked out of course]), or even bank wiring (many scams happen that way, though). Try to find a good escrow service that will be cheap (or free). I really recommend to get a down payment, also.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.