Skip to main content
POST
/
quotes
curl --request POST \
--url https://api.lightspark.com/grid/2025-10-13/quotes \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{
"source": {
"accountId": "InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"destination": {
"accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
"currency": "EUR"
},
"lockedCurrencySide": "SENDING",
"lockedCurrencyAmount": 10000,
"description": "Transfer between accounts, either internal or external."
}'
{
  "quoteId": "Quote:019542f5-b3e7-1d02-0000-000000000006",
  "status": "PENDING",
  "createdAt": "2025-10-03T12:00:00Z",
  "expiresAt": "2025-10-03T12:05:00Z",
  "source": {
    "accountId": "InternalAccount:85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
    "currency": "USD"
  },
  "destination": {
    "accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
    "currency": "EUR"
  },
  "sendingCurrency": {
    "code": "USD",
    "name": "United States Dollar",
    "symbol": "$",
    "decimals": 2
  },
  "receivingCurrency": {
    "code": "USD",
    "name": "United States Dollar",
    "symbol": "$",
    "decimals": 2
  },
  "totalSendingAmount": 123010,
  "totalReceivingAmount": 1000,
  "exchangeRate": 123,
  "feesIncluded": 10,
  "paymentInstructions": [
    {
      "accountType": "US_ACCOUNT",
      "accountNumber": "1234567890",
      "routingNumber": "021000021",
      "bankName": "Chase Bank",
      "referenceCode": "REF123456"
    },
    {
      "accountType": "SPARK_WALLET",
      "address": "spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu",
      "invoice": "lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs"
    }
  ],
  "transactionId": "Transaction:019542f5-b3e7-1d02-0000-000000000005",
  "originalQuoteId": "Quote:019542f5-b3e7-1d02-0000-000000000001",
  "rateDetails": {
    "counterpartyMultiplier": 1.08,
    "counterpartyFixedFee": 10,
    "gridApiMultiplier": 0.925,
    "gridApiFixedFee": 10,
    "gridApiVariableFeeRate": 0.003,
    "gridApiVariableFeeAmount": 30
  }
}

Authorizations

Authorization
string
header
required

API token authentication using format <api token id>:<api client secret>

Body

application/json
source
object
required

Source account details

  • Account
  • Real-time funding
destination
object
required

Destination account details

  • Account
  • UMA Address
  • External Account Details
lockedCurrencySide
enum<string>
required

The side of the quote which should be locked and specified in the lockedCurrencyAmount. For example, if I want to send exactly $5 MXN from my wallet, I would set this to "sending", and the lockedCurrencyAmount to 500 (in cents). If I want the receiver to receive exactly $10 USD, I would set this to "receiving" and the lockedCurrencyAmount to 10000 (in cents).

Available options:
SENDING,
RECEIVING
lockedCurrencyAmount
integer
required

The amount to send/receive in the smallest unit of the locked currency (eg. cents). See lockedCurrencySide for more information.

Required range: 0 < x <= 9000000000000000
Example:

1000

lookupId
string

Lookup ID from a previous receiver lookup request. If provided, this can make the quote creation more efficient by reusing cached lookup data. NOTE: This is required for UMA destinations due to counterparty institution requirements. See senderCustomerInfo for more information.

Example:

"Lookup:019542f5-b3e7-1d02-0000-000000000009"

immediatelyExecute
boolean

Whether to immediately execute the quote after creation. If true, the quote will be executed and the transaction will be created at the current exchange rate. It should only be used if you don't want to lock and view rate details before executing the quote. If you are executing a pre-existing quote, use the /quotes/{quoteId}/execute endpoint instead. This is false by default.

Example:

false

description
string

Optional description/memo for the transfer

Example:

"Invoice #1234 payment"

senderCustomerInfo
object

Only relevant for UMA destinations. Key-value pairs of information about the sender which was requested by the counterparty (recipient) institution. Any fields specified in requiredPayerDataFields from the response of the /receiver/uma/{receiverUmaAddress} (lookupUma) endpoint MUST be provided here if they were requested. If the counterparty (recipient) institution did not request any information, this field can be omitted.

Example:
{
"FULL_NAME": "Jane Receiver",
"NATIONALITY": "FR"
}

Response

Transfer quote created successfully. The response includes exchange rates, fees, and transfer details. For transfers involving UMA addresses, payment instructions are also included for execution through banking systems.

quoteId
string
required

Unique identifier for this quote

Example:

"Quote:019542f5-b3e7-1d02-0000-000000000006"

status
enum<string>
required

Current status of the quote

Available options:
PENDING,
PROCESSING,
COMPLETED,
FAILED,
EXPIRED
Example:

"PENDING"

createdAt
string<date-time>
required

When this quote was created

Example:

"2025-10-03T12:00:00Z"

expiresAt
string<date-time>
required

When this quote expires (typically 1-5 minutes after creation)

Example:

"2025-10-03T12:05:00Z"

source
object
required

Source account details

  • Account
  • Real-time funding
destination
object
required

Destination account details

  • Account Destination
  • UMA Address Destination
sendingCurrency
object
required

Currency for the sending amount

receivingCurrency
object
required

Currency for the receiving amount

totalSendingAmount
integer
required

The total amount that will be sent in the smallest unit of the sending currency (eg. cents).

Required range: x > 0
Example:

123010

totalReceivingAmount
integer
required

The total amount that will be received in the smallest unit of the receiving currency (eg. cents).

Required range: x > 0
Example:

1000

exchangeRate
number
required

Number of sending currency units per receiving currency unit.

Required range: x > 0
feesIncluded
integer
required

The fees associated with the quote in the smallest unit of the sending currency (eg. cents).

Required range: x >= 0
Example:

10

transactionId
string
required

The ID of the transaction created from this quote.

Example:

"Transaction:019542f5-b3e7-1d02-0000-000000000005"

paymentInstructions
object[]

Payment instructions for executing the payment. This is not required when using an internal account source.

Example:
[
{
"accountType": "US_ACCOUNT",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"bankName": "Chase Bank",
"referenceCode": "REF123456"
},
{
"accountType": "SPARK_WALLET",
"address": "spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu",
"invoice": "lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs"
}
]
originalQuoteId
string

ID of the quote that is being retried

Example:

"Quote:019542f5-b3e7-1d02-0000-000000000001"

rateDetails
object

Details about the rate and fees for the transaction.

I