Docs/Reference
View Markdown

Payment object

Crypto creation, fiat creation, payment retrieval, and payment webhooks use the same allow-listed payment schema. Fields that do not apply to a payment type can be absent or null.

Identity and lifecycle#

FieldTypeDescription
idstringInternal public resource ID.
txIdstringRelay transaction identifier used by the retrieval endpoint.
txRefstringMerchant reference supplied at creation. Not an idempotency key.
typestringcrypto or fiat.
directionstringPayment direction; supported collection requests use deposit.
statusstringOverall payment lifecycle state. See statuses.
resourceVersionintegerMonotonic public-resource version used by webhooks.
accountingStatestringready or review_required for confirmed-funding accounting.
createdAtstringCreation time in ISO 8601 UTC.
updatedAtstringLast update time in ISO 8601 UTC.
fundedAtstring or nullTime Relay established that the target was fully funded.
paymentWindowEndsAtstring or nullEnd of the active funding window when that network uses one.
paymentWindowClosedAtstring or nullTime the funding window was closed.

Asset and chain#

FieldTypeDescription
cryptonetworkstringFunding or settlement network.
cryptotokenstringFunding or settlement asset symbol.
tokenContractAddressstring or nullToken contract or mint pinned when the payment was created.
chainIdinteger or nullNumeric EVM chain ID where applicable; null for Solana.
chainIdentitystring or nullPinned non-EVM chain identity, including Solana genesis identity.
tokenStandardstring or nullSPL for Solana payment intents.
tokenDecimalsinteger or nullToken precision Relay expects for the pinned asset.
depositTokenAccountstring or nullSolana associated token account that receives the SPL transfer.

Use these pinned fields for the payment. Do not replace them with newer runtime asset configuration after an intent has been created.

Amounts and accounting#

All fields in this section are exact decimal strings.

FieldDescription
expectedAmountExact amount expected at the funding address. For crypto, this includes the quoted fee; for fiat, it represents expected settlement-token proceeds.
originalAmountImmutable confirmed-funding target for crypto accounting.
confirmedAmountCumulative eligible amount confirmed on-chain.
outstandingAmountRemaining amount required to reach the target.

Do not use binary floating-point math for these values. Use an arbitrary-precision decimal library and compare values in the token's precision.

Customer and settlement#

FieldTypeDescription
useremailstringCustomer email supplied at creation.
metadataobjectMerchant metadata supplied at creation.
postTransactionTypestringexternal_wallet, organization_wallet, or organization_settlement.
postTransactionAddressstring or nullDestination snapshot resolved for this payment. Later dashboard changes do not alter it.
settlementStatusstringIndependent outgoing-settlement state.
settlementTransactionHashstring or nullOutgoing settlement transaction hash once available.

Incoming funding never disappears because outgoing settlement failed. Reconcile status, confirmedAmount, and settlementStatus independently.

Temporary wallets#

tempWallet is an array. Creation currently returns one temporary wallet.

FieldTypeDescription
idstringTemporary wallet resource ID.
addressstringOwner/deposit address. For Solana tokens, use depositTokenAccount as the SPL destination.
networkstringWallet network.
createdAtstringCreation time.
updatedAtstringLast update time.

Amount trackers#

paymentamount is an array of funding and offset accounting records.

FieldTypeDescription
idstringTracker ID.
trackerTypestringpayment_intent or payment_intent_offset.
currencyTypestringCurrency type associated with the tracker.
expectedAmountdecimal stringExpected amount for this tracker.
amountdecimal string or nullObserved/applied amount.
feeincryptodecimal string or nullCrypto fee associated with the quote.
feeinfiatdecimal string or nullFiat fee when applicable.
fiatcurrencystring or nullFiat currency when applicable.
tempWalletstring or nullAssociated temporary wallet ID.
transactionIdstring or nullAssociated transaction identifier.
txHashstring or nullOn-chain transaction hash.
completedIntentboolean or nullWhether the record completed its intent contribution.
statusstring or nullTracker status.
createdAtstringCreation time.
updatedAtstringLast update time.

Fiat summary fields#

These top-level convenience fields are present for fiat intents when available:

FieldTypeDescription
ratedecimal stringBuffered fiat-per-USD rate captured for the intent.
expectedSettlementTokenAmountdecimal stringExpected crypto settlement amount.
virtualAccountExpiresAtstring or nullVirtual-account expiry time.
virtualAccountExpiresIninteger or nullProvider validity duration in seconds.

Fiat detail#

fiatDetail contains the collection quote, virtual-account instructions, and settlement snapshot.

FieldTypeDescription
fiatCurrencystringFiat currency, currently ngn.
fiatAmountdecimal stringExact customer payment amount.
usdPerFiatdecimal stringSource USD per fiat-unit rate.
fiatPerUsddecimal stringInverse source rate before Relay's configured buffer.
bufferAmountNgndecimal stringFixed NGN amount added to the effective fiat-per-USD rate.
bufferedFiatPerUsddecimal stringEffective quoted fiat-per-USD rate.
usdAmountdecimal stringConverted USD value.
tokenUsdRatedecimal stringSettlement token's USD rate.
expectedTokenAmountdecimal stringExpected settlement-token amount.
settlementNetworkstringDestination network snapshot.
settlementTokenstringDestination token snapshot.
settlementAddressstringDestination address snapshot.
externalReferencestringProvider reference, normally Relay's txId.
virtualAccountIdstring or nullProvider virtual-account ID.
virtualAccountNumberstring or nullAccount number shown to the payer.
virtualAccountBankCodestring or nullBank code.
virtualAccountAccountNamestring or nullBeneficiary/account name.
virtualAccountCurrencyCodestring or nullAccount currency code.
virtualAccountStatusstring or nullProvider account state.
virtualAccountValidForinteger or nullEffective validity in seconds.
virtualAccountAmountControlstring or nullProvider amount-control mode.
virtualAccountAmountdecimal string or nullAmount attached to the virtual account.
virtualAccountExpiryDatestring or nullProvider expiry time.
virtualAccountCallbackUrlstring or nullProvider/Relay callback route; do not invoke it from your integration.
settlementBankNamestring or nullCollection bank display name.
createdAtstringDetail creation time.
updatedAtstringDetail update time.
Relay Finance APIServer-to-server financial infrastructure.