What this API does:
When using our Sandbox, we have a predefined, pre-authorised set of consents to be used within the environment. The predefined authorisation code is provided in the test data.
These APIs currently supports Bacs, Balance Transfers, CHAPS and Faster Payments.
This API lets you initiate a single immediate domestic payment and submit payment requests. It also lets you check the payment status and confirm funds.
Endpoint configuration
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/domestic-payment-consents
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payment-consents
The API endpoint lets you ask Virgin Money to create a new domestic payment consent resource:
- The POST action tells Virgin Money that a domestic 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 payment consent resource and provide a unique ConsentId for the resource.
Before calling the API, you must have an access token issued by Virgin Money using a 'Client Credentials' grant.
Sandbox: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payment-consents/{ConsentId}
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payments
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
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-payments
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payments
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
Before calling the API, you must have an access token issued by Virgin Money using 'Authorization Code' grant.
Sandbox: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payments
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payments/{DomesticPaymentId}
Check the status of the payment.
Before calling the API, you must have an access token issued by Virgin Money using 'Client Credentials' grant.
Sandbox: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payments/{DomesticPaymentId}
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payment-consents/{ConsentId}/funds-confirmation
Check if sufficient funds are available to make the payment.
Before calling the API, you must have an access token issued by Virgin Money using 'Authorization Code' grant type.
API calls
Domestic 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. |
Content-Type * string (header) | application/json |
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/OBWriteDomesticConsentResponse3OBWriteDomesticConsentResponse3{
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. |
ConsentId * string (path) | ConsentId |
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/OBWriteDomesticConsentResponse3OBWriteDomesticConsentResponse3{
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. |
Content-Type * string (header) | application/json |
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/OBWriteDomesticResponse3OBWriteDomesticResponse3{
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 |
---|---|
DomesticPaymentId * string (path) | DomesticPaymentId |
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/OBWriteDomesticResponse3OBWriteDomesticResponse3{
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 | Domestic Payment Consents Read { #/definitions/OBErrorResponse1OBErrorResponse1{
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
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".
Identifies a subdivision of a country such as state, region, county.
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.
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.
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 | CountryCodestring Nation with its own government. |
AddressLine | [ maxItems: 2 minItems: 0string minLength: 1 maxLength: 70 Information that locates and identifies a specific address, as defined by postal services, presented in free format text. |
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 | {
|
description: | Additional information that can not be captured in the structured fields and/or any other specific block. |
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteDomesticConsentResponse3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Meta | #/definitions/MetaMeta{
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Meta | #/definitions/MetaMeta{
|
OBWriteFundsConfirmationResponse1
Data* | {
| ||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||
Meta | #/definitions/MetaMeta{
|
Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.
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).
Identification of a sub-division of a large organisation or building.
Name of a built-up area, with defined boundaries, and a local government.
description: | The Risk section is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info. |
Having trouble?
Contact our dedicated team members via our ticketing system or via our support mailbox