Hate UML?

Draw sequence diagrams in seconds.

Bending over: How to sell your software to large companies
Posted on: 2010-04-16 18:00:00
This post also appears, with my permission, on A Smart Bear, with additional editorial comments by Jason Cohen, founder of Smart Bear Software.

For a micro-ISV, selling to businesses can be more lucrative than selling to consumers. Instead of making a few dollars per sale and hoping for thousands of sales, you sell to only a few customers, and charge much higher rates. But the rates are high for a reason. It takes more time and money to sell to businesses.

Legal Issues

Consumers rarely read software license agreements. Most corporate customers don't read them either, but some have legal departments that must approve any agreement that the company makes, no matter how small. Your EULA will be examined with the same fervor as a billion dollar acquisition.

The license agreement's primary purpose, then, is to get past the customer's legal team quickly, because they stand between you and a sale. It helps if it is fair and well balanced at the start. That way, if they add crazy one-sided terms, you can negotiate without sounding unreasonable.

Some terms that you may be asked for:

  • "If you go out of business, we get all of your source code." The request is common. The customer sees it as an insurance policy in case a smaller supplier disappears, and the assurance it provides may be so important that they are unwilling to drop it. Source code escrow services will hold on to your source code for a fee (hint: get the buyer to pay). Opt for a more informal arrangement if they don't specifically ask for this service.
  • "If someone sues us over your product, you have to pay our legal costs." Indemnification is also a standard clause that is difficult to get removed. If you can't stomache any risk of personal bankruptcy, incorporating your micro-ISV is a must.
  • Support details. Are you going to be providing free technical support for this product in perpetuity? I hope not.
  • "What happens if the product is defective?" It's only fair to offer a full refund if the customer is not satisfied.

A good software license agreement that you can re-use in a variety of situations can cost anywhere from $1000 to $5000. It pays to shop around.

The procurement process


A quotation looks just like an invoice, except that it has an expiry date. Sixty days ought to be long enough for the client to make a decision, even if the whole department goes on consecutive vacations.

Evaluation Version

The purchasing process can take a long time, so you might be asked to provide an evaluation version while the details of the sale are worked out. It's a great idea, because after the buyer incorporates your product into their processes, they aren't going walk away from the deal easily. However, it is unclear whether the customer acknowledges any of your license terms during the evaluation period. The product should have a time limited expiry and other technical measures to ensure compliance.

Purchase orders

You and your buyer have patiently waited for five months for the company's legal team review your license. Now, the signed copies have been faxed (yes, faxed!) back and forth. At last, they'll click on that Paypal button on your order page...

Think again. Once a large business has agreed to buy your product, you are expected to send it to them for free. They do not have to pay you a dime until they feel like it. Instead, they will send a purchase order.

The good news is that purchase orders are a legally binding promise to pay you, after all of the terms have been fulfilled. Here is a diagram to illustrate the procedure:

Click to Edit on WebSequenceDiagrams.com

If you are lucky, they will use PDF files for the purchase order and invoice. But you will probably have to send and receive some more faxes.

"Please read this 100 page document about our invoicing process.."

Sometimes, after everything is agreed, you'll be asked to perform some kind of insanely complex invoicing procedure. The instructions are laced with stern, upper case warnings that if the invoice doesn't follow the proper format, lacks item category labels (found in document B), or is submitted during the wrong hours, it will be ignored.

If you have priced your product appropriately it will be worth it to spend a few hours to learn their codes and procedures. If the price is too low, you can try your luck and (politely) ask if there are any other options. (Do not mention why!)

"We will release the funds after you provide your US social security number.."

US customers will sometimes ask for a Taxpayer Identification Number (TIN). If you are not a US taxpayer, you don't need one. Once you point this out, they may be okay with it, or they will ask you to fill out a US form W-8BEN and send it to them. The form is scary because it states that your "income" will be subject to a 40% withholding tax. Don't worry: the purchase price is not "an amount subject to withholding", and sellers do not need to start doing US taxes (if they aren't already). Some US businesses feel that they must keep this form on file for all suppliers, and it's easier to comply than argue. Here's some more information.

"We only pay using Bankers' Scrolls made from papyrus"

Many companies have a policy against using Paypal. It's best to use an old fashioned check if you can. You can suggest, but never insist on a method of payment. Money is money! Some international customers only use bank transfers. If so, call your bank for the information that you need to provide them, and expect about $30 of the payment to go to fees.


Imagine you are asked to buy some software from, say Adobe.

  1. You go to their web site,
  2. try to find the link to buy,
  3. figure out how to pay,
  4. get to the checkout page,
  5. then stop and search Google for "adobe coupon codes",
  6. go back to step 1
  7. keep refreshing your email for the link,
  8. download the software.
  9. Keep of record of the receipt somewhere.

Now imagine you have to do this for 1000 different items, at 1000 different web sites. It gets to be a very large job. Some companies have outsourced their procurement to resellers.

A reseller is simply an intermediary who pays you and provides the software to their client. It's also their job to ask for a discount, but there is no need to provide one. They have been told to acquire your product, and have already been paid a fee as a percentage of your price.

Keep smiling

Selling to big companies can be frustrating. Throughout the process, it is important to stay professional and pleasant. Sometimes, it may appear that your customer is trying to screw you. Even if they are, is your job to be jovial, point it out, and assume that it is a simple oversight. It makes no business sense to throw money away because of a rude email.

Further reading

Here are some of my favourite blogs on the software biz:

Want more programming tech talk?
Add to Circles on Google Plus
Subscribe to posts

Post comment

Real Name:
Your Email (Not displayed):

Text only. No HTML. If you write "http:" your message will be ignored.
Choose an edit password if you want to be able to edit or delete your comment later.
Editing Password (Optional):

Bob Foster

2010-04-19 09:17:30
If you think it's rough selling to businesses, try selling to the federal government, or any of its agencies. There's a reason a hammer costs taxpayers thousands of dollars. Hammer cost: $2.00. Filling out forms and negotiating contract: $20,000. Quantity: 1.

Jason Cohen

2010-04-19 11:36:27
Great content, and thanks for the mention at the end.

I'm spreading it on Twitter.

Griffin Boyce

2010-04-19 15:48:19
Wow, such excellent and concise information on this! I am taking notes over here =)

