ONE API(v1.0)

Download OpenAPI specification:Download

ONE Backend Team:[email protected]

Introduction

Welcome to the ONE API documentation. The guidance provided here is specifically designed to provide you with access to our global payments platform, allowing you to move money seamlessly around the world via our network of global banking partners.

ONE Group was established in 2017 to provide a one-stop financial services solution to pioneers within high-risk industries across its crypto-trading and global multi-bank payments platform.

Contents

Supported destinations and currencies The section shows payments in which currencies and in which destinations are available from which types of accounts.

Work with accounts The section describes the types of accounts within ONE, and how to address them while working with the API.

Payment types and transfers The section describes categories of payments and transfers within ONE, and how to choose the best for your task.

How to query Transaction historyA scenario for getting transactions history for an account.

How to submit a paymentA scenario for sending a payment.

How to submit an internal transferA scenario for sending an internal transfer.

How to access ONE APIThe section gives instructions on how to obtain the credentials needed to use the ONE API, and connect our API sandbox.

Authentication This section explains how authentication works with the API, and how to get authentication data.

Veirfying callback signatures This section explains how to verify signatures included with payments' callbacks.

Accounts The section contains a description of API methods for working with accounts.

Payments The section contains a description of API methods for working with payments and transfers.

Transactions The section contains a description of API methods to get information about transactions.

Supported destinations and currencies

ONE issues accounts in multiple currencies, and enable outbound payments in a large volume of currencies. Full details of supported currencies and payment corridors can be foundhere .

Work with accounts

ONE issues two types of accounts:

  1. GBP domestic accounts,
  2. International accounts.

GBP Domestic accountsare UK-issued accounts, in GBP only. GBP domestic accounts support payments via Faster Payments, CHAPS and transfers between GBP domestic accounts, either under the ownership of a single customer or other customers.

GBP domestic accounts have the following identifiers:

  • international bank account number (IBAN),
  • AccountNumber and SortCode,
  • Account ID is a GUID uniquely identifying a given account in the ONE network.

You can get the ONEAccount IDby:

International accountsare issued in GBP, USD and EUR. ONE international accounts support payments via SWIFT, SEPA (EUR in EEA only) and transfers between accounts, either under the ownership of a single customer or other customers.

ONE international accounts have the following identifiers:

  • International bank account number (IBAN),
  • Account ID is a GUID uniquely identifying a given account in the ONE network.

You can get the ONEAccount IDby using theGetAccountsmethod.

Payment types and transfers

International payment options

SWIFT:SWIFT payments exist within the SWIFT international payment network. The SWIFT payment network is used to send and receive international electronic payments in various currencies.

SEPA:The SEPA is a pan-European network that allows you to send and receive payments in euros EUR between two cross-border bank accounts in the eurozone. The network is spread within the EEA area, Andorra, Monaco, San Marino, Vatican City State, Mayotte, Saint-Pierre-et Miquelon, Guernsey, Jersey and Isle of Man.

GBP domestic payment options

Faster Payments:This can only be used for transactions within the UK for GBP payments. Faster Payments are subject to an upper limit of £250,000. Faster Payments can be completed 7 days a week, 365 days a year, with transactions being completed within 20 minutes.

CHAPS:This can only be used for transactions within the UK for GBP payments. CHAPS have no upper or lower limit, but transactions can only be completed between Monday-Friday, 8 am-17:00 GMT and not on bank holidays. Transactions typically arrive within a day of being processed.

Outbound Payments & Transfers Options

Transfers

Transfers allow customers to make payments from one domestic account to another domestic account or one international account to another international account. In addition, transfers between international accounts can take advantage of our FX solution to change currencies at a competitive rate.

Transfers between domestic accounts are always like-for-like transactions.

Technical implementation of payments

When a payment is initiated, it exists in an initial statusUnknown,the payments service then carries out balance checks against the account (for the transaction value and the associated fee), and a payment transaction will be created, and a payment fee transaction is created.

When a payment is initiated, it exists in an initial statusUnknown,the payments service then carries out balance checks against the account (for the transaction value and the associated fee), and a payment transaction will be created, and a payment fee transaction is created.

At this phase, the transaction exists only with the ONE platform, but the platform can be interrogated, and the transaction will be visible. Two transactions will exist representing the transaction and the fee, they will have separate IDs, and we also see that the payment is in thePendingstatus.

Then the payment goes through other statuses, where it will send the actual transactions to the bank, wait for their processing, then send the fee, wait for the fee to be processed, and at the very end will see that the payment has become in thecompletedPayment(completedTransferfor internal transfers) status.

All this time, the API user will pull the API and see that the payment is in some intermediate state, and so on until he sees that the payment is completed.

At the same time, the user can request details from the API for individual transactions in the payment, see how much money was sent and where, and the state of the payment.

payment_statuses

How to query Transaction history

How to query Transaction history

  1. UseGetAccountscall to retrieve the account details for the connected customer.
  2. From the return list select theIBANoraccountIDfor the required account.
  3. SubmitGetTransactionsusing the requiredaccountID orIBAN
    • the return set can be limited by a combination of the query parameters,
    • pagination for the response can also be configured.

How to submit a payment

How to submit a payment

  1. UseGetAccountscall to retrieve the account details for the connected customer.
  2. From the return list select theIBANoraccountIDfor the required source account (i.e. which account will the funds be sent from).
  3. Gather the required information for the required payment type (SWIFT, SEPA) as per the specification.
  4. For a SEPA payment submit acreateSEPApaymentcall using the source account and defined information.
  5. This will return apaymentIDfor the submitted payment.
  6. UseGetPaymentByIdcall to check the status of the payment until it reaches a final status (COMPLETE,REJECTED).

How to submit an internal transfer

How to submit an internal transfer

  1. UseGetAccountscall to retrieve the account details for the connected customer.
  2. From the return list select theIBANoraccountIDfor the required source account (i.e. which account will the funds be sent from) and also the accountID for the destination account.
  3. Gather the required information for the required transfer as per the specification.
  4. Submit the transfer using theCreateInternalTransfercall.

