Receiving credits to your Volt Account

Volt sends a notification to your webhook URL every time funds are credited to your Connect Account.

Webhook

Every time the new pay-in transfer will come into your account, a notification will be triggered at Volt and sent to the webhook URL provided during onboarding.

Notification Delivery

Volt will attempt to send notifications to the provided URL.  Once received you should return an HTTP 200 response code.

If a the response is not received, or it 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 no longer retry.

Notification 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.

Notification Headers

  • Content-Type
  • checksum

Notification 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"
  }
}

Notification 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 endpoint:

POST /notification/mock-provider-1

Our system acts as if funds were received to your account.

Volt can provide endpoint documentation on request if you wish to perform your own testing.

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"
    }
  ...
}