Skip to content

Failure Types Reference

All failure states, error types, and recovery actions across Aset entities. Each failure type has corresponding mock data in apps/infra/db/seed.sql.

Overview

CategoryCount
Deposit States5
Redemption Failures5
Yield Failures4
KYC/SBT States3
Notification Failures6
Deposit Failures deposits.status + failure_type

Handle deposit processing, escrow management, and LP token minting with recovery workflows.

Status flow: PENDINGPROCESSINGCOMPLETED or FAILEDREFUNDED

StatusFailure TypeError ExampleAdmin DisplayInvestor DisplayRecovery
FAILEDLP_MINT_FAILEDERC20: transfer amount exceeds balanceRed "LP Mint Failed" + error"Your deposit could not be processed"Admin retries or triggers refund
FAILEDRECEIPT_BURN_FAILEDERC20: burn from zero addressRed "Receipt Burn Failed""Processing error — team investigating"Admin checks receipt token state
FAILEDFM_NOTIFICATION_FAILEDSMTP delivery failed: mailbox unavailableYellow "FM Not Notified" + retryNot shown (internal)Admin retries FM notification
REFUNDEDGray "Refunded" + timestamp"Your deposit has been refunded"No action needed
PROCESSINGBlue "Processing" + spinner"Your deposit is being processed"Auto-escalate if stuck > 1hr

Additional fields: escrow_status: HELD | RELEASED | FAILED. Mock data: Deposit IDs 19–22 in seed.sql.

Redemption Failures redemption_requests.status + failure_type

Complex workflow with FM approval, lockup validation, and escrow funding checks.

Status flow: REQUESTEDFM_ACCEPTED (Fund Pool only) → PROCESSINGCOMPLETED

StatusFailure TypeError ExampleAdmin DisplayInvestor DisplayRecovery
FAILEDPAYOUT_TX_FAILEDInsufficient reserve balance in escrowRed "Payout Failed" + escrow info"Redemption could not be completed"Admin tops up escrow, retries
FAILEDFM_NOTIFICATION_FAILEDSMTP connection refused on port 587Yellow "FM Not Notified"Not shown to investorRetry FM notification
FAILEDCONTRACT_EXECUTION_FAILEDexecution reverted: InsufficientReserveRed "Contract Error" + shortfall"Processing error — contact support"Admin addresses reserve shortfall
FAILEDFUND_TRANSFER_FAILEDERC20: transfer exceeds allowance — approval expiredRed "Transfer Failed" + deadline"Fund transfer pending"FM renews wallet approval
REJECTEDLOCKUP_NOT_METLockup period (180 days) has not elapsedGray "Rejected" + reason"Cannot redeem: lockup active"Wait until lockup expires

Mock data: Redemption IDs 7–11 in seed.sql.

Yield Distribution Failures yield_distributions.status + failure_type

Automated yield accrual, batch claim processing, and transaction failure handling.

Status flow: PENDINGPROCESSINGDISTRIBUTED or FAILED

StatusFailure TypeError ExampleAdmin DisplayInvestor DisplayRecovery
FAILEDTX_FAILEDGas price exceeded maximum thresholdRed "TX Failed" + gas info"Yield distribution delayed"Admin retries with higher gas
FAILEDFM_NOTIFICATION_FAILEDSendGrid API error 429: rate limit exceededYellow "FM Not Notified"Not shownRetry after rate limit resets
FAILEDDISTRIBUTION_TX_FAILEDERC20 transfer failed — pool escrow insufficientRed "Distribution Failed" + tx hash"Yield distribution delayed"Admin tops up escrow
FAILEDCLAIM_PROCESSING_FAILEDBatch claim tx gas estimation failed: out of gas for 4 recipientsRed "Claim Failed" + recipient count"Yield claim pending"Admin splits batch, retries

Notes

Batch optimization for gas limits. Auto-retry up to 3x with exponential backoff. SendGrid rate limit: delayed retry (30min–2hr). Mock data: Yield IDs 8–11 in seed.sql.

KYC / SBT Failures users.kyc_status + sbt_status

Identity verification and Soul Bound Token minting with async mint operations.

KYC flow: PENDINGAPPROVED / REJECTED

SBT flow: NOT_MINTEDMINTED / FAILED

EntityStatusDetailAdmin DisplayInvestor DisplayRecovery
KYCREJECTEDFailed identity verificationRed "KYC Rejected" + reason"Verification unsuccessful — resubmit"User resubmits KYC
KYCPENDINGAwaiting reviewYellow "Pending Review""Under review"Admin reviews
SBTFAILEDTX timeout or chain errorRed "SBT Mint Failed" + tx hash"Credential issuance failed" + retryAdmin triggers re-mint
Notification Failures notification_logs.failure_type

Email delivery status tracking with recipient type handling and retry logic.

Status flow: SENDINGDELIVERED or FAILED

Failure TypeDescriptionError ExampleRecipientAuto-RetryRecovery
BOUNCEDEmail permanently rejected550 5.1.1 The email account does not existFM, INVESTORNoUpdate email address
SERVER_ERRORMail server errorSMTP connection refused (port 587)FM, ADMINYes (3x)Check SMTP config
TIMEOUTConnection timeoutConnection timeout after 30sFMYes (3x)Check network/DNS
INVALID_RECIPIENTEmail not found in systemEmail address not found in systemINVESTORNoVerify user email
SPAM_FILTEREDContent blocked by spam filter550 5.7.1 Message marked as spamINVESTORNoReview email template
RATE_LIMITEDAPI limit exceededSendGrid API 429: daily limit exceededINVESTORYes (delayed)Wait or upgrade plan

Mock data: SPAM_FILTERED, RATE_LIMITED, SBT mint failure, LP mint failure, FM bounce in seed.sql.