Reversal notifications

Sometimes a pay-in credit to your Volt account could be reversed automatically (returned back to sender). The reversal could happen weeks or even months after receiving a pay-in credit. When this happens a notification can be triggered and sent to the notifications web hook URL provided during onboarding.

The credit_reversed notification described below is not sent by default. If you wish to receive them, you need to opt-in. Please contact your account or implementation manager for further details, or email us at support@volt.io.

Retry strategy

Once received you should return an HTTP 200 response code.

If a response is not received, or the code you return is not 200, we will retry 10 times, with an incremental delay.  After the first failure, our support team will be notified and will be in contact with you.  After the 10th failure, Volt will stop retrying.

Security

A checksum is provided in the notification headers. It is calculated using your notification secret, and the notification body. This way you can be sure that the notification has been sent by Volt, and has not been modified.

Headers

  • Content-Type
  • checksum

Body

Notification body
{
  "eventId": "02399d85-80b4-4945-8001-a75f0877432d",
  "notificationType": "credit_reversed",
  "timestamp": "2024-04-08T08:00:00+00:00",
  "transactionDetails": {
    "id": "f267bfe2-a17c-41b0-895d-e2f28ff12664",
    "status": "SUCCESS",
    "errors": [],
    "debtorDetails": {
      "debtorAccount": {
        "accountNumber": "XXXXXXXXXXXXXXX",
        "financialInstitution": "REVOLT21XXX",
        "country": "LT"
      },
      "debtorName": "Adam Smith",
      "debtorAddress": null,
      "viban": null
    },
    "debitAmount": {
      "amount": "1000",
      "currency": "EUR"
    },
    "date": "2024-04-08T08:00:00+00:00",
    "remittanceInfo": {
      "line1": null,
      "line2": null,
      "line3": null,
      "line4": null
    },
    "externalId": "72de0d43-7b15-4b57-b1cb-88b8c72d70fe",
    "creditorDetails": {
      "creditorAccount": {
        "accountNumber": null,
        "financialInstitution": null,
        "country": null
      },
      "creditorName": "John Doe",
      "creditorAddress": null,
      "viban": null,
      "account": {
        "iban": null
      }
    },
    "creditAmount": {
      "amount": "1000",
      "currency": "EUR"
    },
    "payerTransactionReference": null,
    "accountId": "c8dc60d3-6955-4fc4-a9f0-3aa2fb050e6e",
    "customerId": "208a3df4-b37b-469f-9cdb-5c9accdeb6bd",
    "bankDetails": null,
    "externalTransactionReference": "TESTTRX123",
    "identificationSetId": null,
    "quoteId": null,
    "exchangeRate": 1.0,
    "originalCreditId": "f72fe6a7-6a6c-4110-81d2-eb9ae15b5b58",
    "reversalDetails": []
  }
}

Body fields

eventType uuid notification identifier

notificationType

string credit_reversed
timestamp timestamp timestamp when notification was created and sent
transactionDetails.id uuid Volt reversal identifier
transactionDetails.status string always SUCCESS
transactionDetails.errors array empty for reversals
transactionDetails.debtorDetails.debtorAccount.accountNumber string IBAN or Account Number
transactionDetails.debtorDetails.debtorAccount.financialInstitution string SWIFT/BIC or Sort code
transactionDetails.debtorDetails.debtorAccount.country string country code
transactionDetails.debtorDetails.debtorName string original credit beneficiary name
transactionDetails.debtorDetails.debtorAddress JSON {
“line1”: “LIPOLOL 25”,
“line2”: “AMSTERDAM”,
“line3”: null
}
transactionDetails.debtorDetails.viban string virtual IBAN number (if available)
transactionDetails.debitAmount.amount string amount in minor units
transactionDetails.debitAmount.currency string currency code
transactionDetails.date timestamp  
transactionDetails.remittanceInfo JSON {
“line1”: “Description that Shopper provides 35 max”,
“line2″: ” in each line Ref$444231 can be more”,
“line3”: null,
“line4”: null
}
transactionDetails.externalId uuid transaction identifier at banking provider (if available)
transactionDetails.creditorDetails.creditorAccount.accountNumber string IBAN or Account Number
transactionDetails.creditorDetails.creditorAccount.financialInstitution string SWIFT/BIC or Sort code
transactionDetails.creditorDetails.creditorAccount.country string country code
transactionDetails.creditorDetails.creditorName string original credit payer name
transactionDetails.creditorDetails.creditorAddress JSON {
“line1”: “LIPOLOL 25”,
“line2”: “AMSTERDAM”,
“line3”: null
}
transactionDetails.creditorDetails.viban string virtual IBAN number (if available)
transactionDetails.creditAmount.amount string amount in minor units
transactionDetails.creditAmount.currency string

currency code

payerTransactionReference string

always null for reversal

accountId uuid

Volt account unique ID

customerId uuid

Volt merchant unique ID

bankDetails string

always null for reversal

externalTransactionReference string

transaction reference given by external banking provider

identificationSetId string

always null for reversal

quoteId string

always null for reversal

exchangeRate float

always 1.0 for reversal

originalCreditId uuid

Volt credit ID which is being reversed

reversalDetails JSON

[
{
“code”: “AC1”,
“description”: “No funds”
}
]