QuoteStatus
PaymentStatus
Outcome of the payout. The call performs the payout and answers with the outcome, so COMPLETED or FAILED can both come back synchronously. RETURNED, and a FAILED that only surfaces on the rail after a COMPLETED response, arrive later via the failure webhook.
RiskStatus
RiskStatusReason
risk_status_reason_typerisk_status_reason_categoryrisk_status_reason_messageWebhookEnvelope
event_idevent_typeoccurred_atdataCreateQuoteRequest
tesser_quote_idUUIDv4 minted by Tesser before the call; doubles as the idempotency key.
customerClosed enum at launch. Cross-checks the customer context carried by the API key.
desired_gtq^[0-9]+(\.[0-9]+)?$ · requiredGTQ the customer wants to end up with. Max 2 decimal places.
Quote
tesser_quote_idnexa_quote_idNexa's own reference, for support and reconciliation.
quote_statususdc_gtq_price^[0-9]+(\.[0-9]+)?$ · requiredGTQ per 1 USDC. Max 6 decimal places.
quoted_gtq^[0-9]+(\.[0-9]+)?$ · requiredGTQ Nexa will deliver. May be less than desired_gtq, which is a partial fill, and the remainder is a new quote.
usdc_amount^[0-9]+(\.[0-9]+)?$ · requiredUSDC Tesser must deliver = quoted_gtq / usdc_gtq_price, rounded UP at 6dp. Nexa is the single calculator; Tesser echoes this value and never re-derives it.
expires_atAcceptance deadline. Unaccepted quotes expire silently; there is no expiry webhook.
created_atAcceptQuoteResponse
tesser_quote_idquote_statusdeposit_deadlineHow long Nexa holds the locked rate waiting for the first deposit report. Past it with no deposit reported, the quote is EXPIRED (window length: §11 Q2).
accepted_atReportDepositRequest
tesser_deposit_idUUIDv4 minted by Tesser; the idempotency key for this individual report.
usdc_amount^[0-9]+(\.[0-9]+)?$ · requiredUSDC that actually arrived in this report. Max 6 decimal places.
risk_statusTesser core-API RiskStatusReason objects, verbatim.
transaction_hashesOn-chain transaction hash(es) carrying this deposit, the anchor both ops teams reconcile against the chain with.
ReportDepositResponse
tesser_quote_idtesser_deposit_idquote_statususdc_total_reported^[0-9]+(\.[0-9]+)?$ · requiredSum across all reports on this quote.
reported_atDepositReport
tesser_deposit_idusdc_amount^[0-9]+(\.[0-9]+)?$ · requiredrisk_statustransaction_hashesreported_atCreatePaymentRequest
tesser_quote_idgtq_amount^[0-9]+(\.[0-9]+)?$ · requiredMust equal the amount Nexa reported in its own quote.credit.confirmed event. Deliberately redundant: cheap insurance against wrong-quote-ID bugs in a money-moving instruction.
Payment
nexa_payment_idtesser_quote_idquote_statuspayment_statusOutcome of the payout for this payment.
gtq_amount^[0-9]+(\.[0-9]+)?$ · requiredcreated_atcompleted_atWhen Nexa completed the payout. Present only when payment_status is COMPLETED.
status_metadataFree-form: rail references, failure reasons. Shape varies by rail, so it is deliberately untyped. Carries the decline reason when a synchronous decline returns payment_status: "FAILED" on this call.
QuotePaymentSummary
nexa_payment_idpayment_statusOutcome of the payout. The call performs the payout and answers with the outcome, so COMPLETED or FAILED can both come back synchronously. RETURNED, and a FAILED that only surfaces on the rail after a COMPLETED response, arrive later via the failure webhook.
gtq_amount^[0-9]+(\.[0-9]+)?$ · requiredcreated_atQuoteDetail
tesser_quote_idnexa_quote_idNexa's own reference, for support and reconciliation.
quote_statususdc_gtq_price^[0-9]+(\.[0-9]+)?$ · requiredGTQ per 1 USDC. Max 6 decimal places.
quoted_gtq^[0-9]+(\.[0-9]+)?$ · requiredGTQ Nexa will deliver. May be less than desired_gtq, which is a partial fill, and the remainder is a new quote.
usdc_amount^[0-9]+(\.[0-9]+)?$ · requiredUSDC Tesser must deliver = quoted_gtq / usdc_gtq_price, rounded UP at 6dp. Nexa is the single calculator; Tesser echoes this value and never re-derives it.
expires_atAcceptance deadline. Unaccepted quotes expire silently; there is no expiry webhook.
created_atAll reports on this quote, including late ones.
deposit_deadlineaccepted_atusdc_total_reported^[0-9]+(\.[0-9]+)?$credited_gtq^[0-9]+(\.[0-9]+)?$Authoritative credited amount; present once Nexa has decided to credit. May deviate from quoted_gtq.
credited_atThe payment sub-object embedded in the quote GET, when one exists.
PaymentDetail
nexa_payment_idtesser_quote_idquote_statuspayment_statusOutcome of the payout for this payment.
gtq_amount^[0-9]+(\.[0-9]+)?$ · requiredcreated_atcompleted_atWhen Nexa completed the payout. Present only when payment_status is COMPLETED.
status_metadataFree-form: rail references, failure reasons. Shape varies by rail, so it is deliberately untyped. Carries the decline reason when a synchronous decline returns payment_status: "FAILED" on this call.
updated_atTesserWebhookEnvelope
idEvent identifier (UUID), the dedupe key.
typeEvent type in scope.action form. The subscription Nexa needs is the withdrawal events behind §9.2: withdrawal.quote_created, withdrawal.steps_created, withdrawal.balance_updated, withdrawal.updated.
created_atEvent payload wrapper.