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

Authorize now, capture later

Authorize a card at order time and capture the funds later — full or partial — for ship-then-charge flows.

Some businesses need to authorize a card when an order is placed but only capture the money when the order ships. Set captureMethod to manual.

1. Authorize

curl https://payments.leffelconsulting.com/v1/payments/intents \
  -H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX" \
  -H "Idempotency-Key: order-10432" \
  -H "Content-Type: application/json" \
  -d '{ "amountCents": 4999, "currency": "usd", "captureMethod": "manual" }'

After the customer confirms in the browser, the payment sits at status requires_capture — the funds are held but not yet taken.

2. Capture

When you’re ready (for example, at ship time), capture the payment by its lcPaymentId:

# Full capture (omit amountCents)
curl https://payments.leffelconsulting.com/v1/payments/lcpay_9f2c.../capture \
  -H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{}'

# Partial capture — take less than authorized; the rest is released
curl https://payments.leffelconsulting.com/v1/payments/lcpay_9f2c.../capture \
  -H "X-Api-Key: lc_live_XXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{ "amountCents": 3999 }'

Authorizations expire

A card authorization lasts about 7 days. If you can’t capture within that window, capture up front as a deposit or re-authorize. Capture as soon as you’re able.

The payment_intent.amount_capturable_updated callback tells you an authorization is ready to capture.