Create Webhook

Webhook registration for updates on one-off payment statuses and subscription payment statuses.

[Optional] Verify Mamo source IP

Every webhook delivery comes from one of these fixed IP addresses. Allowlist them on your firewall or check the request's source IP in your handler, then reject anything else.

EnvironmentSource IP
Live35.240.141.245/32
Sandbox34.87.150.144/32

Use this alongside the auth_header check, not instead of it. If your server sits behind a load balancer or proxy, check the original client IP it forwards (for example in X-Forwarded-For), not the proxy's own address.

Body Params
uri
required
Defaults to https://webhook.site/e9145367-01cc-45f9-bebb-69775badb883

The URL of webhook which customer will be recieved the notification

enabled_events
array of strings
required
Defaults to payment.failed,payment.succeeded,payment.refund_initiated,payment.refunded,payment.refund_failed,subscription.failed,subscription.succeeded,payment_link.create

Event types:

EventFires whenPayload reference
payment.failedA one-off payment attempt failsPayment Object
payment.succeededA one-off payment is capturedPayment Object
payment.refund_initiatedA refund (full or partial) has started but not yet completedPayment Object
payment.refundedA refund has completedPayment Object
payment.refund_failedA refund attempt failsPayment Object
payment.card_verifiedA card-verification payment succeeds (no charge captured)Payment Object
payment.authorizedA payment is placed on hold (hold_and_charge_later), not yet capturedPayment Object
payment.voidedA held payment is reversed/voided before capturePayment Object
subscription.failedA subscription payment attempt failsSubscription Object
subscription.succeededA subscription payment succeedsSubscription Object
payment_link.createA payment link is created successfullyPayment Link Object
payout.processedA payout settlesPayout Object
payout.failedA payout is rejectedPayout Object
expense.createAn expense is createdExpense Object
expense.updateAn expense is updatedExpense Object
card_transaction.createA card transaction is createdTransaction Object
card_transaction.updateA card transaction is updatedTransaction Object
dispute.receivedA dispute/chargeback is opened against a paymentPayment Object
dispute.evidence_submittedEvidence has been submitted and the dispute is under reviewPayment Object
dispute.wonThe dispute is resolved in your favorPayment Object
dispute.lostThe dispute is resolved against youPayment Object
dispute.expiredThe response window closed without actionPayment Object
dispute.closedThe dispute closed without a won/lost verdict (resolved or withdrawn)Payment Object
account.status_updatedYour account's published status changes (for example a deactivation)— payload carries the new status, no dedicated object page yet

The charge.* equivalents of the payment.* events above (charge.failed, charge.succeeded, charge.refund_initiated, charge.refunded, charge.refund_failed, charge.card_verified, charge.authorized, charge.voided) are kept as legacy aliases for backward compatibility. New integrations should use payment.*. Each webhook receives a single delivery per event — if you subscribe to both the payment.* and charge.* name for the same event, you receive the payment.* one.

See Webhook delivery & retries for retry policy and request verification.

enabled_events*
string
length between 1 and 50
Defaults to authentication header

A secret value of your choice (up to 50 characters). Mamo sends it unchanged as the Authorization header on every webhook delivery to this URL. Check it in your handler and reject requests that don't match, so only Mamo can trigger your webhook. Example: set it to Bearer <random-secret> and compare the incoming Authorization header against it.

Headers
string
Responses

404

Invalid request

500

Unexpected error

Language
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json