Modulr Channel Manager Card API
The Channel Manager Card API from Modulr — 9 operation(s) for channel manager card.
The Channel Manager Card API from Modulr — 9 operation(s) for channel manager card.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/modulr-channel-manager-card-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Modulr Channel Manager Card 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: Channel Manager Card
paths:
/channel-managers/cards/{cardId}:
post:
tags:
- Channel Manager Card
summary: Channel Manager Update card
description: Update a virtual card
operationId: channelManagerUpdateCard
parameters:
- name: cardId
in: path
description: The card id.
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.UpdateCardRequest'
required: true
responses:
'204':
description: Virtual card updated successfully
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
patch:
tags:
- Channel Manager Card
summary: Channel Manager Update card
description: Update card - for now, the removal of cancellationDate, authWindowStartDate and authWindowEndDate fields is the only allowed action
operationId: channelManagerUpdateCard_1
parameters:
- name: cardId
in: path
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/channelmanager.Add'
- $ref: '#/components/schemas/channelmanager.Copy'
- $ref: '#/components/schemas/channelmanager.Move'
- $ref: '#/components/schemas/channelmanager.Remove'
- $ref: '#/components/schemas/channelmanager.Replace'
- $ref: '#/components/schemas/channelmanager.Test'
required: true
responses:
'204':
description: Card updated successfully
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
'403':
description: Forbidden. Token may be missing or invalid
security:
- HMAC: []
- TOKEN: []
/channel-managers/cards/{cardId}/replace:
post:
tags:
- Channel Manager Card
summary: 'Channel Manager Replace card '
description: Replace a card, with a reason STOLEN, DAMAGED, LOST, RENEW
operationId: channelManagerReplaceCard
parameters:
- name: cardId
in: path
description: The ID of the card
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardReplacementRequest'
required: true
responses:
'201':
description: Card replaced successfully
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardReplacementResponse'
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/cards/{cardId}/custom-fields:
post:
tags:
- Channel Manager Card
summary: Channel Manager Update Card Custom Fields
description: Replace the values of a card's custom fields if they exist or create new custom fields with the given values if they do not exist
operationId: channelManagerUpdateCardCustomFields
parameters:
- name: cardId
in: path
description: Id of the card for which the custom fields should be updated
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.UpdateCardCustomFieldsRequest'
required: true
responses:
'204':
description: Custom fields updated successfully
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/cards/enquiry:
post:
tags:
- Channel Manager Card
summary: Channel Manager Card enquiry
description: Retrieve card details by PAN
operationId: channelManagerCardEnquiry
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardEnquiryRequest'
required: true
responses:
'200':
description: Card enquiry successful
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardResponse'
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/accounts/{accountId}/cards:
post:
tags:
- Channel Manager Card
summary: 'Channel Manager Create card '
description: Create a new virtual card
operationId: channelManagerCreateCard
parameters:
- name: accountId
in: path
description: The account which card funds will be raised from.
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CreateCardRequest'
required: true
responses:
'201':
description: Virtual card created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CreateCardResponse'
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/cards:
get:
tags:
- Channel Manager Card
summary: Retrieve channel manager's cards
description: Retrieve cards owned by the channel manager
operationId: channelManagerGetCards
parameters:
- name: fromCreatedDate
in: query
description: Cards created on or after this date. Cannot be older than 7 days. Format is `yyyy-MM-dd'T'HH:mm:ss` with zero offset from UTC. Required if toCreatedDate is supplied.
required: false
style: form
explode: true
schema:
type: string
example: 2019-03-01T01:01:01+0000
- name: toCreatedDate
in: query
description: Cards created on or before this date. Format is `yyyy-MM-dd'T'HH:mm:ss` with zero offset from UTC. Optional if fromCreatedDate is supplied.
required: false
style: form
explode: true
schema:
type: string
example: 2019-03-01T01:01:01+0000
- name: statuses
in: query
description: Statuses of cards to be retrieved
required: false
style: form
explode: true
schema:
type: string
enum:
- CREATED
- ACTIVE
- BLOCKED
- SUSPENDED
- CANCELLED
- EXPIRED
- name: id
in: query
description: The ID of the card to view.
required: false
style: form
explode: true
schema:
type: string
example: V000000001
- name: accountId
in: query
description: The ID of account to retrieve cards for.
required: false
style: form
explode: true
schema:
type: string
example: A0000001
- name: externalRef
in: query
description: The client reference of the card to retrieve.
required: false
style: form
explode: true
schema:
type: string
example: ExampleCardRef123
- name: customerId
in: query
description: The ID of the customer to retrieve cards for.
required: false
style: form
explode: true
schema:
type: string
example: C0000001
- name: currency
in: query
description: Currency to get cards for. Expected ISO Standard currency name i.e. GBP, EUR etc
required: false
style: form
explode: true
schema:
type: string
example: GBP
- name: customFieldKey
in: query
description: Custom Field Key to get cards for
required: false
style: form
explode: true
schema:
type: string
example: BookingReference
- name: customFieldValue
in: query
description: Custom Field Value corresponding to the custom field key to get cards for
required: false
style: form
explode: true
schema:
type: string
example: Booking123
- name: accountIds
in: query
description: Set of account Ids to retrieve cards for.
required: false
style: form
explode: true
schema:
type: array
items:
type: string
uniqueItems: true
example: A0000001
- name: channelManagerId
in: query
description: The Id of the Channel manager
required: false
style: form
explode: true
schema:
type: string
example: M883412312
- name: frequencyUsage
in: query
description: How many times a card can be authorised against. This parameter is rejected for physical cards
required: false
style: form
explode: true
schema:
type: string
enum:
- SINGLE_USE
- MULTI_USE
- name: page
in: query
description: Page to fetch (0 indexed)
required: false
style: form
explode: true
schema:
type: integer
format: int32
minimum: 0
- name: size
in: query
description: Size of page to fetch
required: false
style: form
explode: true
schema:
type: integer
format: int32
maximum: 500
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardPageResponse'
'204':
description: Cards successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardPageResponse'
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/cards/activities:
get:
tags:
- Channel Manager Card
summary: Retrieve channel manager's card activities
description: Retrieve card activities owned by the channel manager or over specific Date range.View card activities for a single card when a card ID is specified, time frame is optional.
operationId: channelManagerGetCardActivities
parameters:
- name: fromCreatedDate
in: query
description: 'Activities with a created date equal to or after this date. Format: ''yyyy-MM-dd''T''HH:mm:ssZ''. Value cannot be more than 7 days in the past when mandatory. Value is optional if only a single Card ID has been provided'
required: false
style: form
explode: true
schema:
type: string
example: 2019-01-01T15:14:38-0000
- name: toCreatedDate
in: query
description: 'Activities with a created date before this date. Format: ''yyyy-MM-dd''T''HH:mm:ssZ''. Value is optional if only a single Card ID has been provided or from date is within last 7 days'
required: false
style: form
explode: true
schema:
type: string
example: 2019-01-01T15:14:38-0000
- name: statuses
in: query
description: Activities with possibly multiple statuses equal to this value. Omitting this is equivalent to supplying all values
required: false
style: form
explode: true
schema:
type: string
enum:
- DECLINED
- APPROVED
- SETTLED
- EXPIRED
- APPLIED
- PENDING
- name: types
in: query
description: Activities with possibly multiple types equal to this value. Omitting this is equivalent to supplying all values
required: false
style: form
explode: true
schema:
type: string
enum:
- AUTHORISATION
- REVERSAL
- SETTLEMENT
- REFUND
- ORIGINAL_CREDIT
- OFFLINE_TRANSACTION
- ASI
- CREDIT_AUTH
- CREDIT_AUTH_REV
- name: cards
in: query
description: Activities with possibly multiple card IDs equal to this value. Only one of 'cards' or 'accounts' must be supplied
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: accounts
in: query
description: Activities with possibly multiple account IDs equal to this value. Only one of 'cards' or 'accounts' must be supplied
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: ids
in: query
description: Activities with the specified IDs. Only 'page' and/or 'size' may be used in conjunction with this filter.
required: false
style: form
explode: true
schema:
type: array
items:
type: string
uniqueItems: true
- name: orderId
in: query
description: Activites with specified Order Id
required: false
style: form
explode: true
schema:
type: integer
format: int64
- name: channelManagerId
in: query
description: Id of channel manager to return activities for
required: false
style: form
explode: true
schema:
type: string
- name: sortFields
in: query
description: A list of fields to sort the response by. Sorting will be applied in the order the fields are given
required: false
style: form
explode: true
schema:
type: string
enum:
- createdDate
- orderId
- name: sortOrders
in: query
description: A list of orders to apply to the respective sortFields. The only accepted sortOrders will be ASC and DESC (case insensitive)
required: false
style: form
explode: true
schema:
type: string
enum:
- ASC
- DESC
- name: page
in: query
description: Page to fetch (0 indexed)
required: false
style: form
explode: true
schema:
type: integer
format: int32
minimum: 0
- name: size
in: query
description: Size of page to fetch
required: false
style: form
explode: true
schema:
type: integer
format: int32
maximum: 500
responses:
'200':
description: Card activity data returned successfully
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.CardActivityPageResponse'
'400':
description: Invalid request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/card-reports:
get:
tags:
- Channel Manager Card
summary: Retrieve channel manager's card reports
description: Retrieve card reports owned by the channel manager
operationId: channelManagerSearchCardReports
parameters:
- name: fromReportDate
in: query
description: Retrieve reports equal to or after this date
required: false
style: form
explode: true
schema:
type: string
description: Retrieve reports equal to or after this date
example: '2023-01-01'
example: '2023-01-01'
- name: toReportDate
in: query
description: Retrieve reports equal to or before this date
required: false
style: form
explode: true
schema:
type: string
description: Retrieve reports equal to or before this date
example: '2023-01-30'
example: '2023-01-30'
- name: reportTypes
in: query
description: Report types
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/channelmanager.reportTypes'
example: DAILY_CARD_ACTIVITY
- name: reportSubjectIds
in: query
description: Report subject Ids (Customer BID, Partner BID or Channel Manager BID)
required: false
style: form
explode: true
schema:
$ref: '#/components/schemas/channelmanager.reportSubjectIds'
example: C1000001
- name: page
in: query
description: Page to fetch (0 indexed)
required: false
style: form
explode: true
schema:
type: integer
format: int32
default: 0
description: Page to fetch (0 indexed)
minimum: 0
- name: size
in: query
description: The size of the page(s)
required: false
style: form
explode: true
schema:
type: integer
format: int32
description: The size of the page(s)
maximum: 500
minimum: 1
- name: sortField
in: query
required: false
style: form
explode: true
schema:
type: string
pattern: (reportDate|reportType)
- name: sortOrder
in: query
required: false
style: form
explode: true
schema:
type: string
pattern: (asc|desc)
responses:
'200':
description: 'Card reports retrieved successfully '
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.ReportPageResponse'
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
'403':
description: Unauthorised request
content:
application/json:
schema:
$ref: '#/components/schemas/channelmanager.ReportPageResponse'
security:
- HMAC: []
- TOKEN: []
/channel-managers/card-reports/{reportId}/report:
get:
tags:
- Channel Manager Card
summary: Channel Manager download a specific card report
description: Download a specific card report
operationId: channelManagerRetrieveReport
parameters:
- name: reportId
in: path
description: ID of the report to retrieve
required: true
style: simple
explode: false
schema:
type: string
responses:
'200':
description: Card report retrieved successfully
content:
application/octet-stream:
schema:
type: string
format: binary
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/channelmanager.MessageResponse'
'403':
description: Forbidden. Token may be missing or invalid
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: Card report not found
content:
application/octet-stream:
schema:
type: string
format: binary
security:
- HMAC: []
- TOKEN: []
components:
schemas:
channelmanager.CardActivityResponse:
type: object
properties:
id:
type: string
description: The card activity identifier. Maximum of 10 alphanumeric characters
example: X000000001
orderId:
type: string
description: Order identifier which links together related authorisations, reversals & settlements. Maximum of 10 alphanumeric characters
example: '1234'
cardId:
type: string
description: Card identifier. Maximum of 10 alphanumeric characters
example: V000000001
type:
type: string
description: Type of card activity
enum:
- AUTHORISATION
- REVERSAL
- SETTLEMENT
- REFUND
status:
type: string
description: Status of card activity. Only applies to activities of type AUTHORISATION
enum:
- DECLINED
- APPROVED
- SETTLED
- EXPIRED
reason:
type: string
description: The reason why this activity was declined. Only applies to activities with status DECLINED
example: Account has insufficient funds
verifiedBy3DS:
type: boolean
description: Whether the activity was 3DS enabled
createdDate:
type: string
format: date-time
description: The creation date of the card activity
example: 2019-01-29T11:22:00+0000
transactionAmount:
type: number
description: The card activity transaction amount
example: '123.45'
transactionCurrency:
type: string
description: The 3 letter ISO 4217 card activity transaction currency
example: EUR
billingAmount:
type: number
description: The card activity billing amount
example: '678.91'
billingCurrency:
type: string
description: The 3 letter ISO 4217 card activity billing currency
example: GBP
fxRate:
type: number
description: The FX rate applied to any conversion between transaction & billing amount. Rounded to 6 decimal places and zero padded
example: '1.123456'
mcc:
type: string
description: The Merchant Category Code (MCC) for the card activity. Follows ISO-18245 format
example: '5182'
merchantName:
type: string
description: The merchant name
example: Loudons Cafe
merchantId:
type: string
description: The merchant ID
example: '123456789012345'
merchantCountry:
type: string
description: The 3 letter ISO 3166 merchant country code
example: GBR
acquirerReferenceNumber:
type: string
description: The Acquirer Reference Number (ARN)
example: '123451234512345'
authorisationInfo:
$ref: '#/components/schemas/channelmanager.AuthInfo'
description: Authorisation information of the activity
cardTokenId:
type: string
description: The card token associated with this activity, if a tokenised card was used.
cardTokenDeviceId:
type: string
description: The bound card token device associated with this activity, if a tokenised card was used.
required:
- billingAmount
- billingCurrency
- cardId
- createdDate
- fxRate
- id
- mcc
- orderId
- transactionAmount
- transactionCurrency
- type
channelmanager.ReportPageResponse:
type: object
properties:
content:
type: array
description: List of responses on the current page
items:
$ref: '#/components/schemas/channelmanager.ReportResponse'
size:
type: integer
format: int32
description: Page size
totalSize:
type: integer
format: int64
description: Total count
page:
type: integer
format: int32
description: Current page number, 0 based; i.e first-page = 0, second-page = 1
totalPages:
type: integer
format: int32
description: Total pages
required:
- content
- page
- size
- totalPages
- totalSize
channelmanager.CardThreeDSecureAuthentication:
type: object
properties:
otpSmsStatus:
type: string
description: The SMS one time password authentication status
enum:
- NOT_ENROLLED
- ENROLLED
- UNENROLLED
example: ENROLLED
knowledgeBaseStatus:
type: string
description: The knowledge based authentication (KBA) status
enum:
- NOT_ENROLLED
- ENROLLED
- UNENROLLED
example: ENROLLED
channelmanager.UpdateCardHolder:
type: object
properties:
billingAddress:
$ref: '#/components/schemas/channelmanager.AddressDetail'
description: Billing address for the card holder. Must be NULL for individual customers.
shippingAddress:
$ref: '#/components/schemas/channelmanager.AddressDetail'
description: Shipping address details for card. Optional for individual customers whose partner has verification type EXTERNAL
dateOfBirth:
type: string
format: date
description: Cardholder date of birth. Must match date format of yyyy-mm-dd. Required for virtual consumer and physical cards. Must be NULL for individual customers.
example: '2001-01-01'
mobileNumber:
type: string
description: Cardholder mobile number. Must start with a '+', followed by the country code and then the mobile number. Required for virtual consumer and physical cards.
example: '+447123456000'
email:
type: string
format: email
description: Cardholder email
example: cardholder@example.com
maxLength: 50
minLength: 0
channelmanager.Remove:
allOf:
- $ref: '#/components/schemas/channelmanager.PatchOperation'
description: Remove field
required:
- op
- path
channelmanager.AuthorisationWindowRequest:
type: object
properties:
startDate:
type: string
example: '2025-01-01'
endDate:
type: string
example: '2025-01-01'
channelmanager.CardReplacementRequest:
type: object
description: Replacement
properties:
reason:
type: string
description: The reason for replacing the card. Can be one of DAMAGED (physical only), LOST, STOLEN, RENEW
enum:
- STOLEN
- DAMAGED
- LOST
- RENEW
example: STOLEN
externalRef:
type: string
description: Client reference for the newly created card. Maximum of 50 alphanumeric characters (including underscore, hyphen and space).
maxLength: 50
minLength: 1
pattern: '[\w-\s]*'
design:
$ref: '#/components/schemas/channelmanager.ProductDesignDetail'
description: Design references for physical card and packaging
expiry:
type: string
description: ISO 8601 date with year & month components only. The supplied value must be in the future (cannot be the current month) and is _inclusive_ of the specified month. If no expiry is selected, the standard product expiry date will be set
example: 2026-12
shippingAddress:
$ref: '#/components/schemas/channelmanager.AddressDetail'
description: Shipping address details for card. Optional for individual customers whose partner has verification type EXTERNAL
required:
- reason
channelmanager.Test:
allOf:
- $ref: '#/components/schemas/channelmanager.PatchOperation'
- type: object
properties:
value:
$ref: '#/components/schemas/channelmanager.JsonNode'
description: Test field
required:
- op
- path
- value
channelmanager.reportTypes:
type: array
description: Report types
example: DAILY_CARD_ACTIVITY
items:
type: string
description: Report types
enum:
- DAILY_CARD_ACTIVITY
- MONTHLY_CARD_ACTIVITY
- DAILY_ACCOUNT_FUNDING
- MONTHLY_ACCOUNT_FUNDING
- DAILY_AUTH_WINDOW
- DAILY_CARD_MANAGEMENT
example: DAILY_CARD_ACTIVITY
channelmanager.CardPageResponse:
type: object
properties:
content:
type: array
description: List of responses on the current page
items:
$ref: '#/components/schemas/channelmanager.CardResponse'
size:
type: integer
format: int32
description: Page size
totalSize:
type: integer
format: int64
description: Total count
page:
type: integer
format: int32
description: Current page number, 0 based; i.e first-page = 0, second-page = 1
totalPages:
type: integer
format: int32
description: Total pages
required:
- content
- page
- size
- totalPages
- totalSize
channelmanager.AddressDetail:
type: object
description: Address details for the cardholder. Optional for individual customers whose partner has verification type EXTERNAL.
properties:
addressLine1:
type: string
description: First line of address
example: Floor 10
maxLength: 50
minLength: 1
addressLine2:
type: string
description: Second line of address
example: 80 George Street
maxLength: 50
minLength: 0
postTown:
type: string
description: Post town
example: EDINBURGH
maxLength: 20
minLength: 1
postCode:
type: string
description: Postcode
exampl
# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/modulr/refs/heads/main/openapi/modulr-channel-manager-card-api-openapi.yml