Skip to main content

Refund

Merchants can easily refund the customer with MobilePay Subscriptions. This functionality is used to refund previously captured one-off payments or subscriptions payments. A refund transaction can be made up to 90 days after payment execution. Refunds are not restricted by agreement status. Refunds can be made on a cancelled agreement. As long as the payment is successful and no older than 90 days, then it should work.

A refund can be executed if the Merchant's payment balance contains enough money to cover the refund. If the balance doesn’t cover the amount of the refund, the refund will fail. You can issue more than one refund against a payment_id, but you can’t refund a total greater than the original payment_id amount.

Quick handling of refund proves vital to ensure customer loyalty. Seen as the customer previously executed the payment via MobilePay, it makes sense that it also gets refunded via MobilePay. The reason being that the customer can see a receipt in the MobilePay app of the refund that corresponds to the original payment. The refund receipt is easily visible for the customer in the MobilePay app.

Full refund - 100% of the amount paid is returned to the payer. If the amount is not specified, the payment will be fully refunded Partial refund - An amount up to the net (the amount the merchant received) will be returned to the payer. Multiple partial refunds can be made. If the amount is specified, it has to be less than or equal to the amount paid. No refund otherwise. A payment can be refunded partially several times, until the amount is 0 (zero).

note

MP Subscriptions recurring or one-off payment refund CANNOT be made without original payment. Payment ID must be the same for both actions.

note

Refunds CANNOT be made for Instant transfer payments. Only Daily transfer payment can be refunded.

note

Refunds are sent to users receiving bank account, not the card/account the payment was done from.

Request a Refund​

Use the POST /api/providers/{providerId}/agreements/{agreementId}/payments/{paymentId}/refunds endpoint to request a Refund.

{
"amount": 10.99,
"status_callback_url" : "https://example.com",
"external_id": "ABC123"
}

Request parameters​

ParameterTypeRequiredDescriptionValid values
amountnumber(0.10)optionalThe requested amount to be returned.>= 0.10, decimals separated with a dot. If not specified, payment will be fully refunded.
status_callback_urlstringrequiredLink relation hyperlink reference.Merchant's url
external_idstringoptionalRefund's identifier on the merchant’s side. This will be included in the request body of the refund callback.

The POST /api/providers/{providerId}/agreements/{agreementId}/payments/{paymentId}/refunds service returns HTTP 202 and the response contains single value: a unique id of the newly created Refund.

HTTP 202 Response body example
{
"id": "263cfe92-9f8e-4829-8b96-14a5e53c9041",
"amount": 10.99,
"status_callback_url": "http://example.com",
"external_id": "ABC123"
}

Callbacks​

When the Refund's status changes from Requested we will do a callback to the callback address provided in request parameter status_callback_url.

Refund callback body example
{
"refund_id" : "4bb9b33a-f34a-42e7-9143-d6eabd9aae1d",
"agreement_id" : "1b08e244-4aea-4988-99d6-1bd22c6a5b2c",
"payment_id" : "c710b883-6ed6-4506-9599-490ead89525a",
"amount" : "10.99",
"currency" : "DKK",
"status" : "Issued",
"status_text" : null,
"status_code" : 0,
"external_id": "ABC123"
}
New StatusConditionWhen to expectCallback statusCallback status_textCallback status_code
IssuedThe Refund was successfully issuedRight after the refund request was receivedIssued
DeclinedIf Payment is fully refundedRight after the refund was requestedDeclinedPayment is fully refunded.60001
DeclinedIf the total sum of previous Refunds exceed the original payment amountRight after the refund was requestedDeclinedThe total sum of previous Refunds cannot exceed the original payment amount.60002
DeclinedWhen Refund was declined by systemRight after the refund was requestedDeclinedPayment was not found.60003
DeclinedWhen Refund was declined by systemRight after the refund was requestedDeclinedPayment cannot be refunded.60004
DeclinedA catch-all error code when Refund was declined by core system. E.g.: more than 2 decimals, receiver is not active, receiver's bank declined refund, etc.Right after or up to 3 h after refund was requestedDeclinedRefund was declined by system.60005
DeclinedWhen Refund was declined by system.Right after the refund was requestedDeclinedCannot refund payments that are older than 90 days.60006
DeclinedWhen Refund was declined by system.Right after the refund was requestedDeclinedCannot refund instantly transferred payments.60007
DeclinedWhen Refund was declined by system.Right after the refund was requestedDeclinedNo money in account.60008

Refund screens within mobile application​

Refund