Payments
Pay credited GTQ out to the fixed beneficiary.
Create payment (op 5)
Instruct Nexa to send credited GTQ from the customer Nexa account to the fixed beneficiary configured out-of-band (the payout partner that performs the last-mile payout; Nexa is not involved in the last mile in this phase). The payout is synchronous: this call performs it and returns the outcome, so there is no pending state to poll and no success webhook. One payment per quote in the MVP. A decline or execution failure discovered during the call comes back on the same 201 as payment_status: "FAILED"; the single payment.status.changed event is reserved for a failure or return that surfaces on the rail after a COMPLETED response. Timeout or retry during execution (§6.4): a retry carrying the same tesser_quote_id joins the in-flight execution and returns its final outcome. It never starts a second payout and never errors because one is already running. There is no payment read during execution, since op 9 is keyed on nexa_payment_id, which only arrives in the response. The op 8 quote read is reachable mid-execution but not informative: no in-progress state is representable, so it still shows CREDIT_CONFIRMED. If a retry times out again, recovery is another retry or the optional quote read once an outcome exists. Whether Nexa can implement the join is §11 Q5.
Create payment (op 5) › Request Body
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.
Create payment (op 5) › Responses
Payout executed. Normally payment_status: "COMPLETED" with quote_status: "PAYMENT_COMPLETED"; if Nexa declines or cannot execute the payout during the call it answers FAILED/PAYMENT_FAILED on this same 201 rather than by webhook. On an idempotent retry, the current state of the existing 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.
Get payment (optional op 9)
Read the current payout state (§6.6). Optional op 9, same rationale and same deferral caveat as op 8.
path Parameters
nexa_payment_idNexa's payment reference, as returned by createPayment.
Get payment (optional op 9) › Responses
The payment object.
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_at