What this API does:
These APIs currently supports SWIFT and SEPA Payments.
These APIs currently supports Indicative and Agreed rate types.
This API lets you initiate a single immediate international 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/international-payment-consents
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/international-payment-consents
The API endpoint lets you ask Virgin Money to create a new international payment consent resource:
- The POST action tells Virgin Money that a international 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 international 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 'Client Credentials' grant.
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/international-payment-consents/{ConsentId}
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/international-payment-consents/{ConsentId}
Once the customer has authorized the international 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 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/international-payments
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/international-payments
Once the customer has authorized the international 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.
If rate type is’ Indicative’, after executing this endpoint, user shall login to bank website to accept the exchange rate for the transaction
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/international-payments
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/domestic-payment-consents
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.
Sandbox: cb.sandbox-api-nc.cybservices.co.uk/open-banking/v3.1/pisp/international-payments/{InternationalPaymentId}
Production: api.openbanking.virginmoney.com/open-banking/v3.1/pisp/international-payments/{InternationalPaymentId}
Check the status of the payment.
Before calling the API, you must have an access token issued by Virgin Money using 'Client Credentials' grant.
API calls
International Payments
Name | Description |
---|---|
OBWriteInternationalConsent3Param * (body) | Default { |
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) | A detached JOSE signature of the body of the payload. |
Responses
Code | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
201 | Created { #/definitions/OBWriteInternationalConsentResponse3OBWriteInternationalConsentResponse3{
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/OBWriteInternationalConsentResponse3OBWriteInternationalConsentResponse3{
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 |
---|---|
OBWriteInternational2Param * (body) | Default { |
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) | A detached JOSE signature of the body of the payload. |
Responses
Code | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
201 | Created { #/definitions/OBWriteInternationalResponse3OBWriteInternationalResponse3{
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 |
---|---|
InternationalPaymentId * string (path) | InternationalPaymentId |
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/OBWriteInternationalResponse3OBWriteInternationalResponse3{
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/OBWriteFundsConfirmationResponse1OBWriteFundsConfirmationResponse1{
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. |
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. |
[ Business, Correspondence, DeliveryTo, MailTo, POBox, Postal, Residential, Statement ]
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.
description: | Information that locates and identifies a specific address, as defined by postal services. |
AddressType | OBAddressTypeCodestring Identifies the nature of the postal address. Enum:[ Business, Correspondence, DeliveryTo, MailTo, POBox, Postal, Residential, Statement ] |
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. |
Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.
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".
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.
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 | {
|
OBWriteFundsConfirmationResponse1
Data* | {
| ||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||
Meta | #/definitions/MetaMeta{
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteInternationalConsentResponse3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Meta | #/definitions/MetaMeta{
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | #/definitions/LinksLinks{
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Meta | #/definitions/MetaMeta{
|
Data* | {
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteDomesticScheduledConsent3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteInternationalScheduled2
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBWriteInternationalScheduledConsent3
Data* | {
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Risk* | #/definitions/OBRisk1OBRisk1{
|
OBActiveCurrencyAndAmount_SimpleType
description: | Additional information that can not be captured in the structured fields and/or any other specific block. |
Having trouble?
Contact our dedicated team members via our ticketing system or via our support mailbox