Merchant Lifecycle
The full lifecycle of a merchant from draft application to go-live.
Every merchant onboarded through Cresora passes through a defined lifecycle. Understanding each stage helps you set correct expectations with your merchants and build the right state-tracking UI. State values are UPPERCASE on the wire — the full reference, including rejection codes, is on the state reference page.
Lifecycle stages
DRAFT → SUBMITTED → REVIEWING → AWAITING_MERCHANT_SIGNATURE → UNDERWRITING
→ APPROVED → CONFIGURING → ACTIVE → LIVE
REVIEWING → AWAITING_CLARIFICATION → REVIEWING (question / answer loop)
REVIEWING | UNDERWRITING → REJECTED (resubmission may be possible)
CONFIGURING → CONFIG_FAILED (Cresora operations intervene)
LIVE ⇄ SUSPENDED (restriction / resolution)
any → CLOSED (terminal)Two stages deserve emphasis:
AWAITING_MERCHANT_SIGNATURE— the merchant processing agreement is out for e-signature; track progress in the merchant'sesign_envelopeprojection. A declined or abandoned envelope moves the application toREJECTEDwithREJ_008.ACTIVEis not live.ACTIVE= gateway-provisioned, resting pre-go-live; probe/test transactions run here. Real payments start atLIVE.
Webhook events for merchant state changes
| Event | When |
|---|---|
merchant.submitted | Application submitted |
merchant.approved | Review completed successfully |
merchant.rejected | Application rejected |
merchant.approved_for_signature | Cresora review passed — the agreement goes out for signature |
merchant.signature_completed | Agreement signed — the application moves into underwriting |
merchant.activated | Gateway account provisioned; resting at ACTIVE pre-go-live |
merchant.live | Merchant goes live |
merchant.suspended | Cresora suspends the merchant |
There is no merchant.closed event — closure is visible on the merchant read, not as a webhook.
Querying merchant state
GET https://api.cresoracommerce.ai/api/v1/merchants/{merchantId}
Authorization: Bearer csk_ab12cd34_xxxxxxxxxxxxxxxxxxxxxxxxThe response's state carries the lifecycle stage. Context fields depend on the stage: clarification_message (awaiting clarification), rejection_reason_code + rejection_reason (rejected), restriction_reason (suspended), esign_envelope (signature stage). The transition history is at GET /api/v1/merchants/{merchantId}/transitions.