Payments or payouts from your Volt Account

You can use our generic /api/payouts endpoint in order to send any type of payment:

  • Refund/Payout
  • Settlement – has less restrictive anti-fraud monitoring rules

In order to use Settlements properly, provide an account IBAN to Volt. If the payment is sent to your own account, Volt can recognise this and apply less restrictive monitoring rules.

Request header for signing payments

As you’re using a Volt Account, you’ll need to digitally sign any payment request using an additional header. This is for regulatory compliance, so is a mandatory requirement for production payments. Note that you can only test this on production, as this header is ignored on sandbox.

Find out how to sign your request

Testing on sandbox

You can simulate payment flows on Sandbox using specific payout amounts:

On Sandbox environment we can use Mock Banking Provider to simulate various payout behaviours based on payout amount:

  • if amount is 20 you will receive payout_rejected and payout will be FAIL
  • if amount is 40 you will receive payout_rejected and payout will be FAIL
  • if amount is 60 you will not receive any notification and payout will be stuck in PENDING

If there is sufficient balance on the account, any other payment amount should result in SUCCESS.

Headers: authorization

Request

POST /api/payouts
{
    "amount": 1, //amount in minor units
    "currency": "EUR", //currency of the transfer
    "accountId": "{{accountId}}", //"volt account id" of the sender account, not to be confused by "Unique ID for API"
    "reference": "pay demo", //remittance information
    "creditorAccount": { //account details of the beneficiary account
        "iban": "DK6689000099105309", //either IBAN or the accountNumber and routing should be supplied
        "swiftBic": "SXPYDKKKXXX",
        "accountNumber": "12345678",
        "routing": "123456" // a region-specific bank routing code, in the UK this will be the sort code, in the USA a 9 digit routing / transit number, for Australia a BSB
    },
    "creditorName": "Example Firm Inc.", //beneficiary name, please use if you are sending a payment to an organisation. Either this field or creditorFirstName+creditorLastName are required.
    "creditorFirstName": "John" // Please provide the First and Last name of a creditor if it's an individual. This will help your payouts go faster through our compliance screening.
    "creditorLastName": "Blogs"
    "creditorAddress": "1 Street, ABC123 Berlin, DE", //beneficiary address
    "payerTransactionReference": "payerReference" //custom reference, unique!
}
Response - 201
{
    "message": "Payout request has been created successfully.",
    "id": "f8b4f0d3-5eba-462b-84eb-0a5203a8be3c" //Volt transaction ID
}

Any other HTTP code (40x , 50x) indicates that the payment request was not created (details will be provided in the ”message” field)

GET /api/payouts
[
    {
        "id": "d0aa3176-ea0f-44ab-a0eb-dcabc01f2bf2",
        "reference": "payment demo 2",
        "externalReference": null,
        "amount": "13",
        "currency": "EUR",
        "status": "completed",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": "2023-10-16 16:51:01",
        "instructedTimestamp": null
    },
    {
        "id": "bf0efb70-a8fd-432f-85f4-683191d70a94",
        "reference": "payment demo 1",
        "externalReference": null,
        "amount": "1",
        "currency": "EUR",
        "status": "completed",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": "2023-10-16 16:50:36",
        "instructedTimestamp": null
    },
    {
        "id": "b7d8f12a-82b5-4aae-99e2-0525b1ce3528",
        "reference": "payment demo 2",
        "externalReference": null,
        "amount": "20",
        "currency": "EUR",
        "status": "failed",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": null,
        "instructedTimestamp": null
    },
    {
        "id": "5148aff1-c0b8-4cc1-ba6f-e6c55db17c03",
        "reference": "payment demo 2",
        "externalReference": null,
        "amount": "60",
        "currency": "EUR",
        "status": "pending",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": null,
        "instructedTimestamp": "2023-10-16 16:52:41"
    },
    {
        "id": "a1b6df1c-0bc0-4b4c-aad3-6d7ddb266802",
        "reference": "payment demo 2",
        "externalReference": null,
        "amount": "13",
        "currency": "EUR",
        "status": "completed",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": "2023-10-16 16:51:06",
        "instructedTimestamp": null
    },
    {
        "id": "12b7a711-b1b3-435e-b38a-6f3728032784",
        "reference": "payment demo 2",
        "externalReference": null,
        "amount": "20",
        "currency": "EUR",
        "status": "failed",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": null,
        "instructedTimestamp": null
    },
    {
        "id": "b0d8cb03-2276-45b9-b402-841dd3a4d68d",
        "reference": "payment demo 2",
        "externalReference": null,
        "amount": "40",
        "currency": "EUR",
        "status": "rejected",
        "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
        "creditorAccount": {
            "bic": "RABONL2UXXX",
            "iban": "NL11RABO4097012428",
            "accountName": "John Bloggs",
            "accountAddress": "1 Street, ABC123 Berlin, DE"
        },
        "creditorName": "John Bloggs",
        "creditorAddress": "1 Street, ABC123 Berlin, DE",
        "valueData": null,
        "instructedTimestamp": null
    }
]
GET /api/payouts/{payoutId}
{
    "id": "d0aa3176-ea0f-44ab-a0eb-dcabc01f2bf2",
    "reference": "payment demo 2",
    "externalReference": null,
    "amount": "13",
    "currency": "EUR",
    "status": "completed",
    "accountId": "5aab1a5d-1647-45a3-956e-ce73ac813908",
    "creditorAccount": {
        "bic": "RABONL2UXXX",
        "iban": "NL11RABO4097012428",
        "accountName": "John Bloggs",
        "accountAddress": "1 Street, ABC123 Berlin, DE"
    },
    "creditorName": "John Bloggs",
    "creditorAddress": "1 Street, ABC123 Berlin, DE",
    "valueData": "2023-10-16 16:51:01",
    "instructedTimestamp": null
}

Webhook

Once created, payment request is being processed by Volt and Volt banking partner. Notification is sent when the processing is complete.

Notification body
{
  "notificationType": "payout_completed",
  "timestamp": "2023-02-21T22:10:43+0000",
  "transactionDetails": {
    "id": "c3000ea5-05a9-4d1a-816f-26b570f6d70e",
    "status": "SUCCESS",
    "errors": [],
    "debtorDetails": {
      "debtorAccount": {
        "accountNumber": null,
        "financialInstitution": null,
        "country": null
      },
      "debtorName": null,
      "debtorAddress": null,
      "viban": "NL31HKOT5224030013"
    },
    "debitAmount": {
      "amount": "10",
      "currency": "EUR"
    },
    "date": "2023-02-21T22:10:40+00:00",
    "remittanceInfo": {
      "line1": "pay demo",
      "line2": null,
      "line3": null,
      "line4": null
    },
    "externalId": null,
    "creditorDetails": {
      "creditorAccount": {
        "accountNumber": "DK6689000099105309",
        "financialInstitution": null,
        "country": null
      },
      "creditorName": "John Bloggs",
      "creditorAddress": "1 Street, ABC123 Berlin, DE",
      "viban": null
    },
    "creditAmount": {
      "amount": "10",
      "currency": "EUR"
    }
  }
}

Payout Confirmation

Sent when the payment has been confirmed by the banking partner.

"notificationType": "payout_completed",
"transactionDetails"."status": "SUCCESS",

Payout Failure or Rejection

Sent when the payment fails to process at Volt.

"notificationType": "payout_rejected",
"transactionDetails"."status": "FAIL",