What Commcerce event is fired when a payment is made?
You seem to misunderstand the term payment here. It should not be seen in the context of a regular payment that you make or complete in a store. In this context payments are entities and the events match those of database transactions (insert, update, delete, etc.). 

Theoretically the combination of these 3 events should allow you to determine if a payment has been made or altered or deleted, but you need to subscribe to all of them to be updated on all changes. (If you only subscribe to inserts (new payments) but not to deletes (removed payments) you might miss data.)

The commerce_order.order.paid or the safer \Drupal\commerce_order\Event\OrderEvents::ORDER_PAID event has the following documentation:

/**
 * Name of the event fired after the order has been fully paid.
 *
 * Guaranteed to only fire once, when the order balance reaches zero.
 * Subsequent changes to the balance won't redispatch the event (e.g. in case
 * of a refund followed by an additional payment).
 *
 * Fired before the order is saved.
 *
 * @Event
 *
 * @see \Drupal\commerce_order\OrderInterface::getBalance()
 * @see \Drupal\commerce_order\Event\OrderEvent
 */ 
const ORDER_PAID = 'commerce_order.order.paid';


It is called from doOrderPreSave() in OrderStorage.php, but only if the event has not dispatched before:

  if ($order-&gt;getData('paid_event_dispatched') === FALSE) {
    $event = new OrderEvent($order);
    $this-&gt;eventDispatcher-&gt;dispatch(OrderEvents::ORDER_PAID, $event);
    $order-&gt;setData('paid_event_dispatched', TRUE);
  }


When a payment is made, the order is listed in the commerce_payment.order_updater service which during its destruct will update and save all listed orders. Those in turn will determine if the total order balance has been reduced to zero and emit the event. It looks sensible to me. 

Could it be that you have been testing with the same order over and over and that event already fired once?