How to access ONE API

We provide a sandbox environment for you to work in and certify ahead of configuring your production API access. The process is as follows:

  1. Request access to the ONE API Sandbox environment.
  2. Configure access to the sandbox environment.
  3. Customer build and test cycle to integrate to the APIs.
  4. Pass certification by ONE (validate calls are as per specification and usage is as expected).
  5. You get access provided to production APIs.

NOTE: This assumes the customer organisation has passed all the required KYC checks.

How to access the ONE API Sandbox

You can use the ONE API Sandbox to test your integration to the ONE API.

Access and authorisation mechanisms processes are standard across the sandbox and production environments.

All transactions in the sandbox environment are simulated.

ONE API Authentication requires both OAuth2 authentication and ONE custom authentication.

To obtain this, please:

  • send an email with a request to[email protected];
  • the email should contain:
    • name of your organisation,
    • email that will be the identifier of the organisation when accessing the API;
  • you will receive the details necessary to connect the API to the specified email;
  • at the same time, we will create an account for this email in the ONE authentication system, and you will receive an email with links and prompts to set a password for this account.

The next step will be for the customer to configure access as described in the authentication section describedAuthentication.

Crypto Payment Gateway specification

What is Crypto Payment Gateway

The crypto payment gateway facilitates the acceptance of cryptocurrency payments. It also involves submitting transactions, querying information, or accessing various blockchain functionalities.

Overview

The Crypto Gateway service is designed to provide a seamless and secure gateway for handling cryptocurrency transactions for your merchant. This service facilitates the integration and management of cryptocurrency payments, ensuring a smooth user and merchant experience.

Getting Started

To initiate your integration successfully, follow these steps:

  1. Ensure that your Organisation has been onboarded by the ONE.io team.
  2. Ensure that your Organisation has API access enabled.
  3. Obtain access to the ONE API Sandbox environment for testing and developing your integration in a controlled environment before going live.
  4. Generate a JWT (JSON Web Token) to authenticate your API requests securely. This token serves as a means to verify your application's identity when interacting with the ONE API.
  5. Implement the necessary mechanisms to verify callback signatures. This step ensures the integrity and authenticity of callbacks received from ONE.io.
  6. Confirm that the Crypto Gateway and Crypto Trading services are enabled for your Organisation to leverage its features.

By completing these steps, you'll establish a strong foundation for a successful integration with ONE.io. Refer to the detailed documentation for each step to ensure a smooth setup process. Our support team is ready to assist you with any issues or questions.

Authentication

JWT token generation

After registering the administrator user record at ONE Platform the invitation email will be send to that email with first login link. Set the user password.

Bearer

Enter JWT Bearer tokenonly

Security Scheme TypeHTTP
HTTP Authorization Schemebearer
Bearer format"JWT"

Partner

The partner encrypted token

Security Scheme TypeAPI Key
Headerparameter name:X-Partner-Authorization

Requesting JWT token

After registering the administrator user record at ONE Platform the invitation email will be send to that email with first login link. Set the user password.

To generate the JWT token use thePOST /auth/tokenAPI. Pass in the email and password of your administrator account.

Example:

POST/api/v1/auth/token HTTP/1.1
Host:integration-api.uk-sbx-1.credis.tech
Content-Type:application/json
Content-Length:65

{
"email":"[email protected]",
"password":"Example"
}

Response will contain the JWT token valid for 1 hour. After token expiration just request the new one.

Custom auth token generation

Encryption keys will be provided by the ONE support team to generate the custom auth payload. The encryption key is 32 bytes long and is encoded in Base64.

Generation of token consists of the following steps:

  1. JSON payload generation
  2. Payload encryption
  3. Encoding binary payload to Base64

JSON payload generation

The API is being invoked on behalf of a specific customer user, therefore user identification is required.

There is a special case with master customers which are allowed to make requests on behalf of their subsidiary customers as configured in the partner auth key. For such case, the additionalsubsidiary_customer_idparameter should be provided in the payload.

Generate JSON as follows:

{
user_id="c28bd88a-903d-4080-b1f1-0fd0ac0aec25",
email="[email protected]",
created_date="2022-05-13T13:45:22Z",
first_name="Brian",
last_name="Ferry"
}
Field Required Description
user_id true Customer user's unique ID. API is being used on behalf of given user.
email true Customer user's email.
created_date true The date and time the customer user was created. Should be in ISO 8601 format.
first_name true Customer user's first name.
last_name true Customer user's last name.
subsidiary_customer_id false The subsidiary customer's id to make api calls on behalf on.

Payload encryption

Encryption requires utilization ofAES-GCM-SIVcipher: Advanced Encryption Standard (AES) key to be used with the Galois/Counter Mode (GCM) mode of operation.

The encryption goes as follows:

  • Generate the 12 bytes cryptographicNonce.
  • Allocate 16 bytes for generatedTag.
  • Encode the JSON payload asUTF-8bytes. Allocate the same amount of bytes forCiphertext.
  • Perform the encryption.
  • Allocate the resulting buffer, length must be the sum ofCiphertextlength,Noncelength andTaglength.
  • Copy to allocated buffer, in this specific order:
    • Noncebuffer.
    • Ciphertextbuffer, starting at the end ofNonce.
    • Tagbuffer, starting at the end ofCiphertext.

Refer to example encryption helper class, written in C#:

publicclassCryptoHelpers
{
privateconstintTagLength=16;
privateconstintNonceLength=12;

publicstaticbyte[]EncryptAesGcm(byte[]key,byte[]plaintext)
{
varaes=newAesGcm(key);

varnonce=RandomNumberGenerator.GetBytes(NonceLength);

varciphertextBuffer=newbyte[plaintext.Length];
vartagBuffer=newbyte[TagLength];

try
{
aes.Encrypt(nonce,plaintext,ciphertextBuffer,tagBuffer);
}
catch(CryptographicExceptionex)
{
thrownewCryptoException("Failed to encrypt payload",ex);
}

varresultBuffer=newbyte[NonceLength+ciphertextBuffer.Length+TagLength];
nonce.CopyTo(resultBuffer,0);
ciphertextBuffer.CopyTo(resultBuffer,NonceLength);
tagBuffer.CopyTo(resultBuffer,NonceLength+ciphertextBuffer.Length);

returnresultBuffer;
}
}

