Tutorials Courses Interview Prep (100 Q&A) AI Tools (50) Developer Tools (50) Tracks Pricing Plans Blog & Articles Contact Us
Laravel Advanced & Architecture 5-8 Years (Senior) Hard Production Scenario

How do you manage Database Transactions with external 3rd-party webhook triggers safely in Laravel?

Real-World Scenario / Incident Description

A transaction was committed, but an unhandled exception in an external Stripe webhook inside the transaction closure rolled back the database after Stripe had already charged the credit card.

376 views • Updated 1 hour ago

The Golden Rule: Never call external network APIs inside a database transaction

Use DB::afterCommit() callbacks:

DB::transaction(function () use ($order, $paymentData) {
    $order->update(['status' => 'paid']);
    PaymentTransaction::create([...]);

    // Dispatch side-effects ONLY after database commit succeeds
    DB::afterCommit(function () use ($order) {
        SendInvoiceEmailJob::dispatch($order);
        NotifyThirdPartyFulfillment::dispatch($order);
    });
});
Related Concepts: #Database Transactions #Webhooks #Stripe #Consistency