Weavr Linked Accounts API
The Linked Accounts API from Weavr — 11 operation(s) for linked accounts.
The Linked Accounts API from Weavr — 11 operation(s) for linked accounts.
openapi: 3.1.0
info:
version: v3
title: Weavr Multi Product BackOffice Access Token Linked Accounts API
x-logo:
url: https://storage.googleapis.com/weavr-cdn/weavr_logo-new.png
backgroundColor: '#FFFFFF'
altText: Weavr
description: 'Weavr Multi Back Office API allows you, as an innovator, to perform various back office operations concerning
identities and their instruments, without requiring the users to be logged in.
A token is to be obtained through the `access_token` method, and this will allow relevant operations
to be performed on behalf of this same identity.
'
contact:
name: Weavr
url: https://weavr.io
servers:
- description: Weavr Sandbox Environment
url: https://sandbox.weavr.io/multi/backoffice
tags:
- name: Linked Accounts
paths:
/linked_accounts:
post:
tags:
- Linked Accounts
description: 'A Linked Account is an entity in the Weavr system that represents an external bank account or PSP account which the Identity has verified that they own and control. This feature enables users to perform transactions, such as outgoing and incoming wire transfers, between their Linked Accounts and their Managed Accounts in a way that can be recorded as a self-to-self transfer.
'
summary: Add a linked account
operationId: linkedAccountCreate
x-permissions:
- i:linked_accounts:create
parameters:
- $ref: '#/components/parameters/idempotency-ref'
requestBody:
$ref: '#/components/requestBodies/LinkedAccountCreationRequest'
responses:
'200':
$ref: '#/components/responses/LinkedAccountResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/InstrumentForbidden'
'409':
$ref: '#/components/responses/LinkedAccountRegisterConflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
get:
tags:
- Linked Accounts
description: Retrieves all the Linked Accounts belonging to the logged-in Identity.
summary: Get all linked accounts
operationId: linkedAccountsGet
x-permissions:
- i:linked_accounts:list
parameters:
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/profileId'
- $ref: '#/components/parameters/friendlyName'
- $ref: '#/components/parameters/state'
- $ref: '#/components/parameters/currency'
- $ref: '#/components/parameters/createdFrom'
- $ref: '#/components/parameters/createdTo'
- $ref: '#/components/parameters/tag'
responses:
'200':
$ref: '#/components/responses/LinkedAccountsGetResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/InstrumentForbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
/linked_accounts/{id}:
get:
tags:
- Linked Accounts
description: Fetch the Linked Account identified by the `id` in path.
summary: Get a linked account
operationId: linkedAccountGet
x-permissions:
- i:linked_accounts:get
parameters:
- name: id
in: path
required: true
description: The unique identifier of the Linked Account.
schema:
type: string
pattern: ^[0-9]+$
responses:
'200':
$ref: '#/components/responses/LinkedAccountResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/InstrumentForbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
patch:
tags:
- Linked Accounts
description: Update the details for the linked account identified by the `id` in the path.
summary: Update a linked account
operationId: linkedAccountUpdate
x-permissions:
- i:linked_accounts:update
parameters:
- name: id
in: path
required: true
description: The unique identifier of the linked account.
schema:
type: string
pattern: ^[0-9]+$
requestBody:
$ref: '#/components/requestBodies/LinkedAccountMetadataUpdateRequest'
responses:
'200':
$ref: '#/components/responses/LinkedAccountResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/InstrumentForbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
/linked_accounts/{id}/remove:
post:
tags:
- Linked Accounts
description: 'Removes the linked account identified by the `id` path parameter. Unlike block, this action is not reversible.
'
summary: Remove a linked account
operationId: linkedAccountRemove
x-permissions:
- i:linked_accounts:remove
parameters:
- name: id
in: path
required: true
description: The unique identifier of the linked account.
schema:
type: string
pattern: ^[0-9]+$
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/LinkedAccountRemoveConflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
/linked_accounts/{id}/block:
post:
tags:
- Linked Accounts
description: Temporarily blocks a linked account.
summary: Block a linked account
operationId: linkedAccountBlock
x-permissions:
- i:linked_accounts:block
parameters:
- name: id
in: path
description: The unique identifier of the linked account.
required: true
style: simple
schema:
type: string
pattern: ^[0-9]+$
- $ref: '#/components/parameters/idempotency-ref'
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/LinkedAccountBlockConflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
/linked_accounts/{id}/unblock:
post:
tags:
- Linked Accounts
description: 'Unblocks the linked account identified by the `id` path parameter.
'
summary: Unblock a linked account
operationId: linkedAccountUnblock
x-permissions:
- i:linked_accounts:unblock
parameters:
- name: id
in: path
description: The unique identifier of the linked account.
required: true
style: simple
schema:
type: string
pattern: ^[0-9]+$
- $ref: '#/components/parameters/idempotency-ref'
responses:
'204':
$ref: '#/components/responses/NoContent'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/LinkedAccountUnblockConflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
/linked_accounts/{id}/verifications:
get:
tags:
- Linked Accounts
description: ''
summary: Get linked account verifications
operationId: linkedAccountVerificationsGet
x-permissions:
- i:linked_accounts:get_verifications
parameters:
- name: id
in: path
required: true
description: The unique identifier of the linked account.
schema:
type: string
pattern: ^[0-9]+$
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/verificationRunState'
responses:
'200':
$ref: '#/components/responses/LinkedAccountVerificationRunsGetResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/InstrumentForbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/Error'
security:
- auth_token: []
api-key: []
/v1/linked_accounts:
get:
operationId: getLinkedAccounts
summary: Get Linked accounts
description: 'Retrieves the linked accounts belonging to the buyer that the logged-in user belongs to.
Required user role: `CONTROLLER`'
tags:
- Linked Accounts
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- linkedAccounts
properties:
linkedAccounts:
type: array
items:
type: object
required:
- id
- accountIdentification
- currency
- institution
- consent
- status
properties:
id:
description: The unique identifier of the linked account
type: string
pattern: ^[0-9a-fA-F]{24}$
example: 652d25b73541d8084a88a38d
accountIdentification:
description: The bank details that uniquely identify the account on the banking systems.
oneOf:
- title: FasterPaymentsBankDetails
required:
- accountNumber
- sortCode
type: object
description: Bank details used in case the wire transfer is executed over Faster Payments.
properties:
accountNumber:
type: string
minLength: 8
maxLength: 8
pattern: ^[0-9]{8}$
description: Account number, required for wire transfer over Faster Payments.
sortCode:
type: string
minLength: 6
maxLength: 6
pattern: ^[0-9]{6}$
description: Sort code, required for wire transfer over Faster Payments.
secondaryReference:
type: string
description: Secondary reference data if applicable.
- title: SepaBankDetails
required:
- iban
type: object
description: Bank details used in case the wire transfer is executed over SEPA.
properties:
iban:
type: string
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$
description: International Bank Account Number, required for wire transfer over SEPA.
bankIdentifierCode:
type: string
minLength: 8
maxLength: 11
pattern: ^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA-Z0-9]{0,3}$
description: BIC, for wire transfer over SEPA.
currency:
type: string
description: The primary currency associated with the account
maxLength: 3
minLength: 3
enum:
- GBP
- EUR
institution:
type: object
required:
- countries
properties:
displayName:
description: The name to be used when displaying the institution to users on user interfaces
type: string
countries:
type: array
description: The institution's supported countries
items:
type: string
maxLength: 2
minLength: 2
pattern: ^[A-Z]+$
enum:
- GB
- AT
- BE
- BG
- HR
- CY
- CZ
- DK
- EE
- FI
- FR
- DE
- GI
- GR
- HU
- IS
- IE
- IT
- LV
- LI
- LT
- LU
- MT
- NL
- 'NO'
- PL
- PT
- RO
- SK
- SI
- ES
- SE
images:
type: object
description: The images that should be used when displaying the institution
properties:
icon:
type: string
logo:
type: string
info:
type: object
properties:
loginUrl:
type: string
helplinePhoneNumber:
type: string
consent:
type: object
required:
- expiresAt
- expiresIn
- status
properties:
expiresAt:
type: string
format: date-time
expiresIn:
type: integer
status:
type: string
enum:
- ACTIVE
- EXPIRED
- REVOKED
status:
type: string
description: 'The status of the linked account. The status can be one of the following:
- `PENDING_CHALLENGE`: The Linked Account is pending challenge
- `PENDING_VERIFICATION`: The Linked Account is pending the completion of the required verification steps
- `PENDING_FUNDING`: Awaiting a wire transfer as part of the verification process when adding an account without Open Banking
- `REJECTED`: The Linked Account did not pass one or more verification steps and is not eligible for use
- `LINKED`: The linked account is linked and ready for use
- `UNLINKED`: The linked account is not linked and cannot be used
'
enum:
- LINKED
- UNLINKED
- PENDING_CHALLENGE
- PENDING_FUNDING
- PENDING_VERIFICATION
- REJECTED
friendlyName:
type: string
maxLength: 80
description: A user-friendly name for the linked account
count:
type: integer
description: The total number of records (excluding the paging limit).
format: int32
responseCount:
type: integer
description: The total number of records returned in this response (always capped at 100).
format: int32
'400':
description: Bad Request Error - Your request is invalid.
headers:
request-ref:
description: A request identifier. Providing this reference when contacting our support team will help us investigate your query.
required: true
schema:
type: string
content:
application/json:
schema:
type: object
properties:
message:
maxLength: 255
type: string
description: When present helps to identify and fix the problem.
syntaxErrors:
type: object
description: Is returned as part of an HTTP error response whenever a syntax error is detected. A list of the fields together with their syntax error will be provided.
properties:
invalidFields:
type: array
items:
type: object
properties:
params:
type: array
items:
type: string
fieldName:
type: string
error:
type: string
enum:
- REQUIRED
- HAS_TEXT
- REQUIRES
- SIZE
- RANGE
- IN
- NOT_IN
- REGEX
- EXACTLY
- AT_LEAST
- AT_MOST
- ALL_OR_NONE
'401':
description: Unauthorized - Your credentials or access token are invalid.
headers:
request-ref:
description: A request identifier. Providing this reference when contacting our support team will help us investigate your query.
required: true
schema:
type: string
'403':
description: Forbidden - Access to the requested resource or action is forbidden.
headers:
request-ref:
description: A request identifier. Providing this reference when contacting our support team will help us investigate your query.
required: true
schema:
type: string
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
enum:
- INSUFFICIENT_PERMISSIONS
'429':
description: Too many requests.
headers:
request-ref:
description: A request identifier. Providing this reference when contacting our support team will help us investigate your query.
required: true
schema:
type: string
x-ratelimit-limit:
description: 'Example: `20, 10;w=60, 20;w=3600, 200;w=86400`
The first number (20) is the limit that has been exceeded.
The remaining numbers are the limits that are in force, with ''w'' meaning ''window in seconds''. In this example `20;w=3600` was exceeded. 20 calls in 3600secs (1hr)
'
required: true
schema:
type: string
x-ratelimit-reset:
description: The number of seconds until the window is reset.
required: true
schema:
minimum: 0
type: integer
format: int32
'500':
description: Internal Server Error - There is a problem with the server. Please try again later.
headers:
request-ref:
description: A request identifier. Providing this reference when contacting our support team will help us investigate your query.
required: true
schema:
type: string
'503':
description: Service Unavailable - We're temporarily offline for maintenance. Please try again later.
headers:
request-ref:
description: A request identifier. Providing this reference when contacting our support team will help us investigate your query.
required: true
schema:
type: string
default:
description: Error
content:
application/json:
schema:
type: object
properties:
code:
type: string
message:
type: string
/v1/linked_accounts/{linked_account_id}:
get:
operationId: getLinkedAccountsId
summary: Get Linked account
description: 'Retrieves a linked account of the buyer that the logged-in user belongs to.
Required user role: `CONTROLLER`'
tags:
- Linked Accounts
parameters:
- name: linked_account_id
in: path
required: true
description: The unique identifier of the linked account.
schema:
type: string
readOnly: true
pattern: ^[0-9a-fA-F]{24}$
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- id
- accountIdentification
- currency
- institution
- consent
- status
properties:
id:
description: The unique identifier of the linked account
type: string
pattern: ^[0-9a-fA-F]{24}$
example: 652d25b73541d8084a88a38d
accountIdentification:
description: The bank details that uniquely identify the account on the banking systems.
oneOf:
- title: FasterPaymentsBankDetails
required:
- accountNumber
- sortCode
type: object
description: Bank details used in case the wire transfer is executed over Faster Payments.
properties:
accountNumber:
type: string
minLength: 8
maxLength: 8
pattern: ^[0-9]{8}$
description: Account number, required for wire transfer over Faster Payments.
sortCode:
type: string
minLength: 6
maxLength: 6
pattern: ^[0-9]{6}$
description: Sort code, required for wire transfer over Faster Payments.
secondaryReference:
type: string
description: Secondary reference data if applicable.
- title: SepaBankDetails
required:
- iban
type: object
description: Bank details used in case the wire transfer is executed over SEPA.
properties:
iban:
type: string
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$
description: International Bank Account Number, required for wire transfer over SEPA.
bankIdentifierCode:
type: string
minLength: 8
maxLength: 11
pattern: ^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA-Z0-9]{0,3}$
description: BIC, for wire transfer over SEPA.
currency:
type: string
description: The primary currency associated with the account
maxLength: 3
minLength: 3
enum:
- GBP
- EUR
institution:
type: object
required:
- countries
properties:
displayName:
description: The name to be used when displaying the institution to users on user interfaces
type: string
countries:
type: array
description: The institution's supported countries
items:
type: string
maxLength: 2
minLength: 2
pattern: ^[A-Z]+$
enum:
- GB
- AT
- BE
- BG
- HR
- CY
- CZ
- DK
- EE
- FI
- FR
- DE
- GI
- GR
- HU
- IS
- IE
- IT
- LV
- LI
- LT
- LU
- MT
- NL
- 'NO'
- PL
- PT
- RO
- SK
- SI
- ES
- SE
images:
type: object
description: The images that should be used when displaying the institution
properties:
icon:
type: string
logo:
type: string
info:
type: object
properties:
loginUrl:
type: string
helplinePhoneNumber:
type: string
consent:
type: object
required:
- expiresAt
- expiresIn
- status
properties:
expiresAt:
type: string
format: date-time
expiresIn:
type: integer
status:
type: string
enum:
- ACTIVE
- EXPIRED
- REVOKED
status:
type: string
description: 'The status of the linked account. The status can be one of the following:
- `PENDING_CHALLENGE`: The Linked Account is pending challenge
- `PENDING_VERIFICATION`: The Linked Acc
# --- truncated at 32 KB (99 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/weavr/refs/heads/main/openapi/weavr-linked-accounts-api-openapi.yml