To opt in to the Enhanced Refund Flow, contact Payabli. This feature isn’t enabled by default.

Enhanced Refund Flow is a feature that provides a frustration-free experience for processing card refunds. By default, refund requests are processed as soon as they’re submitted. Between 5 PM and 7 PM ET each day, Payabli and the backend processor run several important tasks related to settling transactions, computing ledger balances, and processing transfers. If a credit card refund request is submitted during this time, several issues can arise:

  • The refund may be declined because the original transaction is still in a transient state and hasn’t fully updated to a settled state.
  • The refund may lower the ledger balance of the paypoint. This can impact a transfer scheduled for that day if there isn’t enough balance available.

The Enhanced Refund Flow mitigates these issues by introducing a queue to hold refunds until it’s an ideal time to process them.

With Enhanced Refund Flow enabled, how the refund process works depends on the age of the sale and the time of the refund request. Consider these three basic scenarios:

  • Scenario 1: The sale is 24 hours old or older, and the refund is requested outside of 5-7 PM ET
  • Scenario 2: The sale is 24 hours old or older, and the refund is requested between 5 and 7 PM ET
  • Scenario 3: The sale is less than 24 hours old

Remember that refunds can only be processed on transactions after their batch has processed.

Scenario 1

When a merchant has Enhanced Refund Flow enabled, here’s how the refund process works for a sale that’s 24 hours old or older, and the refund is requested outside of 5-7 PM ET.

  1. The paypoint initiates a refund request.
  2. Payabli immediately processes the refund request.
  3. The backend processor sends a response to Payabli.
  4. Payabli sends a synchronous response with status: Approved/Declined.

Scenario 2

When a merchant has Enhanced Refund Flow enabled, here’s how the refund process works for a sale that’s 24 hours old or more and the refund is requested between 5 and 7 PM ET.

  1. The paypoint initiates a refund request.

  2. Payabli queues the refund request.

  3. Payabli sends a synchronous response to the paypoint. The status is “Initiated”, the resultCode is ‘10’, and expectedProcessingDateTime is 7 PM ET.

  4. The refund is released from the queue at 7 PM ET.

  5. Payabli sends the refund request to the backend processor.

  6. The backend processor processes the refund and sends a response to Payabli.

  7. Notifications sent (must be configured):

    • 7a. If the refund is approved, Payabli sends a RefundedPayment notification.
    • 7b. If the refund is declined, Payabli sends a DeclinedPayment notification.

Scenario 3

When a merchant has Enhanced Refund Flow enabled, here’s how the refund process works for a sale that’s less than 24 hours old.

  1. The paypoint initiates a refund request.

  2. Payabli queues the refund request.

  3. Payabli sends a synchronous response with the “Initiated” status, and the expected time when the refund will be processed.

  4. The refund is released from the queue after 24 hours.

  5. Payabli sends the refund request to the backend processor.

  6. The backend processor processes the refund and sends a response to Payabli.

  7. Notifications sent (must be configured):

    • 7a. If the refund is approved, Payabli sends a RefundedPayment notification.
    • 7b. If the refund is declined, Payabli sends a DeclinedPayment notification.

Integration tips

When integrating with Enhanced Refund Flow, follow these tips to ensure a smooth experience for your merchants:

1

Recognize the initiated status

Recognize status = “INITIATED” and resultCode = “10” in refund and reversal responses.

When you receive a response for a refund or reversal operation, save the Payabli transaction ID (returned as referenceId) for the refund and consider this response an indication that the refund is in a pending state.

  {
    "isSuccess": true,
    "responseText": "Success",
    "responseCode": 1,
    "responseData": {
      "expectedProcessingDateTime": "2025-02-15T10:30:00Z",
      "authCode": "A0000",
      "referenceId": "255-fb61db4171334aa79224b019f090e4c5",
      "resultCode": 10,
      "resultText": "INITIATED",
      "avsResponseText": null,
      "cvvResponseText": null,
      "customerId": null,
      "methodReferenceId": null
    },
    "pageIdentifier": null
  }
2

Use `expectedProcessingDateTime`

Recognize expectedProcessingDateTime” in UTC format in refund and reversal responses. This field has a non-null value only if the refund has an INTIATED status. You can use this field to understand when the refund will be processed.

  {
    "isSuccess": true,
    "responseText": "Success",
    "responseCode": 1,
    "responseData": {
      "expectedProcessingDateTime": "2025-02-15T10:30:00Z",
      "authCode": "A0000",
      "referenceId": "255-fb61db4171334aa79224b019f090e4c5",
      "resultCode": 10,
      "resultText": "INITIATED",
      "avsResponseText": null,
      "cvvResponseText": null,
      "customerId": null,
      "methodReferenceId": null
    },
    "pageIdentifier": null
  }
3

Configure notifications

Subscribe to the RefundedPayment notification

Configure RefundedPayment notifications. Use the transaction ID from the notification to find the refund, and mark it as approved in your own system. After it’s approved, the refund is no longer pending.

Subscribe to the DeclinedPayment notification

Configure DeclinedPayment notifications. Use the transaction ID from the notification to find the refund and mark it as declined in your own system. After it’s declined, the refund is no longer pending. For more information on refund declines, see Refund Failures.

For more information how to subscribe to notifications, see Notifications and Reports Overview