Create recurring payment
Initiate payment based on an existing ACTIVE mandate.
BearerAuthorizationBearer <JWT>Bearer token using a JWT.
id*stringIdentifier of the mandate.
uuidIdempotency-Key*stringIt helps preventing duplicates in your POST requests.
It is recommend using a UUID for the key, however you may use any other unique identifier you choose.
length <= 64X-JWS-Signature*stringA detached-payload JWS (RFC 7515 compact serialization, RS256 only) computed over the raw request body, proving the request was authorised by the customer. See Signing requests for the signing procedure.
X-Volt-Api-Version*1Version of the API used. Currently, version 1 is the only version.
1application/json- body
currency*stringPayment currency. ISO 4217 format (3 uppercase letters).
"AUD""GBP"amount*integerPayment amount in minor units (e.g. cents).
0 < valuepaymentReference?stringUnique payment reference provided by the partner. Used for reconciliation.
Reference must contain only alphanumeric characters.
If value is not provided, it will be generated by Volt.
length <= 18internalReference?stringYour internal identifier for this transaction.
length <= 100communication?Partner communication settings.
Created - Payment request created.
application/json- response
PayTo recurring payment details.
id?stringPayment identifier.
uuidcurrency?stringPayment currency. ISO 4217 format (3 uppercase letters).
amount?integerPayment amount in minor units (e.g. cents).
paymentReference?stringPayment reference provided by the partner (or generated by Volt). Used for reconciliation, visible on the bank statement.
length <= 18internalReference?stringYour internal identifier for this transaction.
paymentSystem?"NPP_PAY_TO_AU"Payment system used for the transfer.
"NPP_PAY_TO_AU"nppPayToAU?NPP (New Payments Platform) transfer details. Present when paymentSystem is NPP_PAY_TO_AU.
payer?Payer details.
sender?|Source account (sender) details.
beneficiary?Target account (beneficiary) details.
device?Device used for payment creation.
status?stringPayment status.
"NEW_PAYMENT""APPROVED_BY_RISK""REFUSED_BY_RISK""BANK_REDIRECT""ADDITIONAL_AUTHORIZATION_REQUIRED""AUTHORISED_BY_USER""ERROR_AT_BANK""REFUSED_BY_BANK""DELAYED_AT_BANK""COMPLETED""NOT_RECEIVED""RECEIVED""FAILED""CANCELLED_BY_USER""ABANDONED_BY_USER""AWAITING_CHECKOUT_AUTHORISATION""ACCOUNT_SELECTION""REQUIRED_REDEEM""PAYOUT_INITIATED""SETTLED""UNKNOWN""PROVIDER_COMMUNICATION_ERROR"transferType?|Payment rail used for the transfer.
displayInfo?array<>Key-value pairs for display on checkout.
createdAt?stringPayment creation timestamp.
date-timeupdatedAt?|Last update timestamp.
date-timemandateId?|Identifier of the mandate used to initiate this payment. Present only for mandate-based (recurring) payments, null otherwise.
uuidpaymentInitiationFlow?Payment initiation flow. Drives the authorisation process.
curl -X POST 'https://gateway.sandbox.volt.io/mandates/497f6eca-6276-4993-bfeb-53cbbbba6f08/payments' \ -H 'Idempotency-Key: string' \ -H 'X-JWS-Signature: string' \ -H 'X-Volt-Api-Version: 1' \ -H 'Content-Type: application/json' \ -d '{ "currency": "AUD", "amount": 1}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "currency": "AUD", "amount": 10000, "paymentReference": "T1Qwerty", "internalReference": "H35X48Y4FWOD6G3S", "paymentSystem": "NPP_PAY_TO_AU", "nppPayToAU": { "type": "OTHER", "validityPeriod": 30, "additionalDescription": null, "accountIdentifiers": { "payId": "john@doe.com", "payIdType": "EMAIL" }, "ultimateBeneficiary": null }, "payer": { "reference": "JDOE-101", "firstName": null, "lastName": null, "organisationName": null, "email": null, "accountIdentifiers": { "payId": "john@doe.com", "payIdType": "EMAIL" } }, "sender": { "name": "John Doe", "accountIdentifiers": { "payId": "john@doe.com", "payIdType": "EMAIL" } }, "beneficiary": { "name": "Jane Doe", "accountIdentifiers": { "payId": "jane@doe.com", "payIdType": "EMAIL" } }, "device": { "ip": "192.168.0.1", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0", "fingerprint": "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" }, "status": "AUTHORISED_BY_USER", "transferType": null, "displayInfo": null, "mandateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2026-03-15T15:52:01+00:00", "updatedAt": "2026-03-15T15:52:01+00:00", "paymentInitiationFlow": { "status": "PROCESSING" }}Recall amendment request DELETE
Recall pending (`NEW` or `AWAITING_APPROVAL`) amendment.
Mandate status change notification Webhook
Sent to the notification URL provided during mandate creation. | Type | Description | |-------|-------------| | `mandate_requested` | Mandate has been proposed to the payer | | `mandate_authorised` | Payer authorised the mandate | | `mandate_declined` | Payer declined the mandate | | `mandate_authorisation_abandoned` | Mandate authorisation timed out | | `mandate_suspended` | Mandate was suspended | | `mandate_released` | Suspended mandate released back to `ACTIVE` | | `mandate_cancelled` | `ACTIVE` or `SUSPENDED` mandate was cancelled | | `mandate_expired` | Mandate reached end of validity | | `mandate_consumed` | `ONE_OFF` mandate was consumed | | `mandate_failed` | Mandate processing failed |