Refunds a previous transaction.
This method issues a refund based on a previously authorized Sale transaction.
Debit card transactions are instant funds transfers. There is no block placed on the debit card, funds are immediately removed and sent to the merchant. Therefore, there is no ability to capture, void, or reverse debit transactions. You must use the Refund method to return funds to a customer's card. When performing a Refund, the MagneticStripe, EncryptedPIN, and KSN are required in addition to the PNRef parameter, which identifies the transaction you're issuing a refund for.
To process a refund, set MagneticStripe, EncryptedPIN, and KSN then call Refund with the PNRef parameter set to the PNRef returned in response from the transaction for which you wish to issue a refund. If you leave the TransactionAmount blank, the full amount of the original transaction will be refunded. However, you may issue a partial refund for any value up to the original sale amount. For example:
component.Card = new GlobalCard("9999999800002773=05121015432112345678"); component.EncryptedPIN = "623F36B53CC18393"; component.KSN = "000000008F000021"; component.Refund("123456"); // "123456" is the PNRef from the original transactionPartial Refund:
component.Card = new GlobalCard("9999999800002773=05121015432112345678"); component.EncryptedPIN = "623F36B53CC18393"; component.KSN = "000000008F000021"; component.TransactionAmount = "15.00"; // Original transaction was for $25.00, so this is a partial refund component.Refund("123456"); // "123456" is the PNRef from the original transaction
Note: Partial refunds are supported regardless of the time and date or batch status (open or closed). To perform a partial refund, pass any TransactionAmount that is less than the original transaction amount to the Refund transaction as per the example above.
.NET Standard Notes
To call this method in an asynchronous manner call RefundAsync instead. When the method completes (or an error is encountered) the RefundCompleted event will fire.