BINKDocs
HelpDashboard

Make Integration

/docs/global/integrations/makeGlobal

Automate your BINKPAY payment workflows using Make (formerly Integromat) — a visual, no-code scenario builder. Connect BINKPAY to thousands of apps without writing a single line of backend code. Supports both Egypt (EGP) and Global (USD / AED / EUR / GBP / SAR) environments.

Hosted Checkout

Cards · Apple Pay · Google Pay

Refunds sync

No code changes

How it works

The BINKPAY Make module acts as a trigger source. Whenever a payment event occurs in your BINKPAY account — a successful charge, a refund, a dispute — BINKPAY sends a signed webhook to a URL that Make automatically provisions for your scenario. Make then executes the rest of your scenario: routing data, calling other APIs, sending emails, updating databases, and so on.

You design the workflow visually by dragging and dropping modules onto the canvas and connecting them with routes. No server infrastructure is required on your side.

Data flow overview

  1. A payment event occurs in BINKPAY (e.g. payment.succeeded).
  2. BINKPAY signs the payload and POSTs it to your Make webhook URL.
  3. Make receives the event and wakes up the scenario.
  4. Subsequent modules in your scenario receive the event data for mapping.
  5. Make executes each module in sequence; errors trigger automatic retries.

Prerequisites

A BINKPAY account with at least one API key. Get one at Dashboard → Developer → API Keys.
A Make account (Free tier is sufficient for getting started; sign up here).
Know which BINKPAY environment you are targeting:

Egypt

https://api.binkpay.eg — EGP only

Global
https://api.binkpay.net — USD, AED, EUR, GBP, SAR

Connecting BINKPAY to Make

Create a new scenario in Make

Log in to your Make account at make.com. Click Create a new scenario from your dashboard. You will land on the visual scenario canvas.

Add the BINKPAY trigger module

Click the + icon on the canvas to open the module picker. Search for BINKPAY and select it. Choose one of the available trigger modules (for example, Watch Payments) to start the scenario whenever a payment event fires.

If the BINKPAY app does not appear, click Browse all apps and search again — Make may not yet have indexed a fresh install.

Connect your BINKPAY account

When prompted for a connection, click Add. Enter a connection name (e.g. BINKPAY Production) and paste your API key:

Live key

starts with sk_live_ — use for production scenarios

Test key
starts with sk_test_ — use while building and testing your scenario

Retrieve your API key from Dashboard → Developer → API Keys. Click Save to verify the connection.

Copy the Make webhook URL and register it in BINKPAY

