Skip to main content

Payment Issues

When to use this runbook

  • Refund stuck in pending state
  • Payment status mismatch between Logidav and provider
  • Payline transaction log gaps
  • Double charge or double refund reported

Step 1: Identify the payment provider

Check the sale/order to determine which provider processed the payment:

ProviderTypeWhere to check
StripeCard paymentsStripe Dashboard
HipayCard paymentsHipay Back Office
PaylineCard payments (with transaction logging)Payline Admin Center
KlarnaBuy Now Pay LaterKlarna Merchant Portal
ScalapayBuy Now Pay LaterScalapay Dashboard
AlmaBuy Now Pay LaterAlma Dashboard
# Check the payment method on the sale
mysql -e "SELECT id, payment_method, status FROM mz_sale WHERE id = <sale_id>;"

Step 2: Check transaction logs

  • PaylineTransactionLog for Payline transactions:
    mysql -e "SELECT * FROM payline_transaction_log WHERE sale_id = <sale_id> ORDER BY created_at DESC;"
  • RefundLog for refund status:
    mysql -e "SELECT * FROM refund_log WHERE sale_id = <sale_id> ORDER BY created_at DESC;"
  • Provider dashboard for the authoritative transaction details

Step 3: Compare states

Compare Logidav status vs provider status. Look for:

MismatchDescription
Pending refund completed on provider sideProvider processed the refund but Logidav was not notified
Completed payment not reflected in LogidavWebhook missed or sale import incomplete
Double chargeTwo capture calls for the same authorization
Double refundRefund command ran twice before status update
warning

Always verify the provider dashboard as the source of truth for actual money movement.

Step 4: Manual reconciliation

For Payline

  1. Find the transaction in Payline Admin Center by order reference
  2. Compare the PaylineTransactionLog entries with the Payline dashboard
  3. If Logidav is behind, manually update the refund/payment status

For Stripe / Hipay

  1. Find the payment intent or transaction in the provider dashboard
  2. Cross-reference with the Logidav sale status
  3. If a webhook was missed, re-trigger the status update via the relevant command

For BNPL providers (Klarna, Scalapay, Alma)

  1. Check the merchant portal for the order status
  2. Verify capture/refund status matches Logidav
  3. Contact provider support if status cannot be reconciled

Prevention

  • Monitor PaylineTransactionLog for gaps in transaction recording
  • Set up alerts for refund failures (see menzzo:refund:alert and menzzo:refund:check cronjobs)
  • Ensure webhook endpoints are monitored and retried on failure
  • Review the Refunds / After-Sales workflow for the full refund lifecycle

See also