Make Integration
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
- A payment event occurs in BINKPAY (e.g.
payment.succeeded). - BINKPAY signs the payload and POSTs it to your Make webhook URL.
- Make receives the event and wakes up the scenario.
- Subsequent modules in your scenario receive the event data for mapping.
- Make executes each module in sequence; errors trigger automatic retries.
Prerequisites
Egypt
https://api.binkpay.eg — EGP only
https://api.binkpay.net — USD, AED, EUR, GBP, SARConnecting 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
sk_test_ — use while building and testing your scenarioRetrieve 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 name | Event(s) | Description |
|---|---|---|
| Watch Payments | payment.succeeded, payment.failed | Fires when a payment is completed or fails. |
| Watch Refunds | refund.created | Fires when a refund is initiated. |
| Watch Disputes | dispute.created | Fires when a customer files a dispute. |
| Watch Checkouts | checkout.completed | Fires when a checkout session completes. |
| Watch Invoices | invoice.paid | Fires when an invoice is marked paid. |
| Watch Payouts | payout.completed | Fires 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 name | API endpoint | Description |
|---|---|---|
| Create Payment | POST /v1/payments | Initiate a new payment for a customer. |
| Create Invoice | POST /v1/invoices | Generate an invoice with line items and send it to a customer. |
| Create Refund | POST /v1/refunds | Issue a full or partial refund against a payment. |
| Get Payment | GET /v1/payments/:id | Retrieve the full details of a payment by ID. |
| List Payments | GET /v1/payments | Fetch 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).
{
"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.
POST /v1/webhooks endpoint as shown below.Register Make webhook endpoint
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 path | Make 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.
- Switch your Make connection to use your
sk_test_API key. - Open your scenario in Make and click Run once. Make will wait up to 60 seconds for an incoming webhook before timing out.
- 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. - 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.
- 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?
