Execute a quote
Execute a quote by its ID. This endpoint initiates the transfer between the source and destination accounts.
This endpoint can only be used for quotes with a source which is either an internal account,
or has direct pull functionality (e.g. ACH pull with an external account).
When the quote’s source is an internal account of type EMBEDDED_WALLET,
the request must include a Grid-Wallet-Signature header. The header value
is the full Grid wallet signature built over the payloadToSign value from
the quote’s paymentInstructions[].accountOrWalletInfo entry with the
session private key of a verified authentication credential on the source
Embedded Wallet.
Requires a token with the TRANSACT permission; VIEW alone is not
sufficient to release a transfer. On an EMBEDDED_WALLET source this is in
addition to the Grid-Wallet-Signature header: the signature proves the
wallet holder authorized the payment, while TRANSACT is what authorizes
your integration to release it.
Once executed, the quote cannot be cancelled and the transfer will be processed.
Authorizations
Headers
Full Grid wallet signature over the payloadToSign returned in the quote's paymentInstructions[].accountOrWalletInfo entry, produced with the session private key of a verified authentication credential on the source Embedded Wallet. Required when the quote's source is an internal account of type EMBEDDED_WALLET; ignored for other source types.
Body
Optional body for executing a quote. Only needed to request a specific Strong Customer Authentication factor (scaFactor) for the challenge this call issues; omit the body entirely otherwise.
Optional preferred factor for the Strong Customer Authentication challenge this call issues. Only relevant for customers in a region where SCA is required (e.g. EU); ignored otherwise. Valid values for a per-transaction challenge are SMS_OTP (default) and PASSKEY — TOTP cannot carry the required dynamic linking and is rejected here. Omit to default to SMS_OTP.
SMS_OTP, TOTP, PASSKEY Response
Quote processed. The outcome depends on whether SCA applies to the customer (currently EU customers):
-
No SCA required: the transfer is initiated and the quote status advances (
PROCESSING/COMPLETED). -
SCA required: the transfer is not initiated yet. The quote is returned with status
PENDING_AUTHORIZATIONand anscaChallenge; release the transfer by authorizing the quote you already hold —POST /quotes/{quoteId}/authorize(re-callingexecutereturns 409). A pre-funded send is a single challenge, so one authorization releases it. The challenge (and its SMS code / passkey assertion) only comes into existence once this call initiates the transfer, so the proof is always supplied on the follow-up authorize, never inline on this call. If an SMS code lapses, re-send it viaPOST /quotes/{quoteId}/authorize/resend.
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.
PENDING, PENDING_AUTHORIZATION, PROCESSING, COMPLETED, FAILED, EXPIRED "PENDING"
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.
"2025-10-03T12:05:00Z"
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.
x >= 010
The portion of feesIncluded collected by the platform (platform-configured transaction fees), in the smallest unit of the sending currency. 0 when the platform has no applicable fee configured. Already included in feesIncluded. May be omitted from payloads produced before platform fees existed.
x >= 05
The purpose of payment the quote was created with. Present only when the quote request set purposeOfPayment.
GIFT, SELF, GOODS_OR_SERVICES, EDUCATION, HEALTH_OR_MEDICAL, REAL_ESTATE_PURCHASE, TAX_PAYMENT, LOAN_PAYMENT, UTILITY_BILL, DONATION, TRAVEL, FAMILY_SUPPORT, SALARY_PAYMENT, EXPORTED_GOODS_PREPAYMENT, EXPORTED_GOODS_POSTPAYMENT, SERVICE_CHARGES, OFFICE_EXPENSES, DELIVERY_FEES, HOTEL_ACCOMMODATION, COMMISSION_ON_GOODS, COMMISSION_ON_SERVICES, ACCOUNTING_SERVICES, EXHIBITION_SERVICES, OTHER IDs of the supporting documents attached to the payment behind this quote, as passed in documentIds on POST /quotes. Present only when the quote was created with documentIds. Grid returns such a quote only after it has attached every document. Call GET /payment-documents/{paymentDocumentId} for each document's details, such as its documentType and its ATTACHED status.