Skip to main content
Cresora Commerce
Merchant Onboarding

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's esign_envelope projection. A declined or abandoned envelope moves the application to REJECTED with REJ_008.
  • ACTIVE is not live. ACTIVE = gateway-provisioned, resting pre-go-live; probe/test transactions run here. Real payments start at LIVE.

Webhook events for merchant state changes

EventWhen
merchant.submittedApplication submitted
merchant.approvedReview completed successfully
merchant.rejectedApplication rejected
merchant.approved_for_signatureCresora review passed — the agreement goes out for signature
merchant.signature_completedAgreement signed — the application moves into underwriting
merchant.activatedGateway account provisioned; resting at ACTIVE pre-go-live
merchant.liveMerchant goes live
merchant.suspendedCresora 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_xxxxxxxxxxxxxxxxxxxxxxxx

The 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.