Is there a way to set up payment terms for a customer?

There is not currently a way to require 50% payment from a customer, but you could possibly handle it with triggers. For example, you could create a trigger (when an order is placed) to alert the customer that they must pay 50% before the order will be started. And then another trigger that will alert you or someone on your staff when a payment has been made on an order. It wouldn't be the cleanest solution, but if you have regular customers it wouldn't take them long to get the flow.

Other than that, your options are to set the "Default Checkout Flow" in your Financial Settings to Pay Before Processing, which will only allow people to place BIDS until they've paid, at which point it can be submitted as an order. Or you can set the Default Checkout Flow to User Credit Limit which will allow people to place orders and then billing starts when the order has been shipped (though they can pay any time before that) and you'd manage your collections with triggers doing all the pesky work of reminding the customer they need to pay.