What this API does:
These APIs currently supports Bacs, Balance Transfers, CHAPS and Faster Payments.
This API lets you initiate a single future dated domestic payment and submit payment requests. It also let's you check the payment status.
Endpoint configuration
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/domestic-scheduled-payment-consents
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-scheduled-payment-consents
The API endpoint lets you ask Virgin Money to create a new domestic-scheduled-payment-consents resource:
- The POST action tells Virgin Money that a domestic schedule payment consent has been staged. At this point, it does not identify the customer to Virgin Money; the request payload may not contain information about the account to be debited.
- The endpoint lets you send a copy of the consent between the customer and you, to Virgin Money for the customer to authorise.
Virgin Money will create a domestic-scheduled-payment-consents resource and provide a unique ConsentId.
Before calling the API, you must have an access token issued by Virgin Money using a 'Client Credentials' grant.
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/domestic-scheduled-payment-consents/{ConsentId}
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-scheduled-payment-consents/{ConsentId}
Once the customer has authorized the domestic payment consent, you can submit the payment for processing:
- This request instructs Virgin Money to begin the payment journey. Virgin Money will normally execute the payment request immediately but this may not always be possible, for example, during busy periods
- You must ensure the Initiation and Risk sections of the payment match the corresponding sections of the payment consent resource. Any discrepancy will generate an error response and we will not process the request
Check the status of the domestic-scheduled-payment-consent
Before calling the API, you must have an access token issued by Virgin Money using 'Client Credentials' grant.
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/domestic-scheduled-payments
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-scheduled-payments
Once the customer has authorized the domestic scheduled payment consent, you can submit the payment for processing:
- This request instructs Virgin Money to begin the payment journey.
- The Initiation and Risk sections of the payment must match the corresponding sections of the payment consent resource. Any discrepancy will generate an error response and request will not be processed.
Before calling the API, you must have an access token issued by Virgin Money using 'Authorization Code' grant.
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/domestic-scheduled-payments/{DomesticPaymentId}
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-scheduled-payments/{DomesticPaymentId}
Check the status of the domestic scheduled payment.
Before calling the API, you must have an access token issued by Virgin Money using 'Client Credentials' grant.
API calls
Domestic Scheduled Payments
Name | Description |
---|---|
x-fapi-auth-date string (header) | The time when the PSU last logged in with the TPP. |
x-fapi-customer-ip-address string (header) | The PSU's IP address if the PSU is currently logged in with the TPP. |
x-fapi-interaction-id string (header) | An RFC4122 UID used as a correlation id. |
Authorization * string (header) | An Authorisation Token as per https://tools.ietf.org/html/rfc6750 Link opens in a new window |
x-idempotency-key * string (header) | Every request will be processed only once per x-idempotency-key. The |
x-jws-signature * string (header) | JOSE signature of the body of the payload. |
body * (body) | { |
Responses
Code | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
201 | Created { #/definitions/OBWriteDomesticScheduledConsentResponse3OBWriteDomesticScheduledConsentResponse3{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
400 | Bad request { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
401 | Unauthorized Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
403 | Forbidden { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
404 | Not found Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
405 | Method Not Allowed Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
406 | Not Acceptable Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
429 | Too Many Requests Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
500 | Internal Server Error { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
|
Name | Description |
---|---|
ConsentId * string (path) | ConsentId |
x-fapi-auth-date string (header) | The time when the PSU last logged in with the TPP. |
x-fapi-customer-ip-address string (header) | The PSU's IP address if the PSU is currently logged in with the TPP. |
x-fapi-interaction-id string (header) | An RFC4122 UID used as a correlation id. |
Authorization * string (header) | An Authorisation Token as per https://tools.ietf.org/html/rfc6750 Link opens in a new window |
Responses
Code | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
200 | OK { #/definitions/OBWriteDomesticScheduledConsentResponse3OBWriteDomesticScheduledConsentResponse3{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
400 | Bad request { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
401 | Unauthorized Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
403 | Forbidden { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
404 | Not found Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
405 | Method Not Allowed Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
406 | Not Acceptable Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
429 | Too Many Requests Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
500 | Internal Server Error { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
|
Name | Description |
---|---|
x-fapi-auth-date string (header) | The time when the PSU last logged in with the TPP. |
x-fapi-customer-ip-address string (header) | The PSU's IP address if the PSU is currently logged in with the TPP. |
x-fapi-interaction-id string (header) | An RFC4122 UID used as a correlation id. |
Authorization * string (header) | An Authorisation Token as per https://tools.ietf.org/html/rfc6750 Link opens in a new window |
x-idempotency-key * string (header) | Every request will be processed only once per x-idempotency-key. The |
x-jws-signature * string (header) | JOSE signature of the body of the payload. |
body * (body) | { |
Responses
Code | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
201 | Created { #/definitions/OBWriteDomesticScheduledResponse3OBWriteDomesticScheduledResponse3{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
400 | Bad request { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
401 | Unauthorized Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
403 | Forbidden { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
404 | Not found Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
405 | Method Not Allowed Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
406 | Not Acceptable Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
429 | Too Many Requests Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
500 | Internal Server Error { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
|
Name | Description |
---|---|
DomesticScheduledPaymentId * string (path) | DomesticScheduledPaymentId |
x-fapi-auth-date string (header) | The time when the PSU last logged in with the TPP. |
x-fapi-customer-ip-address string (header) | The PSU's IP address if the PSU is currently logged in with the TPP. |
x-fapi-interaction-id string (header) | An RFC4122 UID used as a correlation id. |
Authorization * string (header) | An Authorisation Token as per https://tools.ietf.org/html/rfc6750 Link opens in a new window |
Responses
Code | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
200 | OK { #/definitions/OBWriteDomesticScheduledResponse3OBWriteDomesticScheduledResponse3{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
400 | Bad request { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
401 | Unauthorized Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
403 | Forbidden { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
404 | Not found Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
405 | Method Not Allowed Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
406 | Not Acceptable Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
429 | Too Many Requests Headers:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
500 | Internal Server Error { #/definitions/OBErrorResponse1OBErrorResponse1{
Headers:
|
Models
All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00
description: | Links relevant to the payload |
Self* | string |
First | string |
Prev | string |
Next | string |
Last | string |
description: | Meta Data relevant to the payload |
TotalPages | integer($int32) |
FirstAvailableDateTime | ISODateTimestring($date-time) All dates in the JSON payloads are represented in ISO 8601 date-time format. |
LastAvailableDateTime | ISODateTimestring($date-time) All dates in the JSON payloads are represented in ISO 8601 date-time format. |
OBActiveCurrencyAndAmount_SimpleType
[ Business, Correspondence, DeliveryTo, MailTo, POBox, Postal, Residential, Statement ]
ErrorCode* | string Low level textual error code, e.g., UK.OBIE.Field.Missing |
Message* | string minLength: 1 maxLength: 500 A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future' |
Path | string minLength: 1 maxLength: 500 Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency |
Url | string URL to help remediate the problem, or provide more information, or to API Reference, or help etc |
description: | An array of detail error codes, and messages, and URLs to documentation to help remediation. | ||||||||
Code* | string minLength: 1 maxLength: 40 High level textual error code, to help categorize the errors. | ||||||||
Id | string minLength: 1 maxLength: 40 A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors. | ||||||||
Message* | string minLength: 1 maxLength: 500 Brief Error message, e.g., 'There is something wrong with the request parameters provided' | ||||||||
Errors* | [ minItems: 1#/definitions/OBError1OBError1{
|
OBExternalAccountIdentification4Code
Name of the identification scheme, in a coded form as published in an external list.
OBExternalFinancialInstitutionIdentification4Code
Name of the identification scheme, in a coded form as published in an external list.
[ Arrival, Execution ]
description: | Information that locates and identifies a specific address, as defined by postal services. |
PostCode | PostCodestring Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail. |
TownName | TownNamestring Name of a built-up area, with defined boundaries, and a local government. |
Country | string pattern: ^[A-Z]{2,2}$ Nation with its own government. |
AddressLine | [ minItems: 0 maxItems: 2string minLength: 1 maxLength: 70 Information that locates and identifies a specific address, as defined by postal services, presented in free format text. |
description: | Additional information that can not be captured in the structured fields and/or any other specific block. |
Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.
The date on which the scheduled payment will be made.All dates in the JSON payloads are represented in ISO 8601 date-time format.
All date-time fields in responses must include the timezone. An example is below:
2017-04-05T10:43:07+00:00
This is secondary identification of the account, as assigned by the account servicing institution.
This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).
Name of a built-up area, with defined boundaries, and a local government.
A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds".
OBActiveOrHistoricCurrencyAndAmount
description: | Amount of money associated with the charge type. |
Amount* | OBActiveCurrencyAndAmount_SimpleTypestring A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217. |
Currency* | ActiveOrHistoricCurrencyCodestring A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". |
Specifies which party/parties will bear the charges associated with the processing of the payment transaction.
[ BorneByCreditor, BorneByDebtor, FollowingServiceLevel, Shared ]
OBExternalLocalInstrument1Code
User community specific instrument.
Usage: This element is used to specify a local instrument, local clearing option and/or further qualify the service or service level.
OBExternalPaymentChargeType1Code
Charge type, in a coded form.
description: | The Risk section is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Payments. | ||||||||||||||||
PaymentContextCode | string Specifies the payment context Enum:[ BillPayment, EcommerceGoods, EcommerceServices, Other, PartyToParty ] | ||||||||||||||||
MerchantCategoryCode | string minLength: 3 maxLength: 4 Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction. | ||||||||||||||||
MerchantCustomerIdentification | string minLength: 1 maxLength: 70 The unique customer identifier of the PSU with the merchant. | ||||||||||||||||
DeliveryAddress | {
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteDomesticScheduledConsent3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteDomesticScheduledConsentResponse3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Meta | #/definitions/MetaMeta{
|
OBWriteDomesticScheduledResponse3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Meta | #/definitions/MetaMeta{
|
Having trouble?
Contact our dedicated team members via our ticketing system or via our support mailbox