Create recurring payment
Initiate payment based on an existing ACTIVE mandate.
Authorization
Bearer Bearer token using a JWT.
In: header
Path Parameters
Identifier of the mandate.
uuidHeader Parameters
Version of the API used. Currently, version 1 is the only version.
1Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://gateway.sandbox.volt.io/mandates/82f82950-8ece-4ae2-ac9d-46bffd1bedfb/payments" \ -H "X-Volt-Api-Version: 1" \ -H "Content-Type: application/json" \ -d '{ "currency": "AUD", "amount": 10000 }'{
"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"
}
}{
"code": "MISSING_HTTP_HEADER",
"message": "Missing \"X-Volt-Initiation-Channel\" HTTP header."
}{
"code": "UNAUTHORISED",
"message": "Unauthorised."
}{
"code": "ACCESS_DENIED",
"message": "Access denied."
}{
"code": "RESOURCE_NOT_FOUND",
"message": "Not found."
}{
"code": "IDEMPOTENCY_CONFLICT",
"message": "Idempontency key already used."
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Something went wrong. Please, contact support. TraceId: b8cfd344-093c-4b8c-8fd4-f0e406060c3c. Timestamp: 1723193467."
}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 |