Can I stop customers using the same voucher code more than once?

The answer to this question is really yes and no.

Unfortunately there's no way to stop a determined customer from using the same voucher code more than once except by issuing each customer with an individual voucher code.

When creating a voucher code you can specify the 'number of times a customer can use' value for the voucher code.

However, this only relates to customers that are logged into an account (you may therefore prefer to force customers to login at checkout).

If a customer doesn't log into an account during checkout then there is no way to guarantee that they won't use the voucher code more than once.