@Bob, hehe good point. With the government, maybe it would be worth it to have a standard price increase for those things?


Other posts by Steve

Yes, You Absolutely Might Possibly Need an EIN to Sell Software to the US How Asana Breaks the Rules About Per-Seat Pricing 5 Ways PowToon Made Me Want to Buy Their Software How I run my business selling software to Americans 0, 1, Many, a Zillion Give your Commodore 64 new life with an SD card reader 20 lines of code that will beat A/B testing every time [comic] Appreciation of xkcd comics vs. technical ability VP trees: A data structure for finding stuff fast Why you should go to the Business of Software Conference Next Year Four ways of handling asynchronous operations in node.js Type-checked CoffeeScript with jzbuild Zero load time file formats Finding the top K items in a list efficiently An instant rhyming dictionary for any web site Succinct Data Structures: Cramming 80,000 words into a Javascript file. Throw away the keys: Easy, Minimal Perfect Hashing Why don't web browsers do this? Fun with Colour Difference Compressing dictionaries with a DAWG Fast and Easy Levenshtein distance using a Trie The Curious Complexity of Being Turned On Cross-domain communication the HTML5 way Five essential steps to prepare for your next programming interview Minimal usable Ubuntu with one command Finding awesome developers in programming interviews Compress your JSON with automatic type extraction JZBUILD - An Easy Javascript Build System Pssst! Want to stream your videos to your iPod? "This is stupid. Your program doesn't work," my wife told me The simple and obvious way to walk through a graph Asking users for steps to reproduce bugs, and other dumb ideas Creating portable binaries on Linux Bending over: How to sell your software to large companies Regular Expression Matching can be Ugly and Slow C++: A language for next generation web apps qb.js: An implementation of QBASIC in Javascript Zwibbler: A simple drawing program using Javascript and Canvas You don't need a project/solution to use the VC++ debugger Boring Date (comic) barcamp (comic) How IE <canvas> tag emulation works I didn't know you could mix and match (comic) Sign here (comic) It's a dirty job... (comic) The PenIsland Problem: Text-to-speech for domain names Pitching to VCs #2 (comic) Building a better rhyming dictionary Does Android team with eccentric geeks? (comic) Comment spam defeated at last Pitching to VCs (comic) How QBASIC almost got me killed Blame the extensions (comic) How to run a linux based home web server Microsoft's generosity knows no end for a year (comic) Using the Acer Aspire One as a web server When programmers design web sites (comic) Finding great ideas for your startup Game Theory, Salary Negotiation, and Programmers Coding tips they don't teach you in school When a reporter mangles your elevator pitch Test Driven Development without Tears Drawing Graphs with Physics Free up disk space in Ubuntu Keeping Abreast of Pornographic Research in Computer Science Exploiting perceptual colour difference for edge detection Experiment: Deleting a post from the Internet Is 2009 the year of Linux malware? Email Etiquette How a programmer reads your resume (comic) How wide should you make your web page? Usability Nightmare: Xfce Settings Manager cairo blur image surface Automatically remove wordiness from your writing Why Perforce is more scalable than Git Optimizing Ubuntu to run from a USB key or SD card UMA Questions Answered Make Windows XP look like Ubuntu, with Spinning Cube Effect See sound without drugs Standby Preventer Stock Picking using Python Spoke.com scam Stackoverflow.com Copy a cairo surface to the windows clipboard Simulating freehand drawing with Cairo Free, Raw Stock Data Installing Ubuntu on the Via Artigo Why are all my lines fuzzy in cairo? A simple command line calculator Tool for Creating UML Sequence Diagrams Exploring sound with Wavelets UMA and free long distance UMA's dirty secrets Installing the Latest Debian on an Ancient Laptop Dissecting Adsense HTML/ Javascript/ CSS Pretty Printer Web Comic Aggregator Experiments in making money online How much cash do celebrities make? Draw waveforms and hear them Cell Phones on Airplanes Detecting C++ memory leaks What does your phone number spell? A Rhyming Engine Rules for Effective C++ Cell Phone Secrets