Preview Leffel Consulting Payments is in active development and migrating to Finix — the API isn't publicly live yet, and some examples still reflect the outgoing build. Request early access →

Guides

Payment lifecycle

Every status a payment moves through, and how the lcPaymentId ties it all together.

Every payment is tracked in a ledger keyed by its lcPaymentId (lcpay_…). You store this one id; we map it to the underlying processor objects so you never have to.

Statuses

A payment’s status reflects where it is in its life:

StatusMeaning
requires_payment_methodCreated; awaiting a payment method.
requires_confirmationMethod attached; awaiting confirmation.
requires_actionExtra authentication needed (e.g. 3-D Secure).
processingIn progress — typically ACH, awaiting settlement.
requires_captureAuthorized (manual capture); awaiting capture.
succeededCompleted — money captured. Safe to fulfill.
canceledCanceled before completion.
failedThe payment attempt failed.
refundedFully refunded.
partially_refundedPart of the amount was refunded.
disputedA chargeback was opened.
dispute_won / dispute_lostThe dispute was resolved.

Typical flows

  • Card, online: requires_payment_methodsucceeded
  • Card, manual capture: requires_payment_methodrequires_capturesucceeded
  • ACH: requires_payment_methodprocessingsucceeded
  • Refund: succeededpartially_refunded / refunded

Tip

Treat succeeded as the only signal to fulfill. Everything else is either in progress or terminal-but-unpaid.

Reading status

Look up any payment by its id at any time:

curl https://payments.leffelconsulting.com/v1/payments/lcpay_9f2c... \
  -H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX"

Combine this with webhooks: react to callbacks in real time, and use GET /v1/payments/{id} as the authoritative source when you need to check on demand.