Handling webhooks
A Webhook event is considered successfully delivered when the corresponding URL endpoint responds with an HTTP status code of 200 within 5 seconds. If the criteria is not met, Method will reattempt 4 more times with each new attempt being delayed according to an exponential backoff algorithm, where the delay period between each attempt exponentially increases.Authentication
Webhook Request Validation
Webhook Request Validation
We use the
auth_token and hmac_secret you provide to enable webhook authentication.
There are 2 ways to authenticate an incoming request.1. Authorization Header Verification
1. Authorization Header Verification
2. HMAC Verification
2. HMAC Verification
If you provide an The timestamp is always included in the
hmac_secret when registering your webhook, Method will include a method-webhook-signature header in every request. This is an HMAC-SHA256 digest created using the hmac_secret as the shared secret, and computed over the string timestamp:payload, where timestamp is the value from the method-webhook-timestamp (UNIX timestamp in seconds) header (which is always included, even if no hmac_secret is provided) and payload is the raw request body.
Checking for the timestamp freshness (5 min window) is optional, but recommended.method-webhook-timestamp header, even if no hmac_secret is provided.Example: Minimal Express Server for Verifying Webhooks
Example: Minimal Express Server for Verifying Webhooks
Webhook Objects
Webhook event object
Webhook Event Types
| Name | Description |
|---|---|
account.create | A new Account was successfully created. |
account.update | An Account has been updated. |
account.opened | An Account has been opened. |
account.closed | An Account has been closed. |
sensitive.create | A new Sensitive was successfully created. |
account.number.update | An Account’s number has been updated |
sensitive.update | An Sensitive has been updated. |
account_verification_session.create | A new AccountVerificationSession was successfully created. |
account_verification_session.update | An AccountVerificationSession has been updated. |
balance.create | A new Balance was successfully created. |
balance.update | A Balance has been updated. |
card_brand.create | A new CardBrand was successfully created. |
card_brand.update | A CardBrand has been updated. |
card_brand.available | A CardBrand has been made available. |
connect.create | A new Connect was successfully created. |
connect.update | A Connect has been updated. |
connect.available | An Async Connect has completed. |
credit_score.create | A new CreditScore was successfully created. |
credit_score.update | A CreditScore has been updated. |
entity.create | A new Entity was successfully created. |
entity.update | An Entity has been updated. |
entity_verification_session.create | A new EntityVerificationSession was successfully created. |
entity_verification_session.update | An EntityVerificationSession has been updated. |
identity.create | A new Identity was successfully created. |
identity.update | An Identity has been updated. |
payment.create | A new Payment was successfully created. |
payment.update | A Payment has been updated. |
payment_reversal.create | A new PaymentReversal was successfully created. |
payment_reversal.update | A PaymentReversal has been updated. |
payoff.create | A new Payoff was successfully created. |
payoff.update | A Payoff has been updated. |
product.create | A new Product was successfully created. |
product.update | A Product has been updated. |
report.create | A new Report was successfully created. |
report.update | A Report has been updated. |
subscription.create | A new Subscription was successfully created. |
subscription.update | A Subscription has been updated. |
transaction.create | A new Transaction was successfully created. |
transaction.update | A Transaction has been updated. |
update.create | A new Update was successfully created. |
update.update | An Update has been updated. |
credit_score.increased | A user’s credit score has increased. |
credit_score.decreased | A user’s credit score has decreased. |
attribute.create | A new Attribute was successfully created. |
entity_attribute.credit_health_credit_card_usage_value.increased | Credit card usage has increased. |
entity_attribute.credit_health_credit_card_usage_value.decreased | Credit card usage has decreased. |
entity_attribute.credit_health_derogatory_marks_value.increased | Number of derogatory marks increased. |
entity_attribute.credit_health_derogatory_marks_value.decreased | Number of derogatory marks decreased. |
entity_attribute.credit_health_hard_inquiries_value.increased | Number of hard inquiries increased. |
entity_attribute.credit_health_hard_inquiries_value.decreased | Number of hard inquiries decreased. |
entity_attribute.credit_health_total_accounts_value.increased | Total number of accounts increased. |
entity_attribute.credit_health_total_accounts_value.decreased | Total number of accounts decreased. |
entity_attribute.credit_health_credit_age_value.increased | Credit age has increased. |
entity_attribute.credit_health_credit_age_value.decreased | Credit age has decreased. |
entity_attribute.credit_health_payment_history_value.increased | Payment history score has improved. |
entity_attribute.credit_health_payment_history_value.decreased | Payment history score has decreased. |
entity_attribute.credit_health_soft_inquiries_value.increased | Number of soft inquiries increased. |
method_jwk.create | A new Method JWK (public key) was successfully created. |
method_jwk.update | A Method JWK has been updated (deprecated or disabled). |