Credit notifications

When a pay-in credits to your Volt account, a notification will be triggered and sent to the notifications web hook URL provided during onboarding.

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

Note that for credits received into your Volt Account (rather than a Virtual Account) the creditorDetails -> viban field will contain exactly the same iban as the creditorDetails -> account -> iban. 

Notification body
{
  "eventId": "02399d85-80b4-4945-8001-a75f0877432d",
  "notificationType": "credit_received",
  "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": "TEST",
      "line2": null,
      "line3": null,
      "line4": null
    },
    "externalId": "72de0d43-7b15-4b57-b1cb-88b8c72d70fe",
    "creditorDetails": {
      "creditorAccount": {
        "accountNumber": null,
        "financialInstitution": null,
        "country": null
      },
      "creditorName": null,
      "creditorAddress": null,
      "viban": "DE40202208000050888888",
      "account": {
        "iban": "DE40202208000050888888"
      }
    },
    "creditAmount": {
      "amount": "1000",
      "currency": "EUR"
    },
    "payerTransactionReference": null,
    "accountId": "7cdfabb8-34c9-465d-9093-1c822b9ff125",
    "externalTransactionReference": null,
    "identificationSetId": "ad07609f-a3fc-4354-b85e-546e52331524"
  }
}

Body fields

eventType uuid notification identifier

notificationType

string credit_received
timestamp timestamp timestamp when notification was created and sent
transactionDetails.id uuid Volt transaction identifier
transactionDetails.status string always SUCCESS for incoming funds
transactionDetails.errors array empty for incoming funds
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 payer name
transactionDetails.debtorDetails.debtorAddress JSON {
“line1”: “LIPOLOL 25”,
“line2”: “AMSTERDAM”,
“line3”: null
}
transactionDetails.debtorDetails.viban string payer virtual IBAN number (if available)
transactionDetails.debitAmount.amount integer 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 beneficiary name
transactionDetails.creditorDetails.creditorAddress JSON {
“line1”: “LIPOLOL 25”,
“line2”: “AMSTERDAM”,
“line3”: null
}
transactionDetails.creditorDetails.viban string virtual IBAN number
transactionDetails.creditAmount.amount integer amount in minor units
transactionDetails.creditAmount.currency string currency code

How to test incoming funds

On the sandbox environment, we can simulate incoming credits by using the following endpoint::

POST /notification/mock-provider-1

This will make our system process the provided payment as if it’s a credit that hit your account.

Example request

 

POST /notification/mock-provider-1
{
  "uniqueId": "{{$randomUUID}}", // needs to be unique with each request
  "amount": 1000,
  "iban": "{{$iban}}", // your sandbox iban or viban that you want the credit to be received t
  "reference": "credit testing 123",
  "currency": "EUR", // the currency should correspond to the account
  "valueDate": "2023-09-23T00:00:00+00:00", // please set to today
  "debtorAccount": {
      "account": "DE75512108001245126199",
      "financialInstitution": "SOGEDEFFXXX",
      "country": "DE"
  },
  "debtorName": "Company 123",
  "debtorAddress": {
        "line1": "25 Debtor Testing Str.",
        "line2": null,
        "line3": null
  },
  "creditorAccount": {
      "account": "{{iban}}", // your sandbox iban or viban that you want the credit to be received t
      "financialInstitution": "SXPYDKKK",
      "country": "DE"
  },
  "creditorName": "Your Company Name",
  "creditorAddress": {
    "line1": "25 Creditor Testing Str.",
    "line2": "South Park",
    "line3": "Colorado"
   },
   "masterAccountExternalId": "1278a27a-f771-4783-a108-8acc14737cd1"
}

Additional bank details

We can also, on request, provide additional details for the bank that the credit was received from.  This can be useful if you’re doing additional AML checks when you receive funds.  Please contact your account or implementation manager for further details, or email us at support@volt.io.

The bankDetails section appears within the transactionDetails section. 

Additional bankDetails section
{
  ...
  "transactionDetails": {
    ...
    "bankDetails": {
      "bankName": "REVOLUT BANK UAB",
      "branchName": "",
      "branchAddress": {
        "streetAddress1": "KONSTITUCIJOS AVE. 21B",
        "streetAddress2": "",
        "streetAddress3": "",
        "streetAddress4": "",
        "city": "VILNIUS",
        "zipCode": "08104",
        "country": "LITHUANIA"
      },
      "bic11": "REVOLT21XXX",
      "bic8": "REVOLT21"
    }
  ...
}