Ciphertext encoding

The resulting ciphertext from previous step is encoded in Base64 encoding.

Making requests

To make requests put the JWT token intoAuthorizationheader withBearerscheme, and custom auth token intoX-Partner-Authorizationheader.

For example, request to get all accounts registered to the customer would look like:

GET/api/v1/accounts?sortCode=041377&accountNumber=00000002HTTP/1.1
Host:integration-api.uk-sbx-1.credis.tech
Authorization:Bearer eyJraWQiOiJfEXAMPLEHDW57H9yVFUWqGPJXe0K01V05Js86nkLngw
X-Partner-Authorization:M90h61elLsEXAMPLEEUqhV4INebu67gw==

Verifying callback signatures

ONE will always sign the webhook events it sends to your endpoints. Signature is included inX-Signatureheader. This allows you to verify that the callback originates from ONE.

The secret key to verify signatures will be provided by ONE support team. It is a separate secret, hence not be confused with the key used for generation of authentication token.

ONE generates signatures using a hash-based message authentication code (HMAC) withSHA-256hash function.

Step 1. Extract the signature from header

The signature is in hexadecimal string format. For example for a signature like:

X-Signature:abcdef...

the deserialized signature would have this value:

byte[]signatureBytes=newbyte[]{0xab,0xcd,0xef,...};

Step 2. Determine the expected signature

Extract the callback's payload bytes.

Example code in C# can be used to calculate the signature for given payload and secret.

publicbyte[]CalculateSignature(byte[]payload,byte[]secret)
{
usingvarhmacSha=newHMACSHA256(secret);
varhashBytes=hmacSha.ComputeHash(payload);
returnhashBytes;
}

Step 3. Compare the signatures

Compare the signature received in callback inX-Signatureheader with expected signature.

Accounts

Actions with accounts

Get accounts

Get all accounts of the authorized customer. Allows a user to get all customer's accounts or get a specific account by IBAN or a combination of an AccountNumber and SortCode in a bank. Call without any account identifier returns all accounts.

Authorizations:
queryParameters
iban
string
Example:iban=GB98 MIDL 0700 9312 3456 78

The IBAN of an account to get. When present, AccountNumber and SortCode should be null.

accountNumber
string
Example:accountNumber=43982461

The account number of an account to get. Should be passed together with SortCode only. Can contain up to 8 digits.

sortCode
string
Example:sortCode=017983

The sort code of an account to get. Should be passed together with AccountNumber only. Can contain from 2 to 6 digits.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Bank account

Creates accounts for work inside the Great Britain or International one.

Authorizations:
Request Body schema:

New account request body

type
required
string(WebAPI.OpenBanking.Models.Requests.v1.Accounts.AccountType)
Enum:"international""domestic"
currency
required
stringnon-empty
Enum:"AUD""EUR""USD""GBP""DKK""HKD""NOK""SEK""SGD"

The currency of an account

isPrimary
boolean

Is the new account should be set as Primary

Responses

Request samples

Content type
{
  • "type":"domestic",
  • "currency":"GBP",
  • "isPrimary":false
}

Response samples

Content type
application/json
{
  • "id":"71bb50a6-6801-46f8-bfe0-b380986de291",
  • "iban":"GB95BARC20037854846369",
  • "accountNumber":"54846369",
  • "sortCode":"200378",
  • "bic":"CLRBGB22XXX",
  • "isPrimary":false
}

Get account by ID

Returns information about an account by Account ID in ONE platform.

Authorizations:
pathParameters
accountId
required
string<uuid>

The account id

Responses

Response samples

Content type
application/json
{
  • "id":"93a6096c-d6de-4b95-ad51-16b72f5addd0",
  • "iban":"GB09BARC20040196834832",
  • "currency":{
    },
  • "balance":1.2,
  • "availableBalance":1.2,
  • "pendingFunds":0,
  • "bankId":"b8eb7867-fd92-4060-a2a0-9963777d9875",
  • "isPrimary":true,
  • "status":"active"
}

Set account as primary

Sets the account by received id as primary.

Authorizations:
pathParameters
accountId
required
string<uuid>

Account to set as primary id

Responses

Auth

Authentication actions

Get access token

Exchange the integration customer email and password for access token. Pass this token withAuthorizationheader when executing any requests to API.

Authorizations:
Request Body schema:
email
required
string<email>non-empty

Admin email

password
required
stringnon-empty

Admin password

Responses

Request samples

Content type
{}

Response samples

Content type
application/json
{
  • "accessToken":"string"
}

CryptoPaymentGateway

Crypto Payments Gateway operations

Get active deposit addresses for specific assets and networks.

Authorizations:
pathParameters
ticker
required
string

The ticker of the crypto asset.

queryParameters
network
string(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)
Enum:"erc20""trc20"

The blockchain network.

Responses

Response samples

Content type
application/json
{
  • "asset":{
    },
  • "address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj64"
}

Create a reusable deposit address for a specific asset.

Authorizations:
Request Body schema:
ticker
string
network
string(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)
Enum:"erc20""trc20"

Responses

Request samples

Content type
{
  • "ticker":"USDT",
  • "network":"trc20"
}

Response samples

Content type
application/json
{
  • "asset":{
    },
  • "address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj64"
}

Get transaction by transaction id or hash.

Authorizations:
pathParameters
transactionIdOrHash
required
string

The transaction id of blockchain transaction hash.

queryParameters
network
string(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)
Enum:"erc20""trc20"

The blockchain network.

Responses

Response samples

