You can refund an order multiple times until all the money in it is refunded.
Refer to refund_possible in the order object to check if refunding is still possible.
If you wish to restock products in inventory, submit shipments array along with the refund request.

Submit a refund
POST /orders/ID/refund

  // shipments are optional, use if you wish to restock products
  "shipments": [
      "id": "<Int>", // ID of the shipment
      // list of products in this shipment, with quantity to restock
      "items": [
          "id": "<Int>", // ID of the line item from the order
          "quantity": "<Int>"
  "refund": "<Float>", // amount to refund
  "notify": "<Bool>" // whether customer should be notified by email