Skip to content

Events ​

All events live in Flutterwave\Payments\Events and fire from verified webhooks, once per webhook even when Flutterwave retries.

WebhookReceived ​

Fires for every verified webhook, before the specific event below.

PropertyType
$eventstringe.g. charge.completed
$dataarrayThe payload's data
$payloadarrayThe full payload

ChargeCompleted ​

charge.completed: a payment finished, successfully or not. Covers checkout, saved cards, virtual accounts and subscription renewals.

Member
$transactionThe transaction as re-fetched from the API (when verify_charges is on). Trust this one.
$dataThe webhook body as sent
$verifiedtrue when $transaction came from the API
isSuccessful()Status is successful
reference()The tx_ref
amount(), currency(), customerEmail()From $transaction

TransferCompleted ​

transfer.completed: a payout succeeded or failed.

Member
$dataThe transfer
isSuccessful()Status is SUCCESSFUL
reference()Your transfer reference

SubscriptionCancelled ​

subscription.cancelled. $data holds the subscription.

QuoteCompleted ​

quote.completed, whenever an FX quote changes status. Despite the name, the quote may be PROCESSING, READY, EXPIRED or FAILED.

Member
$dataThe quote
isReady()You can trade it now
quoteId()

ChargebackUpdated ​

chargeback.initiated, .accepted, .declined and .lost. Ask Flutterwave to enable chargeback webhooks for your account.

Member
$eventThe webhook event name
$dataThe chargeback
status()Current status
needsResponse()You still need to accept or decline it

Notifications ​

Two mail notifications ship with the package and are sent automatically when you set the addresses:

NotificationSent whenConfig
ChargebackRaisedA chargeback needs a responseFLW_NOTIFY_CHARGEBACKS
TransferFailedA payout failedFLW_NOTIFY_FAILED_TRANSFERS

Both live in Flutterwave\Payments\Notifications, so you can also send them to your own notifiables.

Released under the MIT License.