Softlemon API Documentation
  • Merchant API
  • Partner API
  • Guides
API basics
    API ConventionsEnvironmentsError HandlingRate LimitsSCA and PSD2SupportChangelog
Integration flows
    Accept a Card PaymentAuthorize Now, Capture LaterRefund a PaymentCharge a Returning CustomerAccept an Alternative PaymentPaysafecard via Skrill: Customer JourneySet Up WebhooksIntegrate as a Partner
Reference
    Merchant Transaction WebhooksTransaction StatusesDuplicate Payment Protection
Reference

Transaction Statuses

This reference lists every status a transaction can have. Statuses appear in API responses as the status field and in webhook payloads as data.transaction.status.

Status reference

StatusMeaningTerminalWebhook event
initTransaction created but not yet processed.Nonone
authAuthorization approved and funds reserved. Capture to settle.Notransaction.authorized
partially_settledPart of an authorization has been captured.Notransaction.partially_settled
pendingThe transaction is being processed.Notransaction.pending (opt-in)
pending_3dsWaiting for the cardholder to complete 3D Secure.Nonone
authenticated_3ds3D Secure completed and the transaction can proceed.Nonone
capturedFunds captured. The canonical revenue state.Yestransaction.captured
voidedThe authorization or payment was voided.Yestransaction.voided
partially_refundedPart of the captured amount has been refunded.Notransaction.partially_refunded
refundedCumulative refunds cover the captured amount.Yestransaction.refunded
settledThe acquirer has cleared the funds.Yestransaction.settled
successA sale completed.Yestransaction.succeeded
failedThe transaction failed.Yestransaction.failed
cancelledThe transaction was cancelled. Includes risk rejections, decline cooldown blocks and recorded duplicate attempts.Yestransaction.cancelled
chargebackA chargeback was recorded.Yestransaction.chargeback
paidThe acquirer has paid the funds out to the merchant.Yestransaction.paid

Terminal and intermediate statuses

A terminal status is the end of that transaction row's lifecycle and no further status change is expected: captured, voided, refunded, settled, success, failed, cancelled, chargeback and paid.

Intermediate statuses progress to a terminal status: init, auth, partially_settled, pending, pending_3ds, authenticated_3ds and partially_refunded.

Which statuses count as revenue

Use captured as the canonical revenue state. success indicates a completed sale on some acquirers and should not be used for revenue or success-rate reporting. settled and paid describe money movement between the acquirer and the merchant and are visibility states only.

Statuses and webhooks

A webhook fires when a transaction transitions into a status with an event in the table above. init, pending_3ds and authenticated_3ds never emit events. transaction.pending is delivered only to endpoints whose event subscription lists it explicitly. Captures, refunds and voids are recorded as their own child transaction rows with their own lifecycles, so a single operation can produce events on both the child row and the parent's roll-up. See the webhook integration guide for payload shapes, signatures and delivery semantics.

Payment session statuses

Hosted redirect payments create a payment session linked 1:1 to a transaction. The session carries its own status field with its own lifecycle:

StatusMeaningTerminalTransaction status
createdSession created but the provider has not returned a checkout URL yet.Noinit
pending_redirectThe hosted page is ready. Send the customer to the checkout_url.Noinit
pending_providerThe provider reported the payment as still in progress. The final outcome follows by notification.Nopending
paidThe provider confirmed the payment. The only successful terminal status.Yescaptured
failedThe payment failed at the provider.Yesfailed
cancelledThe customer cancelled at the provider.Yescancelled
chargebackThe provider reported a chargeback on the payment.Yeschargeback
expiredThe customer did not finish the hosted page before the session's expires_at.Yescancelled

Webhooks fire on the linked transaction, never on the session itself. The transaction status column shows the state the linked transaction takes for each session state, so a paid session delivers transaction.captured and an expired session delivers transaction.cancelled.

Last modified on September 7, 2026
Merchant Transaction WebhooksDuplicate Payment Protection
On this page
  • Status reference
  • Terminal and intermediate statuses
  • Which statuses count as revenue
  • Statuses and webhooks
  • Payment session statuses