Content type
application/json
{
  • "transactionId":"3b06a494-04ad-4155-9390-f165c4104d8c",
  • "status":"confirming",
  • "transactionHash":"b89a963a1494a6b5c163342a4770e8ca927575ce32e0f199132887140217c60c6",
  • "type":"deposit",
  • "asset":{
    },
  • "amount":10000,
  • "sourceAddress":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj64",
  • "destinationAddress":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj61",
  • "createdDate":"2023-11-16T17:20:11Z"
}

Get crypto transactions.

The request without parameters returns the whole list of crypto transactions. But it can be filtered and paginated. All specified criteria will return intersections of data.

Authorizations:
queryParameters
createTimeFrom
string<date-time>
Example:createTimeFrom=2024-05-16T19:08:12.2734796Z

Specifies the beginning of the time range filter for order creation.

createTimeTo
string<date-time>
Example:createTimeTo=2024-05-16T19:08:12.2734796Z

Specifies the ending of the time range filter for order creation.

amountFrom
number<double>

Specifies the minimum transaction amount in the asset currency.

amountTo
number<double>

Specifies the maximum transaction amount in the asset currency.

tickers
Array ofstringsunique

The ticker of the crypto asset.

networks
Array ofstrings(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)unique
ItemsEnum:"erc20""trc20"

The blockchain network.

statuses
Array ofstrings(WebAPI.OpenBanking.Models.Enums.TransactionStatus)unique
ItemsEnum:"pending""confirming""completed""rejected"

Transaction statuses.

types
Array ofstrings(WebAPI.OpenBanking.Models.Enums.TransactionType)unique
ItemsEnum:"deposit""withdrawal""cryptoTransfer"

Transaction types.

transactionId
string<uuid>

The transaction id.

transactionHash
string

The transaction hash.

sourceAddress
string

The sending address from which the transaction is initiated.

sourceTag
string

The source address tag.

destinationAddress
string

The destination address is the receiving address where the funds are intended to be delivered.

destinationTag
string

The destination address tag.

pageNumber
number<double>[ 0.. 2147483647 ]
pageSize
number<double>[ 0.. 2147483647 ]

Responses

Response samples

Content type
application/json
{
  • "total":1,
  • "items":[
    ]
}

Get cumulative asset balances for specific assets and networks.

Authorizations:
pathParameters
ticker
required
string

The ticker of the crypto asset.

queryParameters
network
string(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)
Enum:"erc20""trc20"

The blockchain network.

Responses

Response samples

Content type
application/json
{
  • "asset":{
    },
  • "balance":1000
}

Get list of all supported currencies.

Authorizations:

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Get a list of balances for each asset and network for a specific Organisation.

Authorizations:
queryParameters
organisationId
string<uuid>

The Organisation Id. Applicable only for Master Organisations. Use this parameter to query Subsidiary details.

Responses

Response samples

Content type
application/json
{
  • "organisationId":"71b630d6-986e-4394-8fec-27228a1e877d",
  • "organisationName":"ONE Limited",
  • "balances":[
    ]
}

Get an available balance for a specific wallet address.

Authorizations:
pathParameters
address
required
string

The asset wallet deposit address.

queryParameters
tag
string

The differentiator for an asset deposit address with tag/memo support, such as XRP.

Responses

Response samples

Content type
application/json
{
  • "balances":[
    ]
}

Submit a new external withdrawal address for a specific network.

Authorizations:
Request Body schema:
address
string

The withdrawal address.

ticker
string

The ticker of the crypto asset. Available values: BTC, ETH, USDT, XRP.

network
string(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)
Enum:"erc20""trc20"
tag
stringNullable

The differentiator for an asset deposit address with tag/memo support, such as XRP.

Responses

Request samples

Content type
{
  • "address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj64",
  • "ticker":"USDT",
  • "network":"trc20"
}

Response samples

Content type
application/json
{
  • "address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj64",
  • "status":"pending",
  • "asset":{
    }
}

Get withdrawal addresses. The request without parameters returns the whole list of crypto transactions. But it can be filtered and paginated. All specified criteria will return intersections of data.

Authorizations:
Request Body schema:
tickers
Array ofstringsuniqueNullable

The ticker of the crypto asset.

networks
Array ofstrings(WebAPI.OpenBanking.Models.Enums.BlockchainNetwork)uniqueNullable
ItemsEnum:"erc20""trc20"

The blockchain network.

statuses
Array ofstrings(WebAPI.OpenBanking.Models.Enums.WithdrawalAddressStatus)uniqueNullable
ItemsEnum:"pending""active""inactive"

Withdrawal address statuses.

pageNumber
number<double>[ 0.. 2147483647 ]Nullable
pageSize
number<double>[ 0.. 2147483647 ]Nullable

Responses

Request samples

Content type
{
  • "tickers":[
    ],
  • "networks":[
    ],
  • "statuses":[
    ],
  • "pageNumber":0,
  • "pageSize":0
}

Response samples

Content type
application/json
{
  • "total":1,
  • "items":[
    ]
}

ExchangeRates

Exchange rates

Get estimated exchange rate

Authorizations:
queryParameters
currencyFrom
required
string
Enum:"AUD""CHF""EUR""USD""GBP""CAD""DKK""HKD""NOK""SEK""SGD"
Example:currencyFrom=GBP

The base currency to get estimated exchange rate for

