Your project creates (or "fires") an Event
object for any significant change in its status. This is particularly important for updates to transactions but events are also fired for other situations.
You can configure your project to send a notification message to a webhook whenever a new event is fired. The message is just an HTTP POST that contains the ID value of the new event. Use this ID to fetch the event and examine the data it contains.
This approach allows a zero-trust infrastructure. If a merchant endpoint and/or API secrets are used by an unauthorized 3rd party, the state of a transaction cannot be changed as merchants don't listen to updates, but request them.
Event JSON
{
"event_id":"ev_rV1yRUxr8IZ4p5sumcW2fbLxRy4FTB3C",
"event_type":"transaction.failed"
}
Event types
A Transaction
object is returned whenever you authorize a payment or capture an invoice. The payment is often complete at this point but there are cases where the data in the Transaction
can change after it is initially created. For example, the customer may request a chargeback, which will reverse the payment if it is successful. Also, if you authorize an invoice to be captured automatically after a delay then you will not receive direct confirmation that the payment was captured correctly. We recommend that you listen for transaction events to handle cases like these.
The full set of transaction events is shown in the table below.
Transaction events
Event type | Description |
---|---|
transaction.requested | A payment request was made but no payment has been placed yet. |
transaction.authorized | The payment has been authorized but is not available in your balance until you capture it. |
transaction.captured | The payment has been captured and funds have been confirmed. |
transaction.failed | The payment has failed. |
transaction.voided | The transaction has been voided and cannot be captured anymore. |
transaction.refunded | You issued a refund on the transaction. Use the refunded_amount field and also the refunds objects list to find the amount that was refunded. |
transaction.operation.refund.pending | The refund on the transaction is pending. |
transaction.operation.refund.failed | The refund on the transaction failed. |
transaction.refund.created | Refund request created. |
transaction.review.initiated | Transaction in review. |
transaction.review.blocked | Transaction blocked after review. |
transaction.chargeback.created | A chargeback has been filed by your customer. |
transaction.chargeback.won | The previously filed chargeback was resolved in your favor. |
transaction.chargeback.lost | The previously filed chargeback was resolved in your customer's favor. |
transaction.chargeback.retrieval-request | The payment was previously completed but the customer does not recognize it and is asking for information. |
transaction.chargeback.fraud-notification | The payment was previously completed but the bank is notifying you that the customer might request a chargeback. |
transaction.operation.three-d-s.pending | The payment's 3DS check is pending. |
transaction.operation.three-d-s.failed | The payment's 3DS check failed. |
transaction.operation.three-d-s.success | The payment passed the 3DS check. |
transaction.operation.three-d-s-2.pending | The payment's 3DS2 check is pending. |
transaction.operation.three-d-s-2.failed | The payment's 3DS2 check failed. |
transaction.operation.three-d-s-2.success | The payment passed the 3DS2 check. |
transaction.authorization.incremented | The payment's authorization was incremented. |
transaction.operation.increment-authorization.failed | The payment's incremental authorization failed. |
transaction.operation.increment-authorization.pending | The payment's incremental authorization is pending. |
Customer events
These events are fired when a Customers
object is created, deleted, or updated.
Event type | Description |
---|---|
customer.created | A new customer resource was created. |
customer.updated | A customer resource was updated. |
customer.deleted | A customer resource was deleted. |
Customer token events
Customer tokens events are fired for creation, deletion, and updates but also when verification succeeds or fails.
Event type | Description |
---|---|
customer.token.created | A new customer token resource was created. |
customer.token.updated | A customer token resource was updated. |
customer.token.deleted | A customer token resource was deleted. |
customer.token.verified | A customer token was verified successfully. |
customer.token.verification.failed | A customer token verification failed. |
customer.token.verification.requested | A customer token verification has been requested. |
Payout and report events
Event type | Description |
---|---|
payout.created | A new payout is available. |
payout.updated | The existing payout was updated. |
report.process-attempt-failed | Processing attempt of report failed. Processing will still be retried. |
Order of events
ProcessOut cannot garantee that webhooks that you will receive will be ordered based on the event time.
This means it is possible to receive webhooks in the following order:
transaction.captured
transaction.authorized
Please ensure that your webhooks implementation takes this into account.
If needed, you can rely on our Transaction endpoint to fetch the latest status of a transaction.