Is there a module or built in way to accept deposits?

Basically, I would like a customer to be able to pay only 10% until the item is complete and ready to be shipped, or until they come in and pick it up.

Is there a way to do this? I looked at the installments but that's for credit card only...