currencyTo
required
string
Enum:"ALL""DZD""ARS""BSD""BHD""BDT""AMD""BBD""BMD""BTN""BOB""BWP""BZD""SBD""BND""MMK""BIF""KHR""CVE""KYD""LKR""CLP""CNY""COP""KMF""CRC""HRK""CUP""DOP""SVC""ETB""ERN""FKP""FJD""DJF""GMD""GIP""GTQ""GNF""GYD""HTG""HNL""ISK""INR""IDR""IRR""IQD""JMD""KZT""JOD""KES""KPW""KRW""KWD""KGS""LAK""LBP""LSL""LRD""LYD""MOP""MWK""MYR""MVR""MUR""MXN""MNT""MDL""MAD""OMR""NAD""NPR""ANG""AWG""VUV""NIO""NGN""PKR""PAB""PGK""PYG""PEN""PHP""QAR""RWF""SHP""SAR""SCR""SLL""VND""SOS""SSP""SZL""SYP""TOP""TTD""AED""TND""UGX""MKD""EGP""TZS""UYU""UZS""WST""YER""TWD""MRU""STN""CUC""ZWL""BYN""TMT""GHS""VEF""SDG""UYI""RSD""MZN""AZN""RON""CHE""CHW""XAF""XCD""XOF""XPF""XDR""XUA""ZMW""SRD""MGA""COU""AFN""TJS""AOA""BGN""CDF""BAM""MXV""UAH""GEL""BOV""BRL""CLF""XSU""USN""ILS""RUB""TRY""NZD""ZAR""CZK""HUF""PLN""THB""AUD""CHF""EUR""USD""GBP""JPY""CAD""DKK""HKD""NOK""SEK""SGD"
Example:currencyTo=USD

The target currency to get estimated exchange rate for

Responses

Response samples

Content type
application/json
{
  • "rate":1.15,
  • "asOfTime":"2022-10-10T10:10:10Z",
  • "isStale":true
}

Organisation

Current organisation info

Get organisation info

Get organisation. Allows a user to get info about the organisation and its subsidiaries.

Authorizations:

Responses

Response samples

Content type
application/json
{
  • "id":"71b630d6-986e-4394-8fec-27228a1e877d",
  • "organisation":"My master organisation",
  • "isMasterCustomer":true,
  • "subsidiaries":[
    ]
}

Payments

Payments initiation

Get payment by id

Authorizations:
pathParameters
paymentId
required
string<uuid>

The payment id

Responses

Response samples

Content type
application/json
{
  • "id":"f413080c-9a7a-421b-93fb-c8ba72b6c6c8",
  • "state":"completed",
  • "paymentTransaction":{
    },
  • "feeTransaction":{
    }
}

Create a SWIFT Payment

Authorizations:
Request Body schema:

New SWIFT payment body

accountId
required
string<uuid>

The Id of an account in ONE database

currency
required
stringnon-empty
Enum:"ALL""DZD""ARS""BSD""BHD""BDT""AMD""BBD""BMD""BTN""BOB""BWP""BZD""SBD""BND""MMK""BIF""KHR""CVE""KYD""LKR""CLP""CNY""COP""KMF""CRC""HRK""CUP""DOP""SVC""ETB""ERN""FKP""FJD""DJF""GMD""GIP""GTQ""GNF""GYD""HTG""HNL""ISK""INR""IDR""IRR""IQD""JMD""KZT""JOD""KES""KPW""KRW""KWD""KGS""LAK""LBP""LSL""LRD""LYD""MOP""MWK""MYR""MVR""MUR""MXN""MNT""MDL""MAD""OMR""NAD""NPR""ANG""AWG""VUV""NIO""NGN""PKR""PAB""PGK""PYG""PEN""PHP""QAR""RWF""SHP""SAR""SCR""SLL""VND""SOS""SSP""SZL""SYP""TOP""TTD""AED""TND""UGX""MKD""EGP""TZS""UYU""UZS""WST""YER""TWD""MRU""STN""CUC""ZWL""BYN""TMT""GHS""VEF""SDG""UYI""RSD""MZN""AZN""RON""CHE""CHW""XAF""XCD""XOF""XPF""XDR""XUA""ZMW""SRD""MGA""COU""AFN""TJS""AOA""BGN""CDF""BAM""MXV""UAH""GEL""BOV""BRL""CLF""XSU""USN""ILS""RUB""TRY""NZD""ZAR""CZK""HUF""PLN""THB""AUD""CHF""EUR""USD""GBP""JPY""CAD""DKK""HKD""NOK""SEK""SGD"

The currency code

amount
required
number<double>[ 0.01.. 999999999999.99 ]

The payment amount

description
stringNullable

The payment description

name
required
string[ 0.. 35 ] characters

The external account name

iban
string[ 0.. 34 ] charactersNullable

The IBAN to transfer to

accountNumber
string[ 0.. 30 ] charactersNullable

The account number

bic
string[ 0.. 11 ] charactersNullable

The BIC

address
required
string[ 0.. 70 ] characters

The address

postalcode
required
string[ 0.. 11 ] characters

The postal code

city
required
string[ 0.. 70 ] characters

The City

country
required
stringnon-empty
Enum:"XXK""ARE""BDI""BFA""BGR""ABW""AFG""AGO""AIA""ALA""ALB""AND""ARG""ARM""ASM""ATA""ATF""ATG""AUS""AUT""AZE""BEL""BEN""BES""BGD""BHR""BHS""BIH""BLM""BLR""BLZ""BMU""BOL""BRA""BRB""BRN""BTN""BVT""BWA""CAF""CAN""CCK""CHE""CHL""CHN""CIV""CMR""COD""COG""COK""COL""COM""CPV""CRI""CUB""CUW""CXR""CYM""CYP""CZE""DEU""DJI""DMA""DNK""DOM""DZA""ECU""EGY""ERI""ESH""ESP""EST""ETH""FIN""FJI""FLK""FRA""FRO""FSM""GAB""GBR""GEO""GGY""GHA""GIB""GIN""GLP""GMB""GNB""GNQ""GRC""GRD""GRL""GTM""GUF""GUM""GUY""HKG""HMD""HND""HRV""HTI""HUN""IDN""IMN""IND""IOT""IRL""IRN""IRQ""ISL""ISR""ITA""JAM""JEY""JOR""JPN""KAZ""KEN""KGZ""KHM""KIR""KNA""KOR""KWT""LAO""LBN""LBR""LBY""LCA""LIE""LKA""LSO""LTU""LUX""LVA""MAC""MAF""MAR""MCO""MDA""MDG""MDV""MEX""MHL""MKD""MLI""MLT""MMR""MNE""MNG""MNP""MOZ""MRT""MSR""MTQ""MUS""MWI""MYS""MYT""NAM""NCL""NER""NFK""NGA""NIC""NIU""NLD""NOR""NPL""NRU""NZL""OMN""PAK""PAN""PCN""PER""PHL""PLW""PNG""POL""PRI""PRK""PRT""PRY""PSE""PYF""QAT""REU""ROU""RUS""RWA""SAU""SDN""SEN""SGP""SGS""SHN""SJM""SLB""SLE""SLV""SMR""SOM""SPM""SRB""SSD""STP""SUR""SVK""SVN""SWE""SWZ""SXM""SYC""SYR""TCA""TCD""TGO""THA""TJK""TKL""TKM""TLS""TON""TTO""TUN""TUR""TUV""TWN""TZA""UGA""UKR""UMI""URY""USA""UZB""VAT""VCT""VEN""VGB""VIR""VNM""VUT""WLF""WSM""YEM""ZAF""ZMB""ZWE"

