Commerce - how do I set a discount to a specific user's next order only?
Generic solution

I think you need to write some custom code to get a solution that will work automatically. This could be handled by a custom Rules condition - meaning hook_rules_condition_info() implementation. After you add the code below, make sure to add this condition through Rules interface as well. Here's example code that would go in YOUR_MODULE.rules.inc:

function YOUR_MODULE_rules_condition_info() {
  return array(
    'YOUR_MODULE_rules_condition_check_next_order_discount' =&gt; array(
      'label' =&gt; t('Sample condition'), 
      'parameter' =&gt; array(
        'order' =&gt; array(
          'label' =&gt; t('Order')
          'type' =&gt; 'commerce_order',
        ),
      ), 
      'group' =&gt; t('Custom'),
    ),
  );
}

function YOUR_MODULE_rules_condition_check_next_order_discount($order) {
  // Perform any checks you want here, load the owner, see previous orders, etc.
  $customer = user_load($order-&gt;uid);
  if ($whatever) {
    return TRUE;
  }

  // I recommend doing this the other way around: by default visitors shouldn't be
  // able to have the rights for this discount, but they can get it IF they fulfill
  // your rules above.
  return FALSE;
}


Note: the YOUR_MODULE.rules.inc file would be loaded automatically, and you don't have to include it in the .info file of your module.

One-off solution

In case I misunderstood your question, here's how to configure the discount to have this work only once:


"Apply to" fieldset, add "User" and there select the target user.
Set the value of "Maximum usage per customer" field to 1.


Hope this helps.