After saving the connection, Make generates a unique webhook URL for your scenario (it looks like https://hook.eu2.make.com/abc123…). Copy that URL, then register it with BINKPAY either through the Dashboard under Webhooks → New Endpoint, or with the API call shown in the Webhook URL Configuration section below.

Activate and run your scenario

Toggle the scenario status to On using the switch at the bottom-left of the canvas. Make will now listen for BINKPAY events and execute the scenario each time one arrives.

Available trigger modules

Each trigger module maps to one or more BINKPAY webhook events. Select the events relevant to your scenario when configuring the module.

Module nameEvent(s)Description
Watch Paymentspayment.succeeded, payment.failedFires when a payment is completed or fails.
Watch Refundsrefund.createdFires when a refund is initiated.
Watch Disputesdispute.createdFires when a customer files a dispute.
Watch Checkoutscheckout.completedFires when a checkout session completes.
Watch Invoicesinvoice.paidFires when an invoice is marked paid.
Watch Payoutspayout.completedFires when a treasury payout settles.

Available action modules

Action modules let you call the BINKPAY API from within your scenario — for example, to create a payment in response to a form submission from another app.

Module nameAPI endpointDescription
Create PaymentPOST /v1/paymentsInitiate a new payment for a customer.
Create InvoicePOST /v1/invoicesGenerate an invoice with line items and send it to a customer.
Create RefundPOST /v1/refundsIssue a full or partial refund against a payment.
Get PaymentGET /v1/payments/:idRetrieve the full details of a payment by ID.
List PaymentsGET /v1/paymentsFetch a paginated list of payments with optional filters.

Example scenario: Payment succeeded → CRM + receipt email

This walkthrough builds a three-module scenario that fires every time a payment succeeds, POSTs the customer data to your CRM, and then sends a receipt email.

BINKPAY — Watch Payments (trigger)

Add the BINKPAY Watch Payments trigger. Set Event filter to payment.succeeded. Make will show you the webhook URL to register (see below).

HTTP — Make a request (action)

Add an HTTP module. Set Method to POST, URL to your CRM endpoint (e.g. https://crm.example.com/api/contacts/upsert). Under Body, select Raw → JSON. Map the following fields from the trigger bundle: {{1.data.billing_details.email}}, {{1.data.billing_details.name}}, {{1.data.amount}}, {{1.data.currency}}.

Email — Send an email (action)

Add an Email module (or Gmail / SendGrid). Set To: {{1.data.billing_details.email}}. Subject: "Your payment of {{1.data.amount}} {{1.data.currency}} was received". Body: include the payment ID {{1.data.id}} and a thank-you message.

payment.succeeded event payload

This is the JSON body that BINKPAY POSTs to your Make webhook URL when a payment succeeds. All monetary amounts are in the lowest denomination of the currency (piastres for EGP, cents for USD, fils for AED).

json
{
 "id": "evt_01HX9K2RVQM8BZTF3N4JYWPCD",
 "type": "payment.succeeded",
 "created_at": "2025-11-04T14:32:10Z",
 "livemode": true,
 "data": {
 "object": "payment",
 "id": "pay_01HX9K2QVPM7AZ3E2M1JTXNBD",
 "amount": 25000,
 "amount_captured": 25000,
 "currency": "EGP",
 "status": "succeeded",
 "payment_method": "vodafone_cash",
 "customer_id": "cus_01HX8FZRCPK7YN2D1L0JQWMAE",
 "description": "Order #ORD-2025-00441",
 "metadata": {
 "order_id": "ORD-2025-00441",
 "product_sku": "SKU-7734"
 },
 "billing_details": {
 "name": "Fatima Al-Zahraa",
 "email": "fatima@example.com",
 "phone": "+201012345678"
 },
 "return_url": "https://shop.example.com/checkout/return",
 "captured_at": "2025-11-04T14:32:09Z",
 "created_at": "2025-11-04T14:31:55Z",
 "updated_at": "2025-11-04T14:32:10Z"
 }
}

Reference all event fields in Make using the double-brace syntax, e.g. {{1.data.id}} for the payment ID from module 1.

Webhook URL configuration

When you add a BINKPAY trigger module in Make, Make provisions a unique webhook URL for your scenario. You must register this URL with BINKPAY so that BINKPAY knows where to deliver events. You can do this in two ways:

Dashboard

Go to Webhooks → New Endpoint, paste the Make URL, and select the events you want to receive.

API
Use the POST /v1/webhooks endpoint as shown below.

Register Make webhook endpoint

bash
curl-X POST https://api.binkpay.eg/v1/webhooks \
 -H "Authorization: Bearer sk_live_..." \
 -H "Content-Type: application/json" \
 -d '{
 "url": "https://hook.eu2.make.com/abc123xyz456def789",
 "events": [
 "payment.succeeded",
 "payment.failed",
 "refund.created",
 "dispute.created",
 "checkout.completed",
 "invoice.paid",
 "payout.completed"
 ],
 "description": "Make scenario — payment automation"
 }'

Environment matters

Use https://api.binkpay.eg/v1/webhooks for Egypt (EGP) scenarios and https://api.binkpay.net/v1/webhooks for global currencies. Make sure the API key you authenticate with matches the environment.

Data mapping

After Make receives the first event from BINKPAY, it automatically infers the data structure and exposes all fields in the mapping panel. You can then reference them in downstream modules using the variable picker.

BINKPAY field pathMake variable (module 1)Example value
data.id{{1.data.id}}pay_01HX9K2QVPM7AZ3E2M1JTXNBD
data.amount{{1.data.amount}}25000
data.currency{{1.data.currency}}EGP
data.status{{1.data.status}}succeeded
data.billing_details.email{{1.data.billing_details.email}}fatima@example.com
data.billing_details.name{{1.data.billing_details.name}}Fatima Al-Zahraa
data.metadata.order_id{{1.data.metadata.order_id}}ORD-2025-00441
data.created_at{{1.data.created_at}}2025-11-04T14:31:55Z

Tip: if a field is inside an array (e.g. invoice line items), use Make's Iterator module to loop over each element before mapping it to downstream modules.

Retry behavior

If a module in your scenario fails (e.g. your CRM API returns a 500), Make automatically retries the failed module up to 3 times using exponential backoff:

  • First retry: after ~1 minute
  • Second retry: after ~5 minutes
  • Third retry: after ~15 minutes

After three failed retries, Make marks the scenario execution as an error and places the incomplete bundle in the Incomplete Executions queue. You can inspect, edit, and replay these bundles manually from the scenario detail page.

Use idempotency keys

If your scenario action calls the BINKPAY API (e.g. Create Payment), always supply an Idempotency-Key header containing a UUID derived from the triggering event ID. This prevents duplicate charges if Make retries your scenario after a transient error. Example: Idempotency-Key: {{1.id}}-create-payment.

Testing your scenario

Use BINKPAY's test mode (sk_test_... API key) and the test card 4242 4242 4242 4242 (any future expiry, any 3-digit CVV) to generate real webhook events without processing live payments.

  1. Switch your Make connection to use your sk_test_ API key.
  2. Open your scenario in Make and click Run once. Make will wait up to 60 seconds for an incoming webhook before timing out.
  3. In another tab, go to BINKPAY Dashboard → Webhooks → Send test event and select payment.succeeded. This immediately POSTs a sample payload to your Make URL.
  4. Return to Make. The scenario run will show a green bubble on each module indicating success, and you can click any module to inspect the input and output bundles.
  5. Alternatively, trigger a real test payment via the API or the BINKPAY-hosted checkout. The resulting webhook will fire your Make scenario automatically.

Webhook URL must be public

Make's webhook URL is already internet-accessible — no tunneling is required. However, if you have configured IP allowlisting on your CRM or downstream services, add Make's egress IP ranges. See Make IP allowlist documentation.

Troubleshooting

Make scenario never triggers after registration

The most common cause is that the webhook URL registered in BINKPAY does not match the URL Make generated, or the webhook is registered against the wrong environment (e.g. global API but your events are from the Egypt environment).

Fix: Go to BINKPAY Dashboard → Webhooks and confirm the URL and environment match. Use Webhooks → Send test event to verify delivery — check the delivery log for HTTP status codes.

Module fails with "401 Unauthorized"

The API key stored in the Make connection has been rotated or revoked, or you are using a test key against the live environment (or vice versa).

Fix: Go to Make → Connections, find your BINKPAY connection, click Edit, and paste the correct API key. Keys starting with sk_live_ hit api.binkpay.net / api.binkpay.eg live environments; keys starting with sk_test_ are for test mode only.

Scenario succeeds but data is missing or null in downstream modules

This usually means the field path in a mapping is incorrect, or the trigger fired with a payload that omits the optional field (e.g. customer_id is only present when a customer is attached to the payment).

Fix: Click the relevant execution in the scenario history and inspect the trigger module's output bundle. Verify the exact JSON path, then update your mapping to use the correct variable. Use Make's ifempty function to provide fallback values for optional fields: {{ifempty(1.data.customer_id; "guest")}}.

Need help? Contact BINKPAY support or visit the full documentation.

Was this page helpful?