The Country code

shouldChargeCorrespondentFee
boolean

Is the correspondent fee should be charged

Responses

Callbacks

Request samples

Content type
{
  • "accountId":"93a6096c-d6de-4b95-ad51-16b72f5addd0",
  • "currency":"GBP",
  • "amount":5000.5,
  • "description":"This is a test payment",
  • "name":"Martin",
  • "iban":"GB09BARC20040196834832",
  • "address":"52 Park Road",
  • "postalcode":"SW71 9NV",
  • "city":"London",
  • "country":"GBR",
  • "shouldChargeCorrespondentFee":false
}

Response samples

Content type
application/json
{
  • "id":"497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Callback payload samples

Callback
POST: CreateSwiftPaymentV1PaymentStateChanged
Content type
application/json
{
  • "timestamp":"2022-10-18T09:35:47Z",
  • "type":"payment.state-changed",
  • "payload":{
    }
}

Create a SEPA Payment

Authorizations:
Request Body schema:

New SEPA payment body

accountId
required
string<uuid>

The Id of an account in ONE database

currency
required
stringnon-empty
Enum:"ALL""DZD""ARS""BSD""BHD""BDT""AMD""BBD""BMD""BTN""BOB""BWP""BZD""SBD""BND""MMK""BIF""KHR""CVE""KYD""LKR""CLP""CNY""COP""KMF""CRC""HRK""CUP""DOP""SVC""ETB""ERN""FKP""FJD""DJF""GMD""GIP""GTQ""GNF""GYD""HTG""HNL""ISK""INR""IDR""IRR""IQD""JMD""KZT""JOD""KES""KPW""KRW""KWD""KGS""LAK""LBP""LSL""LRD""LYD""MOP""MWK""MYR""MVR""MUR""MXN""MNT""MDL""MAD""OMR""NAD""NPR""ANG""AWG""VUV""NIO""NGN""PKR""PAB""PGK""PYG""PEN""PHP""QAR""RWF""SHP""SAR""SCR""SLL""VND""SOS""SSP""SZL""SYP""TOP""TTD""AED""TND""UGX""MKD""EGP""TZS""UYU""UZS""WST""YER""TWD""MRU""STN""CUC""ZWL""BYN""TMT""GHS""VEF""SDG""UYI""RSD""MZN""AZN""RON""CHE""CHW""XAF""XCD""XOF""XPF""XDR""XUA""ZMW""SRD""MGA""COU""AFN""TJS""AOA""BGN""CDF""BAM""MXV""UAH""GEL""BOV""BRL""CLF""XSU""USN""ILS""RUB""TRY""NZD""ZAR""CZK""HUF""PLN""THB""AUD""CHF""EUR""USD""GBP""JPY""CAD""DKK""HKD""NOK""SEK""SGD"

The currency code

amount
required
number<double>[ 0.01.. 999999999999.99 ]

The payment amount

description
stringNullable

The payment description

name
required
string[ 0.. 35 ] characters

The external account name

iban
required
string[ 0.. 34 ] characters

The IBAN to transfer to

address
string[ 0.. 70 ] charactersNullable

The address

city
string[ 0.. 70 ] charactersNullable

The City

postalcode
string[ 0.. 11 ] charactersNullable

The postal code

country
required
stringnon-empty
Enum:"XXK""ARE""BDI""BFA""BGR""ABW""AFG""AGO""AIA""ALA""ALB""AND""ARG""ARM""ASM""ATA""ATF""ATG""AUS""AUT""AZE""BEL""BEN""BES""BGD""BHR""BHS""BIH""BLM""BLR""BLZ""BMU""BOL""BRA""BRB""BRN""BTN""BVT""BWA""CAF""CAN""CCK""CHE""CHL""CHN""CIV""CMR""COD""COG""COK""COL""COM""CPV""CRI""CUB""CUW""CXR""CYM""CYP""CZE""DEU""DJI""DMA""DNK""DOM""DZA""ECU""EGY""ERI""ESH""ESP""EST""ETH""FIN""FJI""FLK""FRA""FRO""FSM""GAB""GBR""GEO""GGY""GHA""GIB""GIN""GLP""GMB""GNB""GNQ""GRC""GRD""GRL""GTM""GUF""GUM""GUY""HKG""HMD""HND""HRV""HTI""HUN""IDN""IMN""IND""IOT""IRL""IRN""IRQ""ISL""ISR""ITA""JAM""JEY""JOR""JPN""KAZ""KEN""KGZ""KHM""KIR""KNA""KOR""KWT""LAO""LBN""LBR""LBY""LCA""LIE""LKA""LSO""LTU""LUX""LVA""MAC""MAF""MAR""MCO""MDA""MDG""MDV""MEX""MHL""MKD""MLI""MLT""MMR""MNE""MNG""MNP""MOZ""MRT""MSR""MTQ""MUS""MWI""MYS""MYT""NAM""NCL""NER""NFK""NGA""NIC""NIU""NLD""NOR""NPL""NRU""NZL""OMN""PAK""PAN""PCN""PER""PHL""PLW""PNG""POL""PRI""PRK""PRT""PRY""PSE""PYF""QAT""REU""ROU""RUS""RWA""SAU""SDN""SEN""SGP""SGS""SHN""SJM""SLB""SLE""SLV""SMR""SOM""SPM""SRB""SSD""STP""SUR""SVK""SVN""SWE""SWZ""SXM""SYC""SYR""TCA""TCD""TGO""THA""TJK""TKL""TKM""TLS""TON""TTO""TUN""TUR""TUV""TWN""TZA""UGA""UKR""UMI""URY""USA""UZB""VAT""VCT""VEN""VGB""VIR""VNM""VUT""WLF""WSM""YEM""ZAF""ZMB""ZWE"

The Country code

Responses

Callbacks

Request samples

Content type
{
  • "accountId":"93a6096c-d6de-4b95-ad51-16b72f5addd0",
  • "currency":"GBP",
  • "amount":5000.5,
  • "description":"This is a test payment",
  • "name":"Martin",
  • "iban":"GB09BARC20040196834832",
  • "address":"52 Park Road",
  • "city":"London",
  • "postalcode":"SW71 9NV",
  • "country":"GBR"
}

Response samples

Content type
application/json
{
  • "id":"497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Callback payload samples

Callback
POST: CreateSepaPaymentV1PaymentStateChanged
Content type
application/json
{
  • "timestamp":"2022-10-18T09:35:47Z",
  • "type":"payment.state-changed",
  • "payload":{
    }
}

Create CHAPS Payment

Creates the CHAPS payment that can be executed only between accounts inside GB.

Authorizations:
Request Body schema:

New CHAPS payment body

accountId
required
string<uuid>

The Id of an account in ONE database

currency
required
stringnon-empty
Value:"GBP"

The currency code

amount
required
number<double>

The payment amount

description
stringNullable

The payment description

name
required
string[ 0.. 35 ] characters

The external account name

iban
string[ 0.. 34 ] charactersNullable

The IBAN to transfer to

accountNumber
string[ 0.. 30 ] charactersNullable

The account number

sortCode
string[ 0.. 6 ] charactersNullable

The sort code

Responses

Callbacks

Request samples

Content type
{
  • "accountId":"93a6096c-d6de-4b95-ad51-16b72f5addd0",
  • "currency":"GBP",
  • "amount":5000.5,
  • "description":"This is a test payment",
  • "name":"Martin",
  • "iban":"GB09BARC20040196834832"
}

Response samples

Content type
application/json
{
  • "id":"497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Callback payload samples

Callback
POST: CreateChapsPaymentV1PaymentStateChanged
Content type
application/json
{
  • "timestamp":"2022-10-18T09:35:47Z",
  • "type":"payment.state-changed",
  • "payload":{
    }
}

Create FPS Payment

Creates a Faster payment (FPS), that can be executed only between accounts inside GB. Upper limit for FPS is £250,000.

Authorizations:
Request Body schema:

New FPS payment body

accountId
required
string<uuid>

The Id of an account in ONE database

currency
required
stringnon-empty
Value:"GBP"

The currency code

amount
required
number<double>[ 0.01.. 1000000 ]

The payment amount

description
string

The payment description

name
required
string[ 0.. 35 ] characters

The external account name

iban
string[ 0.. 34 ] charactersNullable

The IBAN to transfer to

accountNumber
string[ 0.. 30 ] charactersNullable

The account number

sortCode
string[ 0.. 6 ] charactersNullable

The sort code

Responses

Callbacks

Request samples

Content type
{
  • "accountId":"93a6096c-d6de-4b95-ad51-16b72f5addd0",
  • "currency":"GBP",
  • "amount":149.95,
  • "description":"This is a test payment",
  • "name":"Martin",
  • "iban":"GB09BARC20040196834832"
}

Response samples

Content type
application/json
{
  • "id":"497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Callback payload samples

Callback
POST: CreateFpsPaymentV1PaymentStateChanged
Content type
application/json
{
  • "timestamp":"2022-10-18T09:35:47Z",
  • "type":"payment.state-changed",
  • "payload":{
    }
}

Create an internal transfer

Authorizations:
Request Body schema:

New internal transfer body

fromAccountId
required
string<uuid>

The Id of an account to transfer from

toAccountId
required
string<uuid>

The Id of an account to transfer to

amount
required
number<double>[ 0.01.. 999999999999.99 ]

The amount to transfer

description
required
stringnon-empty

The transfer description

Responses

Callbacks

Request samples

Content type
{
  • "fromAccountId":"a38ddc42-6992-4c31-8f8a-632e86d309bb",
  • "toAccountId":"84c92b9d-b9c9-443e-8b1f-7b6ba0107d27",
  • "amount":5000.5,
  • "description":"This is a test internal transfer"
}

Response samples

Content type
application/json
{
  • "id":"497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Callback payload samples

Callback
POST: CreateInternalTransferV1PaymentStateChanged
Content type
application/json
{
  • "timestamp":"2022-10-18T09:35:47Z",
  • "type":"payment.state-changed",
  • "payload":{
    }
}

Create an internal payment

TODO

Authorizations:
Request Body schema:

New internal payment body

fromAccountId
required
string<uuid>

The Id of an account to transfer from

iban
stringNullable

The IBAN of recipient's account

accountNumber
stringNullable

The Account Number of recipient's account

sortCode
stringNullable

The Sort Code of recipient's account

amount
required
number<double>[ 0.01.. 999999999999.99 ]

The amount to transfer

description
required
stringnon-empty

The transfer description

Responses

Callbacks

Request samples

Content type
Example
{
  • "fromAccountId":"a38ddc42-6992-4c31-8f8a-632e86d309bb",
  • "iban":"NL22INGB7762494464",
  • "amount":49.95,
  • "description":"This is a test internal payment"
}

Response samples

Content type
application/json
{
  • "id":"497f6eca-6276-4993-bfeb-53cbbbba6f08"
}

Callback payload samples

Callback
POST: CreateInternalPaymentV1PaymentStateChanged
Content type
application/json
{
  • "timestamp":"2022-10-18T09:35:47Z",
  • "type":"payment.state-changed",
  • "payload":{
    }
}

Transactions

Working with transactions

Get transaction by id

Authorizations:
pathParameters
transactionId
required
string<uuid>

The transaction id

Responses

Response samples

Content type
application/json
{
  • "status":"completedPayment",
  • "id":"8a5cb01e-1cb3-4182-8b7a-3236c8f715ba",
  • "iban":"LI68088110103878K050G",
  • "bic":"BFRILI22XXX",
  • "accountCurrency":"GBP",
  • "createdDate":"2022-10-10T00:00:00",
  • "sentAmount":-2,
  • "deductedAmount":-1.46,
  • "debitCredit":"debit",
  • "reference":"ee0dd4c6-8dde-4eb0-99cd-6743f9b802f3",
  • "type":"SWIFT",
  • "exchangeRate":0.7314,
  • "estimatedExchangeRate":0.7257,
  • "transactionNumber":"4199942",
  • "currency":"USD",
  • "recipientSender":{
    }
}

Get transactions

Get transactions. Allows a user to get filtered and paginated transactions

Authorizations:
queryParameters
ibans
Array ofstringsunique

Accounts' IBANs

accountNumbers
Array ofstringsunique

Accounts' account numbers

sortCodes
Array ofstringsunique

Accounts' sort codes

bics
Array ofstringsunique

Accounts' BICs

accountCurrencies
Array ofstringsunique
ItemsEnum:"AUD""CHF""EUR""USD""GBP""CAD""DKK""HKD""NOK""SEK""SGD"

Accounts' currencies

createdDateFrom
string<date-time>
Example:createdDateFrom=2024-05-16T19:08:12.2734796Z

Transaction's min created date

createdDateTo
string<date-time>
Example:createdDateTo=2024-05-16T19:08:12.2734796Z

Transaction's max created date

sentAmountFrom
number<double>

Transaction's min sent amount

sentAmountTo
number<double>

Transaction's max sent amount

deductedAmountFrom
number<double>

Transaction's min deducted amount

deductedAmountTo
number<double>

Transaction's max deducted amount

transactionCurrencies
Array ofstringsunique
ItemsEnum:"ALL""DZD""ARS""BSD""BHD""BDT""AMD""BBD""BMD""BTN""BOB""BWP""BZD""SBD""BND""MMK""BIF""KHR""CVE""KYD""LKR""CLP""CNY""COP""KMF""CRC""HRK""CUP""DOP""SVC""ETB""ERN""FKP""FJD""DJF""GMD""GIP""GTQ""GNF""GYD""HTG""HNL""ISK""INR""IDR""IRR""IQD""JMD""KZT""JOD""KES""KPW""KRW""KWD""KGS""LAK""LBP""LSL""LRD""LYD""MOP""MWK""MYR""MVR""MUR""MXN""MNT""MDL""MAD""OMR""NAD""NPR""ANG""AWG""VUV""NIO""NGN""PKR""PAB""PGK""PYG""PEN""PHP""QAR""RWF""SHP""SAR""SCR""SLL""VND""SOS""SSP""SZL""SYP""TOP""TTD""AED""TND""UGX""MKD""EGP""TZS""UYU""UZS""WST""YER""TWD""MRU""STN""CUC""ZWL""BYN""TMT""GHS""VEF""SDG""UYI""RSD""MZN""AZN""RON""CHE""CHW""XAF""XCD""XOF""XPF""XDR""XUA""ZMW""SRD""MGA""COU""AFN""TJS""AOA""BGN""CDF""BAM""MXV""UAH""GEL""BOV""BRL""CLF""XSU""USN""ILS""RUB""TRY""NZD""ZAR""CZK""HUF""PLN""THB""AUD""CHF""EUR""USD""GBP""JPY""CAD""DKK""HKD""NOK""SEK""SGD"

Transactions' currencies

statuses
Array ofstrings(Data.Entities.Payments.Enums.LogicalTransactionState)unique
ItemsEnum:"unknown""pendingOrganizationApproval""pendingComplianceApproval""rejectedByOrganization""rejectedByCompliance""rejectedByBank""completedIncomingTransaction""completedTransfer""completedPayment""pending""completed""rejected""expired""awaitingFunds"

Transactions' statuses

types
Array ofstrings(Data.Entities.Payments.Enums.LogicalTransactionType)unique
ItemsEnum:"sepa""sepaFee""swift""swiftFee""swiftFeeCorrespondent""swiftFeeCorrespondentUsd""internal""annualFee""activeIbansFee""adHocFee""fasterPayments""fasterPaymentsFee""chaps""chapsFee""inbound""inboundFee""directDebit""directCredit""basicInbound""crypto""other"

Transactions' types

reference
string

Transaction's reference

estimatedExchangeRateFrom
number<double>

Transaction's min estimated exchange rate

estimatedExchangeRateTo
number<double>

Transaction's max estimated exchange rate

exchangeRateFrom
number<double>

Transaction's min exchange rate

exchangeRateTo
number<double>

Transaction's max exchange rate

transactionNumber
string

Transaction's transaction number

recipientSenderFilter.name
string

Recipient or sender name

recipientSenderFilter.iban
string

Recipient or sender IBAN

recipientSenderFilter.accountNumber
string

Recipient or sender account number

recipientSenderFilter.bic
string

Recipient or sender BIC

recipientSenderFilter.sortCode
string

Recipient or sender sort code. Must be from 2 up to 6 digits.

pageNumber
integer<int32>[ 1.. 2147483647 ]

Page number

pageSize
integer<int32>[ 1.. 2147483647 ]

Page size

includeSubsidiariesTransactions
boolean

If true then all subsidiaries transactions will be returned along with master transactions

Responses

Response samples

Content type
application/json
{
  • "total":0,
  • "items":[
    ]
}