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-card-simulator-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 Card Simulator 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: Card Simulator
description: Cards Simulator API
paths:
/credit-authorisations/{creditAuthId}/reverse:
post:
tags:
- Card Simulator
summary: Reverse a credit authorisation
description: Reverse a pending credit authorisation, producing a CREDIT_AUTH_REV activity
operationId: reverseCreditAuthorisation
parameters:
- name: creditAuthId
in: path
description: ID of the CREDIT_AUTH activity to reverse
required: true
style: simple
explode: false
schema:
type: string
example: X000000001
responses:
'204':
description: No Content
'400':
description: Activity is not a CREDIT_AUTH or in PENDING status
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Activity not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/settlements:
post:
tags:
- Card Simulator
summary: Create a settlement without prior authorisation
description: Submit a settlement directly to the reconciliation pipeline without a prior authorisation
operationId: createSettlement
parameters:
- name: cardId
in: path
description: Card ID to settle against
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardSettlementRequest'
required: true
responses:
'201':
description: Created
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Card not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/refunds:
post:
tags:
- Card Simulator
summary: Create a card refund
description: Simulate a standalone refund (credit) for a card, producing a REFUND activity
operationId: refund
parameters:
- name: cardId
in: path
description: Card id to be refund
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardAuthorisationRequest'
required: true
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Not Found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/original-credits:
post:
tags:
- Card Simulator
summary: Simulate an original credit
description: Submit card activity of type original credit
operationId: createOriginalCredit
parameters:
- name: cardId
in: path
description: Card ID to credit
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CreateOriginalCreditRequest'
required: true
responses:
'204':
description: No Content
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Card not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/original-credits/{originalCreditActivityId}/reverse:
post:
tags:
- Card Simulator
summary: Reverse an original credit
description: Reverse a previously applied original credit, producing an ORIGINAL_CREDIT_REVERSAL activity
operationId: reverseOriginalCredit
parameters:
- name: cardId
in: path
description: Card ID
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
- name: originalCreditActivityId
in: path
description: ID of the ORIGINAL_CREDIT activity to reverse
required: true
style: simple
explode: false
schema:
type: string
example: X000000001
responses:
'204':
description: No Content
'400':
description: Activity is not an ORIGINAL_CREDIT in APPLIED status
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Activity not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/offline-transactions:
post:
tags:
- Card Simulator
summary: Create an offline transaction
description: Simulate an offline transaction for a card
operationId: createOfflineTransaction
parameters:
- name: cardId
in: path
description: Card ID to create an offline transaction for
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardSettlementRequest'
required: true
responses:
'201':
description: Created
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Card not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/expire:
post:
tags:
- Card Simulator
summary: Simulate a card expiry
description: Simulate the GPS CARD_EXPIRY message, transitioning the card status to EXPIRED in card-service
operationId: expireCard
parameters:
- name: cardId
in: path
description: Card ID to expire
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
responses:
'204':
description: No Content
'400':
description: Card is already expired
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Card not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/credit-authorisations:
post:
tags:
- Card Simulator
summary: Simulate a credit authorisation
description: Submit card activity of type credit authorisation
operationId: createCreditAuthorisation
parameters:
- name: cardId
in: path
description: Card ID
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CreateCreditAuthorisationRequest'
required: true
responses:
'204':
description: No Content
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Card not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/chargebacks:
post:
tags:
- Card Simulator
summary: Create a standalone chargeback
description: Simulate a standalone chargeback for a card.
operationId: createChargeback
parameters:
- name: cardId
in: path
description: Card id to chargeback
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardActivityRequest'
required: true
responses:
'204':
description: Chargeback processed
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Not Found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/authorisations:
post:
tags:
- Card Simulator
summary: Create a card authorisation
description: Create an authorisation for a card
operationId: createAuthorisation
parameters:
- name: cardId
in: path
description: Card ID to create an authorisation for this card
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardAuthorisationRequest'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardAuthorisationResponse'
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/activities/{settlementActivityId}/chargebacks:
post:
tags:
- Card Simulator
summary: Chargeback an existing settlement
description: Simulate a chargeback of an existing settlement activity.
operationId: createChargebackForSettlement
parameters:
- name: cardId
in: path
description: Card id
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
- name: settlementActivityId
in: path
description: Settlement activity BID to chargeback
required: true
style: simple
explode: false
schema:
type: string
example: X000000001
responses:
'204':
description: Chargeback processed
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: The settlement activity was not found
security:
- HMAC: []
- TOKEN: []
/cards/{cardId}/account-status-inquiry:
post:
tags:
- Card Simulator
summary: Perform an account status inquiry
description: Check whether a card is eligible for transactions without reserving funds
operationId: performAccountStatusInquiry
parameters:
- name: cardId
in: path
description: Card ID to perform the account status inquiry against
required: true
style: simple
explode: false
schema:
type: string
example: V000000001
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardAccountStatusInquiryRequest'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardAccountStatusInquiryResponse'
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Card not found
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardAccountStatusInquiryResponse'
security:
- HMAC: []
- TOKEN: []
/card-tokens/{tokenId}/devices/{deviceId}/unbind:
post:
tags:
- Card Simulator
summary: Unbind a device from a card token
description: Simulate the removal of a device binding from a card token, marking the device as DELETED within the token record in card-service
operationId: unbindDevice
parameters:
- name: tokenId
in: path
description: Card token ID
required: true
style: simple
explode: false
schema:
type: string
example: T110000001
- name: deviceId
in: path
description: Device ID to unbind
required: true
style: simple
explode: false
schema:
type: string
example: D110000001
- name: cardId
in: query
description: Card ID that owns the token
required: true
style: form
explode: true
schema:
type: string
example: V110000001
responses:
'204':
description: Device unbound successfully
'400':
description: Bad Request
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Token or device not found
security:
- HMAC: []
- TOKEN: []
/authorisations/{authId}/settle:
post:
tags:
- Card Simulator
summary: Settle the full or partial card authorisation
description: Settle the full card authorisation or supply an optional settlementAmount for partial settlement.
operationId: settleAuthorisation
parameters:
- name: authId
in: path
description: Card authorisation id
required: true
style: simple
explode: false
schema:
type: string
example: A00000000X
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.CardSettlementRequest'
responses:
'204':
description: Settlement processed
'400':
description: Validation errors or settlement amount exceeds authorised amount
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/authorisations/{authId}/reverse:
post:
tags:
- Card Simulator
summary: Reverse the card authorisation
description: Simulate a reversal of an authorization for a card
operationId: reverseAuthorisation
parameters:
- name: authId
in: path
description: Card authorisation id to be reversed
required: true
style: simple
explode: false
schema:
type: string
example: A00000000X
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cardsimulator.ReverseAuthorizationRequest'
required: true
responses:
'204':
description: No Content
'400':
description: Validation errors
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
security:
- HMAC: []
- TOKEN: []
/activities/{chargebackActivityId}/resettlement:
post:
tags:
- Card Simulator
summary: Resettlement of a chargeback
description: Simulate a resettlement (second presentment) for an existing CHARGEBACK activity, producing a RESETTLEMENT activity.
operationId: createResettlement
parameters:
- name: chargebackActivityId
in: path
description: ID of the CHARGEBACK activity to resettle
required: true
style: simple
explode: false
schema:
type: string
example: X000000001
responses:
'204':
description: Resettlement processed
'400':
description: Activity is not a CHARGEBACK
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Chargeback activity not found
security:
- HMAC: []
- TOKEN: []
/activities/{chargebackActivityId}/chargeback-reversal:
post:
tags:
- Card Simulator
summary: Reverse a chargeback
description: Simulate a chargeback reversal for an existing CHARGEBACK activity, producing a CHARGEBACK_REVERSAL activity.
operationId: createChargebackReversal
parameters:
- name: chargebackActivityId
in: path
description: ID of the CHARGEBACK activity to reverse
required: true
style: simple
explode: false
schema:
type: string
example: X000000001
responses:
'204':
description: Chargeback reversal processed
'400':
description: Activity is not a CHARGEBACK in APPLIED status
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/cardsimulator.MessageResponse'
'404':
description: Chargeback activity not found
security:
- HMAC: []
- TOKEN: []
components:
schemas:
cardsimulator.CardSettlementRequest:
type: object
description: Optional settlement details. Omit body for full settlement.
properties:
transactionAmount:
type: number
description: The transaction amount
example: '5.45'
transactionCurrency:
type: string
description: The transaction currency
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
fxRate:
type: number
description: The foreign exchange rate
example: '0.8'
mcc:
type: string
description: Merchant Category Code
example: '5812'
required:
- fxRate
- mcc
- transactionAmount
- transactionCurrency
cardsimulator.CreateCreditAuthorisationRequest:
type: object
description: Details of the credit authorisation
properties:
transactionAmount:
type: number
transactionCurrency:
type: string
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
fxRate:
type: number
mcc:
type: string
required:
- fxRate
- mcc
- transactionAmount
- transactionCurrency
cardsimulator.CardAuthorisationRequest:
type: object
description: Details of the authorisation to create
properties:
transactionAmount:
type: number
description: The transaction amount
example: '5.45'
transactionCurrency:
type: string
description: The transaction currency. Defaults to the card's billing currency
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
fxRate:
type: number
description: The foreign exchange rate to use, when transaction currency differs from billing currency. Defaults to 1.0
example: '0.8'
mcc:
type: string
description: Merchant Category Code
example: '5812'
required:
- mcc
- transactionAmount
cardsimulator.CardAccountStatusInquiryResponse:
type: object
description: CardAccountStatusInquiryResponse
properties:
cardId:
type: string
description: Card Id
example: V000000001
status:
type: string
description: Account status inquiry result [APPROVED, DECLINED]
enum:
- APPROVED
- DECLINED
example: APPROVED
required:
- cardId
- status
cardsimulator.MessageResponse:
type: object
properties:
field:
type: string
code:
type: string
enum:
- GENERAL
- BUSINESSRULE
- MFASTATUS
- MFAERROR
- MFATIMEOUT
- MFADEVICEMM
- MFAMESSAGEINVALID
- NOTFOUND
- DUPLICATE
- INVALID
- CONNECTION
- RETRY
- RATELIMIT
- PERMISSION
- NOTACCEPTABLE
- MFAVERIFICATION
- TOKENEXPIRED
errorCode:
type: string
message:
type: string
sourceService:
type: string
cardsimulator.ReverseAuthorizationRequest:
type: object
description: Partial reversal amount. Omit body for full reversal
properties:
reversalAmount:
type: number
description: Amount to reverse. If absent or equal to the open amount, a full reversal is performed. Must not exceed the open amount.
example: '3.00'
cardsimulator.CardAuthorisationResponse:
type: object
description: CardAuthorisationResponse
properties:
authorisationId:
type: string
description: Authorisation Id
example: A00000000X
cardId:
type: string
description: Card Id
example: V000000001
status:
type: string
description: Authorisation Status [APPROVED, REVERSED, SETTLED]
enum:
- APPROVED
- REVERSED
- SETTLED
example: APPROVED
transactionAmount:
type: number
description: Authorisation Transaction Amount
example: 100
transactionCurrency:
type: string
description: Currency for this transaction
enum:
- GBP
- EUR
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BN
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/modulr/refs/heads/main/openapi/modulr-card-simulator-api-openapi.yml