Guides

Initiating Refunds

Refunds are initiated by calling the Refund Payment Request endpoint.

Refunds can be partial or full. Partial refunds can be performed multiple times but the total refunded amount cannot exceed the paid amount.

Refund Idempotency

Refund requests must provide an externalRef that is unique for all refunds made against the Payment Request .

This field provides idempotency for the refund operation and ensures that a refund can be retried safely and only one refund will be actioned. Subsequent refund requests with the same amount and externalRef will respond with HTTP 200 OK.

Obtaining a Payment Request Id

Refunds are initiated using the id of the Payment Request . A patron should have either the id or the shortCode available. Merchants can obtain the id by looking the Payment Request up by shortCode.

POS systems or digital wallets that support transacting with Centrapay should make the id or shortCode fields discoverable through the user's transaction history, or through a paper receipt, so they can be used to negotiate refunds.

By Short Code

Call the Get Payment Request by Short Code endpoint using the Centrapay short code that the patron obtains from their paper receipt or digital wallet transaction history.

    sequenceDiagram
	autonumber

	participant P as Patron
	participant POS
	participant C as Centrapay

	P->>POS: Patron Presents Short Code
	POS->>C: Get Payment Request by Short Code
	POS->>C: Refund Payment Request
  

Refund Error Handling

There are a number of reasons why initiating a refund can fail. These are documented on the Refund Payment Request endpoint and should be communicated to the user.

Refunds that encounter unknown errors should be retried as per Merchant Integration Error Handling .

When retrying unknown errors is impossible, POS operators may need to select a different refund method.