Lightspark · Schema
Quote
CompanyPaymentsCross-Border PaymentsStablecoinsBitcoinLightning NetworkEmbedded FinanceAgentic PaymentsCardsKYCFinancial ServicesForeign Exchange
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Unique identifier for this quote |
| status | string | Current status of the quote. `PENDING_AUTHORIZATION` occurs only for customers in a region where Strong Customer Authentication is required (e.g. EU): the quote carries an `scaChallenge` that must be |
| createdAt | string | When this quote was created |
| expiresAt | string | Absolute UTC timestamp when the rate locked in this quote becomes invalid and the quote can no longer be executed. The window depends on the rail and corridor: instant rails (Lightning, Spark, USDC on |
| source | object | |
| destination | object | |
| sendingCurrency | object | Currency for the sending amount |
| receivingCurrency | object | Currency for the receiving amount |
| totalSendingAmount | integer | The total amount that will be sent in the smallest unit of the sending currency (eg. cents). |
| totalReceivingAmount | integer | The total amount that will be received in the smallest unit of the receiving currency (eg. cents). |
| exchangeRate | number | Number of sending currency units per receiving currency unit. |
| feesIncluded | integer | The fees associated with the quote in the smallest unit of the sending currency (eg. cents). Note: this value may fluctuate between quotes — some underlying fee components are defined in the receiving |
| paymentInstructions | array | Payment instructions for executing the payment. This is not required when using an internal account source. |
| transactionId | string | The ID of the transaction created from this quote. |
| remittanceInformation | string | Free-form information about the payment that travels with it to the recipient, as provided on the quote request. The field this populates depends on the payment rail: for ACH it populates the Addenda |
| counterpartyInformation | object | Additional information about the counterparty, if available and required by the platform in their configuration. |
| rateDetails | object | Details about the rate and fees for the transaction. |
| scaChallenge | object | Present only while `status` is `PENDING_AUTHORIZATION`: the Strong Customer Authentication challenge to satisfy before this quote can be executed (or, for realtime-funding sources, before `paymentInst |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/lightspark/main/json-schema/lightspark-quote-schema.json",
"title": "Quote",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/lightspark-agent-operations-api-openapi.yml#/components/schemas/Quote",
"type": "object",
"required": [
"id",
"status",
"expiresAt",
"createdAt",
"source",
"destination",
"sendingCurrency",
"receivingCurrency",
"totalSendingAmount",
"totalReceivingAmount",
"exchangeRate",
"feesIncluded",
"transactionId"
],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for this quote"
},
"status": {
"type": "string",
"enum": [
"PENDING",
"PENDING_AUTHORIZATION",
"PROCESSING",
"COMPLETED",
"FAILED",
"EXPIRED"
],
"description": "Current status of the quote. `PENDING_AUTHORIZATION` occurs only for customers in a region where Strong Customer Authentication is required (e.g. EU): the quote carries an `scaChallenge` that must be authorized before execution, and for realtime-funding sources `paymentInstructions` are withheld until it is satisfied."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "When this quote was created"
},
"expiresAt": {
"type": "string",
"format": "date-time",
"description": "Absolute UTC timestamp when the rate locked in this quote becomes invalid and the quote can no longer be executed. The window depends on the rail and corridor: instant rails (Lightning, Spark, USDC on Solana/Base/Polygon, RTP, SEPA Instant) typically expire in 1–5 minutes; corridors with longer settlement guarantees may have longer windows. Always rely on this timestamp rather than assuming a fixed window."
},
"source": {
"$ref": "#/$defs/QuoteSourceOneOf"
},
"destination": {
"$ref": "#/$defs/QuoteDestinationOneOf"
},
"sendingCurrency": {
"$ref": "#/$defs/Currency",
"description": "Currency for the sending amount"
},
"receivingCurrency": {
"$ref": "#/$defs/Currency",
"description": "Currency for the receiving amount"
},
"totalSendingAmount": {
"type": "integer",
"format": "int64",
"description": "The total amount that will be sent in the smallest unit of the sending currency (eg. cents).",
"exclusiveMinimum": 0
},
"totalReceivingAmount": {
"type": "integer",
"format": "int64",
"description": "The total amount that will be received in the smallest unit of the receiving currency (eg. cents).",
"exclusiveMinimum": 0
},
"exchangeRate": {
"type": "number",
"description": "Number of sending currency units per receiving currency unit.",
"exclusiveMinimum": 0
},
"feesIncluded": {
"type": "integer",
"format": "int64",
"description": "The fees associated with the quote in the smallest unit of the sending currency (eg. cents). Note: this value may fluctuate between quotes — some underlying fee components are defined in the receiving currency, so their equivalent in the sending currency moves with the FX rate. The fees shown here are locked only for the lifetime of this quote.",
"minimum": 0
},
"paymentInstructions": {
"type": "array",
"description": "Payment instructions for executing the payment. This is not required when using an internal account source.",
"items": {
"$ref": "#/$defs/PaymentInstructions"
}
},
"transactionId": {
"type": "string",
"description": "The ID of the transaction created from this quote."
},
"remittanceInformation": {
"type": "string",
"maxLength": 80,
"description": "Free-form information about the payment that travels with it to the recipient, as provided on the quote request. The field this populates depends on the payment rail: for ACH it populates the Addenda record, for FedNow and RTP it populates the remittanceInformation field, and for wires it populates the OBI (Originator to Beneficiary Information) / beneficiary information."
},
"counterpartyInformation": {
"$ref": "#/$defs/CounterpartyInformation",
"description": "Additional information about the counterparty, if available and required by the platform in their configuration."
},
"rateDetails": {
"$ref": "#/$defs/OutgoingRateDetails",
"description": "Details about the rate and fees for the transaction."
},
"scaChallenge": {
"$ref": "#/$defs/ScaChallenge",
"readOnly": true,
"description": "Present only while `status` is `PENDING_AUTHORIZATION`: the Strong Customer Authentication challenge to satisfy before this quote can be executed (or, for realtime-funding sources, before `paymentInstructions` are issued). Omitted for customers outside SCA-regulated regions (non-EU)."
}
},
"$defs": {
"AccountDestination": {
"title": "Account",
"allOf": [
{
"$ref": "#/$defs/BaseDestination"
},
{
"type": "object",
"required": [
"accountId",
"destinationType"
],
"properties": {
"destinationType": {
"type": "string",
"enum": [
"ACCOUNT"
]
},
"accountId": {
"type": "string",
"description": "Destination account identifier"
},
"paymentRail": {
"allOf": [
{
"$ref": "#/$defs/PaymentRail"
},
{
"description": "The payment rail to use for the transfer. Must be one of the rails supported by the destination account. If not specified, the system will select a default rail."
}
]
}
},
"description": "Destination account details"
}
]
},
"AccountQuoteSource": {
"title": "Account",
"allOf": [
{
"$ref": "#/$defs/BaseQuoteSource"
},
{
"type": "object",
"required": [
"accountId",
"sourceType"
],
"properties": {
"sourceType": {
"type": "string",
"enum": [
"ACCOUNT"
]
},
"accountId": {
"type": "string",
"description": "Source account identifier"
},
"customerId": {
"type": "string",
"description": "Required when funding from an FBO account to identify the customer on whose behalf the transaction is being initiated. Otherwise, will default to the customerId of the account owner."
}
},
"description": "Source account details"
}
]
},
"AedAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/AedAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER"
]
}
}
}
}
]
},
"AedAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"iban"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"AED_ACCOUNT"
]
},
"iban": {
"type": "string",
"description": "UAE IBAN (23 characters, starting with AE)",
"minLength": 23,
"maxLength": 23,
"pattern": "^AE[0-9]{21}$"
},
"swiftCode": {
"type": "string",
"description": "The SWIFT/BIC code of the bank",
"minLength": 8,
"maxLength": 11,
"pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
}
}
},
"BaseDestination": {
"type": "object",
"required": [
"destinationType"
],
"properties": {
"destinationType": {
"$ref": "#/$defs/DestinationType"
}
}
},
"BasePaymentAccountInfo": {
"type": "object",
"required": [
"accountType"
],
"properties": {
"accountType": {
"$ref": "#/$defs/PaymentAccountType"
}
}
},
"BaseQuoteSource": {
"type": "object",
"required": [
"sourceType"
],
"properties": {
"sourceType": {
"$ref": "#/$defs/QuoteSourceType"
}
}
},
"BaseWalletInfo": {
"type": "object",
"required": [
"address",
"accountType"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"BASE_WALLET"
]
},
"address": {
"type": "string",
"description": "Base eth wallet address"
}
}
},
"BdtAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/BdtAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER",
"MOBILE_MONEY"
]
}
}
}
}
]
},
"BdtAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankName"
],
"description": "Required fields depend on the selected paymentRails:\n- BANK_TRANSFER: accountNumber, bankName\n- MOBILE_MONEY: bankName, phoneNumber",
"properties": {
"accountType": {
"type": "string",
"enum": [
"BDT_ACCOUNT"
]
},
"accountNumber": {
"type": "string",
"description": "The account number of the bank",
"minLength": 1,
"maxLength": 34
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
},
"branchCode": {
"type": "string",
"description": "The branch code",
"minLength": 5,
"maxLength": 5,
"pattern": "^[0-9]{5}$"
},
"swiftCode": {
"type": "string",
"description": "The SWIFT/BIC code of the bank",
"minLength": 8,
"maxLength": 11,
"pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
},
"phoneNumber": {
"type": "string",
"description": "The phone number in international format",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+[0-9]{6,14}$"
}
}
},
"BwpAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/BwpAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"MOBILE_MONEY"
]
}
}
}
}
]
},
"BwpAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"phoneNumber",
"provider"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"BWP_ACCOUNT"
]
},
"phoneNumber": {
"type": "string",
"description": "The phone number in international format",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+[0-9]{6,14}$"
},
"provider": {
"type": "string",
"description": "The mobile money provider name",
"minLength": 1,
"maxLength": 255
}
}
},
"CadAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/CadAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER"
]
}
}
}
}
]
},
"CadAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankCode",
"branchCode",
"accountNumber"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"CAD_ACCOUNT"
]
},
"bankCode": {
"type": "string",
"description": "Canadian financial institution number (3 digits)",
"minLength": 3,
"maxLength": 3,
"pattern": "^[0-9]{3}$"
},
"branchCode": {
"type": "string",
"description": "Transit number identifying the branch (5 digits)",
"minLength": 5,
"maxLength": 5,
"pattern": "^[0-9]{5}$"
},
"accountNumber": {
"type": "string",
"description": "Bank account number (7-12 digits)",
"minLength": 7,
"maxLength": 12,
"pattern": "^[0-9]{7,12}$"
}
}
},
"CnyAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/CnyAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER",
"MOBILE_MONEY"
]
}
}
}
}
]
},
"CnyAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankName"
],
"description": "Required fields depend on the selected paymentRails:\n- BANK_TRANSFER: accountNumber, bankName\n- MOBILE_MONEY: bankName, phoneNumber",
"properties": {
"accountType": {
"type": "string",
"enum": [
"CNY_ACCOUNT"
]
},
"accountNumber": {
"type": "string",
"description": "The account number of the bank",
"minLength": 1,
"maxLength": 34
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
},
"phoneNumber": {
"type": "string",
"description": "The phone number in international format",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+[0-9]{6,14}$"
}
}
},
"CounterpartyInformation": {
"type": "object",
"description": "Additional information about the counterparty, if available and relevant to the transaction and platform.",
"additionalProperties": true
},
"Currency": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Three-letter currency code (ISO 4217) for fiat currencies. Some cryptocurrencies may use their own ticker symbols (e.g. \"BTC\" for Bitcoin, \"USDC\" for USDC, etc.)"
},
"name": {
"type": "string",
"description": "Full name of the currency"
},
"symbol": {
"type": "string",
"description": "Symbol of the currency"
},
"decimals": {
"type": "integer",
"description": "Number of decimal places for the currency",
"minimum": 0
}
}
},
"DestinationType": {
"type": "string",
"enum": [
"ACCOUNT",
"UMA_ADDRESS"
],
"description": "Type of payment destination"
},
"DkkAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/DkkAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"SEPA",
"SEPA_INSTANT"
]
}
}
}
}
]
},
"DkkAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"iban"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"DKK_ACCOUNT"
]
},
"iban": {
"type": "string",
"description": "Danish IBAN (18 characters, starting with DK)",
"minLength": 18,
"maxLength": 18,
"pattern": "^DK[0-9]{16}$"
},
"swiftCode": {
"type": "string",
"description": "The SWIFT/BIC code of the bank",
"minLength": 8,
"maxLength": 11,
"pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
}
}
},
"EgpAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/EgpAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER",
"MOBILE_MONEY"
]
}
}
}
}
]
},
"EgpAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankName"
],
"description": "Required fields depend on the selected paymentRails:\n- BANK_TRANSFER: bankName, iban\n- MOBILE_MONEY: bankName, phoneNumber",
"properties": {
"accountType": {
"type": "string",
"enum": [
"EGP_ACCOUNT"
]
},
"iban": {
"type": "string",
"description": "Egyptian IBAN (29 characters, starting with EG)",
"minLength": 29,
"maxLength": 29,
"pattern": "^EG[0-9]{27}$"
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
},
"phoneNumber": {
"type": "string",
"description": "The phone number in international format",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+[0-9]{6,14}$"
}
}
},
"EthereumWalletInfo": {
"type": "object",
"required": [
"address",
"accountType"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"ETHEREUM_WALLET"
]
},
"address": {
"type": "string",
"description": "Ethereum L1 wallet address"
}
}
},
"EurAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/EurAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"SEPA",
"SEPA_INSTANT"
]
}
}
}
}
]
},
"EurAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"iban"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"EUR_ACCOUNT"
]
},
"iban": {
"type": "string",
"description": "The IBAN of the bank account",
"minLength": 15,
"maxLength": 34,
"pattern": "^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$"
},
"swiftCode": {
"type": "string",
"description": "The SWIFT/BIC code of the bank",
"minLength": 8,
"maxLength": 11,
"pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
}
}
},
"GbpAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/GbpAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"FASTER_PAYMENTS"
]
}
}
}
}
]
},
"GbpAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"sortCode",
"accountNumber"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"GBP_ACCOUNT"
]
},
"sortCode": {
"type": "string",
"description": "The UK sort code",
"minLength": 6,
"maxLength": 6,
"pattern": "^[0-9]{6}$"
},
"accountNumber": {
"type": "string",
"description": "UK bank account number (8 digits)",
"minLength": 8,
"maxLength": 8,
"pattern": "^[0-9]{8}$"
}
}
},
"GhsAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/GhsAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER",
"MOBILE_MONEY"
]
}
}
}
}
]
},
"GhsAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankName"
],
"description": "Required fields depend on the selected paymentRails:\n- BANK_TRANSFER: accountNumber, bankName\n- MOBILE_MONEY: bankName, phoneNumber",
"properties": {
"accountType": {
"type": "string",
"enum": [
"GHS_ACCOUNT"
]
},
"accountNumber": {
"type": "string",
"description": "The account number of the bank",
"minLength": 1,
"maxLength": 34
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
},
"phoneNumber": {
"type": "string",
"description": "The phone number in international format",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+[0-9]{6,14}$"
}
}
},
"GtqAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/GtqAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER"
]
}
}
}
}
]
},
"GtqAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"accountNumber",
"bankAccountType",
"bankName"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"GTQ_ACCOUNT"
]
},
"accountNumber": {
"type": "string",
"description": "The account number of the bank",
"minLength": 1,
"maxLength": 34
},
"bankAccountType": {
"type": "string",
"description": "The bank account type",
"enum": [
"CHECKING",
"SAVINGS"
]
},
"bankName": {
"type": "string",
"description": "The name of the beneficiary's bank",
"minLength": 1,
"maxLength": 255
}
}
},
"HkdAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/HkdAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER"
]
}
}
}
}
]
},
"HkdAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankName",
"accountNumber",
"swiftCode"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"HKD_ACCOUNT"
]
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
},
"accountNumber": {
"type": "string",
"description": "Hong Kong bank account number",
"minLength": 1,
"maxLength": 34
},
"swiftCode": {
"type": "string",
"description": "The SWIFT/BIC code of the bank",
"minLength": 8,
"maxLength": 11,
"pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
}
}
},
"HtgAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/HtgAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"MOBILE_MONEY"
]
}
}
}
}
]
},
"HtgAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"phoneNumber"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"HTG_ACCOUNT"
]
},
"phoneNumber": {
"type": "string",
"description": "The phone number in international format",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+[0-9]{6,14}$"
}
}
},
"IdrAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/IdrAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER"
]
}
}
}
}
]
},
"IdrAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"bankName",
"accountNumber",
"swiftCode",
"phoneNumber"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"IDR_ACCOUNT"
]
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
},
"accountNumber": {
"type": "string",
"description": "Indonesian bank account number",
"minLength": 1,
"maxLength": 34
},
"swiftCode": {
"type": "string",
"description": "The SWIFT/BIC code of the bank",
"minLength": 8,
"maxLength": 11,
"pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
},
"phoneNumber": {
"type": "string",
"description": "Indonesian phone number for e-wallet payments",
"minLength": 7,
"maxLength": 15,
"pattern": "^\\+62[0-9]{9,12}$"
}
}
},
"InrAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/InrAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"UPI",
"NEFT",
"RTGS"
]
}
}
}
}
]
},
"InrAccountInfoBase": {
"type": "object",
"required": [
"accountType"
],
"description": "Required fields depend on the selected paymentRails:\n- NEFT: accountNumber, ifsc, rail\n- RTGS: accountNumber, ifsc, rail\n- UPI: vpa",
"properties": {
"accountType": {
"type": "string",
"enum": [
"INR_ACCOUNT"
]
},
"vpa": {
"type": "string",
"description": "The UPI Virtual Payment Address",
"minLength": 3,
"maxLength": 255,
"pattern": "^[a-zA-Z0-9.\\-_]+@[a-zA-Z0-9]+$"
},
"accountNumber": {
"type": "string",
"description": "Indian bank account number (9–18 digits)",
"minLength": 9,
"maxLength": 18,
"pattern": "^[0-9]{9,18}$"
},
"ifsc": {
"type": "string",
"description": "The Indian Financial System Code (IFSC) of the beneficiary's bank branch (NEFT/RTGS)",
"minLength": 11,
"maxLength": 11,
"pattern": "^[A-Z]{4}0[A-Z0-9]{6}$"
},
"rail": {
"type": "string",
"description": "The payment rail to route the payout over, for currencies that support more than one (e.g. NEFT or RTGS for INR).",
"minLength": 1,
"maxLength": 32
},
"bankName": {
"type": "string",
"description": "The name of the bank",
"minLength": 1,
"maxLength": 255
}
}
},
"JmdAccountInfo": {
"allOf": [
{
"$ref": "#/$defs/JmdAccountInfoBase"
},
{
"type": "object",
"required": [
"paymentRails"
],
"properties": {
"paymentRails": {
"type": "array",
"items": {
"type": "string",
"enum": [
"BANK_TRANSFER"
]
}
}
}
}
]
},
"JmdAccountInfoBase": {
"type": "object",
"required": [
"accountType",
"accountNumber",
"branchCode",
"bankAccountType",
"bankName"
],
"properties": {
"accountType": {
"type": "string",
"enum": [
"JMD_ACCOUNT"
]
},
"accountNumber": {
"type": "string",
"description": "The account number of the bank",
"minLength": 1,
"maxLength": 34
},
"branchCode": {
"type": "string",
"description": "The branch code",
"minLength": 5,
"maxL
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lightspark/refs/heads/main/json-schema/lightspark-quote-schema.json
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/lightspark-quote"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.