Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/modulr-accounts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Modulr Accounts API
description: Modulr API
license:
name: © Modulr Finance
url: https://www.modulrfinance.com
version: '1.0'
servers:
- url: https://api-sandbox.modulrfinance.com/api-sandbox-token
security:
- modulo_security: []
tags:
- name: Accounts
description: Operations on Accounts
paths:
/accounts/{accountId}:
get:
tags:
- Accounts
summary: Get an account
description: Retrieve details of a particular account using its ID as a reference
operationId: getAccount
parameters:
- name: accountId
in: path
description: ID of account to fetch
required: true
style: simple
explode: false
schema:
type: string
- name: statuses
in: query
description: Account statuses allowed when fetching the account
required: false
style: form
explode: true
schema:
type: array
default:
- ACTIVE
items:
type: string
enum:
- ACTIVE
- BLOCKED
- CLOSED
- CLIENT_BLOCKED
- name: includePendingTransactions
in: query
description: Include all pending transactions in 'balance' field
required: false
style: form
explode: true
schema:
type: boolean
default: false
- name: showAvailableBalance
in: query
description: Show available balance
required: false
style: form
explode: true
schema:
type: boolean
default: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/account.AccountResponse'
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
put:
tags:
- Accounts
summary: Edit an account
description: "Edit details of a particular account using its ID as a reference\nCurrently editable fields:\n 1. for accounts of all customer types, externalReference can be edited\n 2. for accounts of PCM_INDIVIDUAL & PCM_BUSINESS customer types, name can additionally be edited"
operationId: editAccount
parameters:
- name: accountId
in: path
description: ID of account to be edited
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/account.UpdateAccountRequest'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/account.AccountResponse'
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/accounts/{accountId}/secured-funding:
put:
tags:
- Accounts
summary: Set the secured funding limit for an account
operationId: updateSecuredFundingLimit
parameters:
- name: accountId
in: path
description: ID of account to set the secured funding limit
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/account.AccountSecuredFundingRequest'
required: true
responses:
'200':
description: OK
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/customers/{customerId}/accounts:
get:
tags:
- Accounts
summary: Get accounts by customer
description: Get details of accounts belonging to a particular customer using the customer’s ID as a reference
operationId: getAccountsByCustomer
parameters:
- name: customerId
in: path
description: ID of customer to fetch accounts for
required: true
style: simple
explode: false
schema:
type: string
- name: customerStatuses
in: query
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/account.customerStatuses'
- name: statuses
in: query
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/account.statuses'
- name: minBalance
in: query
description: Accounts with balance equal or more than this amount
required: false
style: form
explode: true
schema:
type: number
description: Accounts with balance equal or more than this amount
minimum: 0
- name: maxBalance
in: query
description: Accounts with balance equal or less than this amount
required: false
style: form
explode: true
schema:
type: number
description: Accounts with balance equal or less than this amount
minimum: 0.01
- name: fromCreatedDate
in: query
description: Accounts created after and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
required: false
style: form
explode: true
schema:
type: string
description: Accounts created after and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
- name: toCreatedDate
in: query
description: Accounts created before and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
required: false
style: form
explode: true
schema:
type: string
description: Accounts created before and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
- name: page
in: query
description: Page to fetch (0 indexed)
required: false
style: form
explode: true
schema:
type: integer
format: int32
description: Page to fetch (0 indexed)
- name: size
in: query
description: Size of Page to fetch
required: false
style: form
explode: true
schema:
type: integer
format: int32
description: Size of Page to fetch
maximum: 500
- name: sortField
in: query
description: Sort by field
required: false
style: form
explode: true
schema:
type: string
description: Sort by field
pattern: (id|name|balance|externalReference|createdDate)
- name: sortOrder
in: query
description: Sorting order
required: false
style: form
explode: true
schema:
type: string
description: Sorting order
pattern: (asc|desc)
- name: currency
in: query
description: The currency for getting account by currency. Expected ISO Standard currency name i.e. GBP, EUR etc
required: false
style: form
explode: true
schema:
type: string
description: The currency for getting account by currency. Expected ISO Standard currency name i.e. GBP, EUR etc
enum:
- GBP
- EUR
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- FJD
- FKP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SLE
- SLL
- SOS
- SRD
- SSP
- STN
- SVC
- SYP
- SZL
- SHP
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- UYI
- UYU
- UYW
- UZS
- VES
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
example: GBP
example: GBP
- name: showAvailableBalance
in: query
description: Show available balance
required: false
style: form
explode: true
schema:
type: boolean
description: Show available balance
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/account.AccountPageResponse'
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
post:
tags:
- Accounts
summary: Create account by customer
description: Creates an account for a particular customer using the customer’s ID as a reference
operationId: createAccount
parameters:
- name: customerId
in: path
description: ID of customer to create account for
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/account.CreateAccountRequest'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/account.AccountResponse'
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/accounts/{accountId}/unblock:
post:
tags:
- Accounts
summary: Unblock a specific account
description: Using a unique reference (account ID) you can unblock an account
operationId: unblockAccount
parameters:
- name: accountId
in: path
description: ID of account to unblock
required: true
style: simple
explode: false
schema:
type: string
responses:
'200':
description: OK
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/accounts/{accountId}/close:
post:
tags:
- Accounts
summary: Close an account
description: Accounts with a zero balance can be closed. The account must have a status of ACTIVE or CLIENT_BLOCKED.
operationId: closeAccount
parameters:
- name: accountId
in: path
description: ID of account to close
required: true
style: simple
explode: false
schema:
type: string
responses:
'200':
description: OK
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/accounts/{accountId}/block:
post:
tags:
- Accounts
summary: Block a specific account
description: Using a unique reference (account ID) you can block an account
operationId: blockAccount
parameters:
- name: accountId
in: path
description: ID of account to block
required: true
style: simple
explode: false
schema:
type: string
responses:
'200':
description: OK
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/accounts:
get:
tags:
- Accounts
summary: Get accounts using filter
description: Gives the ability to find accounts and get their details using filters
operationId: getAccounts
parameters:
- name: id
in: query
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/account.id'
- name: q
in: query
description: ID or name of the account to search for
required: false
style: form
explode: true
schema:
type: string
description: ID or name of the account to search for
- name: identifierType
in: query
description: Accounts that contain this identifier type
required: false
style: form
explode: true
schema:
type: string
description: Accounts that contain this identifier type
enum:
- SCAN
- IBAN
- DD
- INTL
example: SCAN
example: SCAN
- name: name.type
in: query
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
required: false
style: form
explode: true
schema:
type: string
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
enum:
- WORD_MATCH
- WORD_MATCH_ALPHANUMERIC
- PREFIX
- SUFFIX
- CONTAINS
- EXACT
- name: name.value
in: query
required: false
style: form
explode: true
schema:
type: string
minLength: 1
- name: externalReference.type
in: query
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
required: false
style: form
explode: true
schema:
type: string
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
enum:
- WORD_MATCH
- WORD_MATCH_ALPHANUMERIC
- PREFIX
- SUFFIX
- CONTAINS
- EXACT
- name: externalReference.value
in: query
required: false
style: form
explode: true
schema:
type: string
minLength: 1
- name: customerId
in: query
description: The customer ID for getting account by customer ID
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/account.customerId'
example: C1234567
- name: accountNumber.type
in: query
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
required: false
style: form
explode: true
schema:
type: string
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
enum:
- WORD_MATCH
- WORD_MATCH_ALPHANUMERIC
- PREFIX
- SUFFIX
- CONTAINS
- EXACT
- name: accountNumber.value
in: query
required: false
style: form
explode: true
schema:
type: string
minLength: 1
- name: iban.type
in: query
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
required: false
style: form
explode: true
schema:
type: string
description: 'WORD_MATCH - using word boundaries,
WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,
PREFIX - same case prefix,
SUFFIX - same case suffix,
CONTAINS - same case contains
EXACT - same case exact
'
enum:
- WORD_MATCH
- WORD_MATCH_ALPHANUMERIC
- PREFIX
- SUFFIX
- CONTAINS
- EXACT
- name: iban.value
in: query
required: false
style: form
explode: true
schema:
type: string
minLength: 1
- name: statuses
in: query
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/account.statuses'
- name: minBalance
in: query
description: Accounts with balance equal or more than this amount
required: false
style: form
explode: true
schema:
type: number
description: Accounts with balance equal or more than this amount
minimum: 0
- name: maxBalance
in: query
description: Accounts with balance equal or less than this amount
required: false
style: form
explode: true
schema:
type: number
description: Accounts with balance equal or less than this amount
minimum: 0.01
- name: fromCreatedDate
in: query
description: Accounts created after and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
required: false
style: form
explode: true
schema:
type: string
description: Accounts created after and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
- name: toCreatedDate
in: query
description: Accounts created before and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
required: false
style: form
explode: true
schema:
type: string
description: Accounts created before and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
- name: page
in: query
description: Page to fetch (0 indexed)
required: false
style: form
explode: true
schema:
type: integer
format: int32
description: Page to fetch (0 indexed)
- name: size
in: query
description: Size of Page to fetch
required: false
style: form
explode: true
schema:
type: integer
format: int32
description: Size of Page to fetch
maximum: 500
- name: sortField
in: query
description: Sort by field
required: false
style: form
explode: true
schema:
type: string
description: Sort by field
pattern: (id|name|balance|externalReference|createdDate)
- name: sortOrder
in: query
description: Sorting order
required: false
style: form
explode: true
schema:
type: string
description: Sorting order
pattern: (asc|desc)
- name: currency
in: query
description: The currency for getting account by currency. Expected ISO Standard currency name i.e. GBP, EUR etc
required: false
style: form
explode: true
schema:
type: string
description: The currency for getting account by currency. Expected ISO Standard currency name i.e. GBP, EUR etc
enum:
- GBP
- EUR
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- FJD
- FKP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SLE
- SLL
- SOS
- SRD
- SSP
- STN
- SVC
- SYP
- SZL
- SHP
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- UYI
- UYU
- UYW
- UZS
- VES
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
example: GBP
example: GBP
- name: showAvailableBalance
in: query
description: Show available balance
required: false
style: form
explode: true
schema:
type: boolean
description: Show available balance
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/account.AccountPageResponse'
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/account.MessageResponse'
security:
- HMAC: []
- TOKEN: []
components:
schemas:
account.customerId:
type: array
description: The customer ID for getting account by customer ID
example: C1234567
items:
type: string
description: The customer ID for getting account by customer ID
example: C1234567
account.id:
type: array
description: ID of Customer(s) to fetch
items:
type: string
description: ID of Customer(s) to fetch
account.AccountSecuredFundingRequest:
type: object
properties:
limit:
type: number
description: Secured funding limit
minimum: 0
required:
- limit
account.UpdateAccountRequest:
type: object
description: Details of account to edit
properties:
externalReference:
type: string
description: External Reference can only have alphanumeric characters plus underscore, hyphen and space up to 50 characters long
maxLength: 50
minLength: 0
pattern: '[\w \-]*'
name:
type: string
description: Name for the account, only applicable for 'PCM_INDIVIDUAL' and 'PCM_BUSINESS' customer types
maxLength: 40
minLength: 0
account.AccountResponse:
type: object
description: Account
properties:
id:
type: string
description: Unique id for the account
example: A0000001
name:
type: string
description: Name for the account
balance:
type: string
description: Balance of the account in format 'NN.NN'
example: '10000.00'
availableBalance:
type: string
description: The current available balance of the Account. Calculated by subtracting any pending payments from the current balance
example: '10000.00'
currency:
type: string
description: Currency of the account in ISO 4217 format
example: GBP
status:
type: string
description: 'Status of the account. Accounts must be ''ACTIVE'' to make and receive payments. Can be one of '
example: ACTIVE
identifiers:
type: array
items:
$ref: '#/components/schemas/account.IdentifierResponse'
customerId:
type: string
description: Unique id of the Customer
example: C0000001
customerName:
type: string
description: Customer Name
externalReference:
type: string
description: Your reference for an account
example: aReference_00001
accessGroups:
type: array
description: Ids of Access Groups this account belongs to
items:
type: string
createdDate:
type: string
format: date-time
description: Datetime when the account was created. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
example: 2017-01-28T01:01:01+0000
directDebit:
type: boolean
description: Direct Debit Enabled
securedFundingLimit:
type: string
description: Limit of funds available below a balance of zero
account.customerStatuses:
type: array
items:
type: string
default: ACTIVE
description: Customer statuses
enum:
- ACTIVE
- CLOSED
- BLOCKED
account.IdentifierCountrySpecificDetailsResponse:
type: object
properties:
bankName:
type: string
description: The name of the destination bank.
example: Apple Bank
bankAddress:
type: string
description: The address of the destination bank.
example: 2100 Broadway
# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/modulr/refs/heads/main/openapi/modulr-accounts-api-openapi.yml