Help Center

Found 100 out of 200

Hosted Fields: how to embed payment form on a website

Hosted Fields allow you to embed card input fields on your website or app, fully adapting them to the system's design. They create a seamless interface experience and eliminate the need to redirect the customer to an external payment page. This improves usability and conversion rates.

The input fields for the card number, expiration date, and CVC are represented as an iFrame. We provide the ability to fully customize their CSS and embed them on your site as a single frame.

Tutorial

Setup

<span class="u-richtext-counter">1</span> In the <span class="u-richtext-element">Settings</span> → <span class="u-richtext-element">Integrations</span> → <span class="u-richtext-element">My sites</span> enable Hosted Fields for the required integration.

<span class="u-richtext-counter">2</span> Click <span class="u-richtext-element">Hosted Fields settings</span> and specify the domains where Hosted Fields will be used. Enter each domain or subdomain on a separate line without “https://”, for example: <span class="u-richtext-element">mysite.com</span>. To allow all subdomains, use the <span class="u-richtext-element">*</span> wildcard, for example: <span class="u-richtext-element">*.mysite.com</span>.

If needed, adjust the CSS styles for the input fields.

<span class="u-richtext-counter">3</span> On your website’s payment page, place an iFrame, assign any custom value to its <span class="u-richtext-element">id</span> parameter, and in the <span class="u-richtext-element">src</span> parameter specify the payment URL (payment_url) returned by Allpay in response to a payment creation request (see Payment request section in the API Reference). Payment URLs can also be generated using the Allpay API Tester.

<span class="u-richtext-counter">4</span> Add the following script to the payment page:

1<script src="https://allpay.to/js/allpay-hf.js"></script>
2    <script>
3    let Allpay = new AllpayPayment(
4        {
5            iframeId: 'iframe_id',
6            onSuccess: function() { alert('Payment success'); },
7            onError: function(error_n, error_msg) { alert('Payment error: ' + error_n + ' (' + error_msg + ')'); }
8        }
9    );
10    </script>

In the script, replace the following parameters with your own:

  • <span class="u-richtext-element">iframeId</span> — the id value of your iFrame.
  • <span class="u-richtext-element">onSuccess</span> — the handler for successful payment completion (what should happen after successful payment).
  • <span class="u-richtext-element">onError</span> — the handler for payment errors. For example, you can display the payment error message on the page.

<span class="u-richtext-counter">5</span> To initiate the process, execute the function <span class="u-richtext-element">Allpay.pay()</span>, for example, by assigning it to the "Pay" button:

<button onclick="Allpay.pay();">Pay</button>

Installments

If you enabled the installment option for the customer when creating the payment by passing a value in the <span class="u-richtext-element">inst</span> parameter, a field for selecting the number of payments will automatically appear in the frame.

Quick Pay Buttons

Apple Pay and Bit buttons will not be displayed in preview mode or within the iFrame if they are not activated in the <span class="u-richtext-element">Settings</span> → <span class="u-richtext-element">Modules</span>.

Additionally, these buttons are not displayed in test mode. As well as in live mode for installment or subscription payments.

Apple Pay button

At the moment, the Apple Pay button does not work inside Hosted Fields. We are working on a solution.

To ensure Apple Pay button works correctly, set the attribute <span class="u-richtext-element">allow="payment *"</span> in the <span class="u-richtext-element">iframe</span> tag. Example:

<iframe id="myPaymentIframe" allow="payment *" src="..." >
Keep reading
API

3-D Secure

3DS is a technology that adds a layer of security to online payments by requiring the cardholder to confirm the payment in the bank's app or by entering a one-time SMS code.

It is used to protect against fraudulent transactions, helping businesses reduce risks of chargeback requests.

Connecting and configuring

You can activate 3DS and set the minimum payment amount from which it will be applied in the <span class="u-richtext-element">Settings</span> ➙ <span class="u-richtext-element">Payment modules</span> ➙ <span class="u-richtext-element">3DS</span>

Frictionless 3DS

Sometimes 3DS authentication takes place in the background and does not require the customer to enter an SMS code or approve the payment in their banking app. During the authentication, the payment page collects technical information about the customer’s device and browser, including the IP address, browser type, language, time zone, screen settings, and other details.

This information is sent to the issuing bank as part of the 3DS process and evaluated together with the card details, payment amount, location, and transaction history. If the bank is confident that the payment is being made by the legitimate cardholder, it authenticates the transaction without requiring any additional action.

To the customer, it looks like a regular payment, but it is still protected by 3DS. If the bank requires further verification, the customer will be asked to confirm the payment using a code or their banking app.

Commission

An additional fee is charged for each payment processed with 3DS, according to the pricing.

The fee is applied even if the payment is unsuccessful — for example, when the cardholder confirms the payment via 3DS, but the bank declines the transaction.

Keep reading
Security

Users and permissions

In the Settings → Team section, you can add users who will have access to your Allpay account.

This feature is currently in development. We will announce its release in our Telegram channel.

Every user in the Allpay system has a unique phone number, email address, and Telegram username. It is not possible to link the same Telegram, email, or phone number to multiple users.

System access is only possible via a verified contact method.

Adding users

Click the "+" button on the "Team" screen and enter the name, job title, and at least one contact method (email, phone, or Telegram) — this will be used to log in to Allpay.

You can update user details at any time by clicking the "Edit" button on their profile card.

Access permissions

Every user has access to all sections except for the "Team" section. Access to the "Team" section must be granted separately. Only the account owner can manage permissions.

More granular permission settings will be introduced later.

Deactivating a user

The "Account active" toggle on a user's profile card immediately revokes their access to your account. You cannot deactivate yourself or the account owner.

Owner details

The owner's name, job title, and contact information can only be updated by contacting Allpay support.

Keep reading
Profile

Subscriptions (recurring billing)

Subscriptions are recurring charges from the customer’s card without the need to re-enter card details. In Hebrew, this is called "Oraat Keva", which literally means "standing instruction".

Activate the subscriptions module in the <span class="u-richtext-element">Settings</span> → <span class="u-richtext-element">Modules</span> section.

Creating a subscription

<span class="u-richtext-counter">1</span> When creating a payment link, clock "More" button to expand settings section and change payment type to “Subscription”.

<span class="u-richtext-counter">2</span> Specify when the subscription should start and end, then click the “Create Link” button.

<span class="u-richtext-counter">3</span> Once the customer subscribes using this link, the subscription will appear on the main screen under the “Subs” (Subscriptions) menu.

Subscription start options

Immediately — the first charge will occur at the moment the subscription is created, and then recur on the same day each month.

In N days — the first charge will occur after the specified number of days from the subscription start date, and then continue monthly on that same day.“Date” — the first charge will occur on the selected date. If the selected date is in the past, the subscription cannot be created.

Day of month — the first charge will occur on the specified day of the month and repeat monthly on that same day. If the selected day matches the subscription start date, the charge will happen immediately. If the 30th or 31st is selected but the month doesn’t have that date, the charge will occur on the last day of the month (e.g., February 28th).

Date — the first charge will occur on the selected date. If the selected date is in the past, the subscription cannot be created.

Subscription end options

No end date — charges will continue until the subscription is manually canceled in the dashboard.

Date — charges will continue until the selected date. For example, if the end date is set to August 15, 2030, and charges occur on the 16th of each month, the last charge will take place on July 15, 2030, and there will be no charge in August.

After N charges — the subscription will end after the specified number of charges. For example, to create a one-year subscription, set it to 12.

Subscription statuses

<span class="u-richtext-element" style="background-color: rgba(68, 203, 138, 0.5)">Active</span> — charges are being processed successfully.

<span class="u-richtext-element" style="background-color: rgba(113, 124, 144, 0.2)">Completed</span> — all scheduled charges have been successfully processed.

<span class="u-richtext-element" style="background-color: rgba(242, 201, 76, 0.8)">Cancelled</span> — you manually cancelled the subscription charges.

<span class="u-richtext-element" style="background-color: rgba(221, 94, 94, 0.4)">Failed</span> — a charge attempt failed; the system will make up to 6 more retry attempts.

Tracking subscriptions

Charges from subscriptions appear in two sections:

  1. On the main payments screen, alongside other payments;
  2. In the “Subs” section, where you can view the full charge schedule for each subscription.

Notifications about subscription charges are sent by email and Telegram — just like regular payments — if the notification option is enabled in <span class="u-richtext-element">Settings</span> ➙ <span class="u-richtext-element">Notifications</span>.

Cancelling a subscription

In the settings of the desired subscription, select “Cancel subscription”. The customer will receive an email notification that their subscription has been cancelled.

It is not possible to resume charges on a cancelled subscription. The customer will need to re-subscribe.

Failed charge

A scheduled subscription charge may fail if the card has insufficient funds, the credit limit is exceeded, the card has expired, or it has been cancelled.

If a charge fails, the system will automatically make up to 6 more attempts — one per day. If all attempts fail, the subscription will remain in “Failed” status, and the charge history will include a note: “Subscription stopped”.

In the subscription management menu, a “Retry charge” option will appear, allowing you to manually initiate a new charge. Before retrying, we recommend checking with the customer to make sure their card is working properly.

If, when setting up a subscription with the first charge set to “Immediately”, the first charge attempt fails, for example because the card has insufficient funds, the subscription will still be created with the “Failed” status. The system will then automatically schedule a retry attempt.

Subscriptions vs installments

Since installment payments work only with Israeli credit cards, some businesses use subscriptions to collect payments from international customers in multiple parts.

It’s important to understand the difference: With installments you are guaranteed to receive the full amount — even if the customer’s card has insufficient balance on future dates. With subscriptions, each charge is a separate transaction, and if the card has no funds at the time of billing, the charge will fail.

Life hack: a one-time charge on a future date

A subscription can be used not only for recurring payments but also for a one-time charge scheduled for a future date.

When creating the subscription, select “Date” or “In N days” and specify when the first charge should occur. In the subscription end settings, select “After N charges” and set the value to 1.

The customer enters their card details immediately, but the actual charge is made on the selected date or after the specified number of days. Once this single payment has been completed, the subscription ends automatically, so there is no need to cancel it manually.

This is useful for pre-orders, reservations, or deferred payment for services: you secure the customer and their payment method now and process the payment when needed.

All standard subscription mechanisms still apply: the customer receives a notification when the subscription is created, and if the charge fails on the scheduled date, the system makes six additional attempts—one per day.

Keep reading
Payment links

Redirect after payment and success page customization

After a successful payment, you can redirect the customer to an external URL or customize the Allpay success page shown to the customer.

Setup

In the payment link settings, expand <span class="u-richtext-element">More</span> section and enable the “Custom success page” block. There you can select one of the following options:

  1. Redirect to URL
    Immediately after payment, the customer will be redirected to the specified URL.
  2. Custom message and button
    You can set your own heading and text to be displayed to the customer after payment. You can also add a button and specify the URL the customer will be redirected to after clicking it.

API payments

This setting does not apply to payments received via API (from external websites). For those, please refer to the API documentation.

Keep reading
Payment links

Changing business type from esek patur to esek murshe and back

You can change your business type under <span class="u-richtext-element">Settings</span> → <span class="u-richtext-element">Company</span>.

VAT

When changing your status from Osek Patur to Osek Murshe” VAT is added to payments.

For all previously created payment links, 18% VAT will be automatically applied in the “VAT included” mode. The final payment amount will remain unchanged.

This also applies to payments under active subscriptions.

When changing from Osek murshe to Osek patur, VAT will be removed from payment links:

  • if the link used the “VAT included” mode, the final payment amount will remain unchanged;
  • if the “VAT added” mode was selected, meaning VAT was added on top of the specified amount, the final payment amount will be reduced by the VAT amount.

Documents

For an “esek murshe,” a tax invoice receipt — heshbonit mas/kabala (חשבונית מס/קבלה) — will be issued instead of a standard receipt (קבלה).

If you use an integration with an external accounting service, such as Morning or EasyCount, remember to update the business type in that service as well. Otherwise, the document for the payment may not be created.
Keep reading
Profile
Payment links

Webhooks

This article explains how to set up webhook notifications for payments.

For payments initiated via the API, Allpay sends a webhook by default in response to the API request. No additional configuration is required.

The setup described below is needed in two cases: if you want to receive webhook notifications for payments created not via the API, but through payment links, or if you need to specify an additional URL for sending webhook notifications as part of your API integration.

What is webhook

Webhook is an automatic event notification sent by the Allpay system to an external URL.

When a payment is successfully completed, Allpay sends a POST request to the specified address. The request contains full payment details, including the buyer's name, the payment description, and the amount.

Developers and integrators use webhooks to:

  • automatically trigger actions (e.g. activating an order or sending an email to the customer),
  • synchronize data between systems,
  • eliminate the need for manual payment status checks.

Even types

Allpay supports webhooks for two events — successful payment and refund.

For subscriptions, the webhook is automatically sent to the specified URL each month after a successful recurring charge.

Where to configure a webhook

A webhook is configured separately for each payment link or API integration:

  1. Payment link — in the settings of that specific link. In this case, the webhook will be sent for every payment made via that link.
  2. API integration — in the settings of a specific integration under the <span class="u-richtext-element">API Integrations</span> section. This allows you to receive webhooks for all payments processed through that integration — for example, from your site on WordPress, or another platform.

Allpay does not have a centralized webhook setting for all payments. This approach gives you flexible control over notifications across different channels.

Webhook request contents

Allpay sends a POST request to the specified URL. The request body is a JSON object containing parameters related to the event.

Example request

POST /c96zv6ri852dvppncccdg6fxkjnpwojg HTTP/2
Host: hook.eu2.make.com
accept: */*
content-type:application/json
content-length: 453

{
    "name": "Consultation",
    "items": [
        {
            "name": "Consultation",
            "price": 150,
            "qty": 2,
            "vat": "1"
        },
        {
            "name": "Clock",
            "price": 50,
            "qty": 1,
            "vat": "1"
        }
    ],
    "amount": "350",
    "status": 1,
    "client_name": "Tanur Mikrogalov",
    "client_email": "test@email.com",
    "client_tehudat": "123456789",
    "client_phone": "+972 58 569 8877",
    "foreign_card": "0",
    "card_mask": "455743******3431",
    "card_brand": "visa",
    "receipt": "",
    "inst": 1,
    "sign": "83f6fab69f7b237ee2db5d9993b84b5fe89ef722af6206a0ffe64480501f3784"
}

Each payment for which a webhook was sent is marked with a corresponding label. By clicking on this label, you can view the full contents of the request.

add_field parameter

If you add <span class="u-richtext-element">?add_field=any-string</span> to the payment link URL, this parameter will be included in the Webhook request body. Learn more.

Webhook security

Allpay supports two methods for verifying the authenticity of webhook requests:

Verification using the Webhook secret key

This method relies on an HMAC signature based on the SHA256 algorithm.

Signature generation algorithm:

  1. Remove the <span class="u-richtext-element">sign</span> parameter from the request.
  2. Exclude all parameters with empty values.
  3. Sort the remaining keys in alphabetical order.
  4. From the sorted list, take the parameter values and join them into a single string using a colon (:) as a separator.
  5. Append your Webhook secret key to the end of the string, preceded by a colon.
  6. Apply the SHA256 algorithm to the resulting string.
  7. Compare the result with the <span class="u-richtext-element">sign</span> parameter received in the request.

Platforms like Zapier support this type of verification using built-in tools, such as a custom script in Code by Zapier.

Example JavaScript for Zapier

const webhookKey = "YOUR WEBHOOK SECRET KEY";

// Parse the input params from JSON string to an object
const params = JSON.parse(inputData.params || '{}');

// Store the original signature from the request
const requestSignature = params.sign || null;

// Remove the 'sign' parameter before calculating the signature
delete params.sign;

function getApiSignature(params, webhookKey) {
    // Filter out empty values and sort keys alphabetically
    const sortedKeys = Object.keys(params)
        .filter((key) => {
            const value = params[key];
            return value !== null && value !== undefined && String(value).trim() !== '';
        })
        .sort();

    // Collect the values in sorted key order, process nested arrays (like "items")
    const chunks = [];
    sortedKeys.forEach(key => {
        const value = params[key];
        if (Array.isArray(value)) {
            value.forEach(item => {
                if (typeof item === 'object' && item !== null) {
                    Object.keys(item).sort().forEach(subKey => {
                        const val = item[subKey];
                        if (val !== null && val !== undefined && String(val).trim() !== '') {
                            chunks.push(String(val).trim());
                        }
                    });
                }
            });
        } else {
            chunks.push(String(value).trim());
        }
    });

    // Build the string to hash
    const baseString = chunks.join(':') + ':' + webhookKey;

    // Generate SHA256 hash
    const crypto = require('crypto');
    const hash = crypto.createHash('sha256').update(baseString).digest('hex');

    return { baseString, verifiedSignature: hash };
}

// Generate the signature
const result = getApiSignature(params, webhookKey);

// Return the original and calculated values
output = {
    requestSignature: requestSignature,
    baseString: result.baseString,
    verifiedSignature: result.verifiedSignature
};

Demo of webhook verification on Zapier

IP address verification

A simpler but less secure method is to check that the request comes from Allpay’s server IP address. You can request the current IP address by contacting our support team.

Webhook delivery and retries

Your server must return an <span class="u-richtext-element">200 OK</span> response to confirm successful receipt of a webhook. If any other status is returned, or the request fails due to a timeout or network error, Allpay will automatically retry delivery.

Allpay performs up to 10 delivery attempts in total. The first retry is made 1 minute after the initial failure. Subsequent retries are sent with progressively increasing intervals, with the final attempt occurring within 24 hours of the original request.

If all delivery attempts fail, the webhook will be marked as failed and no further retries will be made.

Keep reading
API
Integrations

How to integrate your platform with Allpay

Platform developers that need a payment solution can integrate with Allpay.

This model is suitable for platforms that want to add Allpay as a payment method and be listed in the Allpay integrations catalog. It does not include partner payouts and is based on mutual promotion (other partnership models).

This integration will become available to Allpay customers as a ready-made way to connect your platform.

Requirements

To have your platform added to the Allpay integrations catalog, the following conditions must be met:

  1. You do not participate in the Allpay partner or referral program.
    This integration is based on mutual promotion.
  2. The integration must be approved by Allpay in advance.
    Your platform must be in demand in Israel and already used by real customers.
  3. You are ready to support the integration on an ongoing basis.
    You are responsible for maintaining the integration and providing customer support on your side.

How to start

To approve the integration of your platform, contact Allpay support and briefly describe:

  • your platform;
  • who your customers are;
  • how exactly you want to use Allpay payments;
  • which integration method you plan to use: manual or automated;
  • whether there are already customers who need this integration.

Integration methods

Integration with Allpay can be implemented in two ways:

  • manual integration;
  • automated integration.

Manual integration

With manual integration, you implement the connection on your side and publish instructions for customers on your website.

The customer will need to:

  1. Open the integrations section in the Allpay dashboard.
  2. Create API keys.
  3. Copy the keys and paste them into the settings of your platform.

Technical involvement from Allpay is usually not required for this type of integration. After implementation, send us information about your platform and a link to the Allpay connection instructions on your website.

After review and approval, your platform will be added to the Allpay integrations catalog.

Automated integration

Automated integration allows the platform to be connected without manually copying API keys. The user clicks the connection button in the Allpay dashboard, confirms the connection on your platform side, and the API keys are transferred automatically.

Before implementation, Allpay provides your platform with:

<span class="u-richtext-element">partner_id</span> — the individual integration ID;

<span class="u-richtext-element">secret_key</span> — the secret key for signing and verifying server requests.

<span class="u-richtext-counter">1</span>Redirect from Allpay to your platform page

The user opens the <span class="u-richtext-element">Settings</span> → <span class="u-richtext-element">Integrations</span> → <span class="u-richtext-element">Your platform</span> section in the Allpay dashboard and clicks the connection button.

Allpay generates a one-time token for linking the accounts and redirects the user to the confirmation page on your platform side, for example:

https://your-platform.com/connect?token=TOKEN

Where <span class="u-richtext-element">TOKEN</span> is the one-time token created by Allpay.

The standard token lifetime is 1 hour.

<span class="u-richtext-counter">2</span>Confirmation on your platform side

On your side, the user confirms the connection under their account.

After confirmation, your platform redirects the user back to the universal Allpay endpoint:

https://allpay.to/services/endpoints/exchange.php?act=connect&partner_id=PARTNER_ID&token=TOKEN&external_uid=USER_ID

Where:

<span class="u-richtext-element">act=connect</span> — the integration connection action;

<span class="u-richtext-element">partner_id</span> — the individual integration ID;

<span class="u-richtext-element">token</span> — the one-time token created by Allpay;

<span class="u-richtext-element">external_uid</span> — the internal user ID on your platform.

<span class="u-richtext-counter">3</span>Creating and sending API keys to your platform

After verifying the token, Allpay links the Allpay user with the user on your platform, creates or finds the API keys <span class="u-richtext-element">api_login</span> and <span class="u-richtext-element">api_key</span>, and then sends them to your endpoint.

Example endpoint on your platform side:

POST https://your-platform.com/allpay/partner/exchange

Request body:

{
  "external_uid": "USER_ID",
  "api_login": "API_LOGIN",
  "api_key": "API_KEY",
  "sign": "SIGNATURE"
}

Where:

<span class="u-richtext-element">external_uid</span> — the user ID on your platform;

<span class="u-richtext-element">api_login</span> — the Allpay user's API login;

<span class="u-richtext-element">api_key</span> — the Allpay user's API key;

<span class="u-richtext-element">sign</span> — the request signature.

<span class="u-richtext-counter">4</span>Request signature

The server request with the API keys is signed using HMAC SHA-256.

Signature format:

hash_hmac('sha256', $payload_json, $secret_key);

Where:

<span class="u-richtext-element">payload_json</span> — the JSON request body;

<span class="u-richtext-element">secret_key</span> — the individual secret key.

<span class="u-richtext-counter">5</span>Response from your platform

After successfully receiving and saving the keys, your platform must return a successful response, for example:

{
  "ok": true
}

After this, Allpay marks the integration as active.

Disconnecting the integration

If the user disconnects the integration on your platform side, you must delete the saved API keys on your side.

In addition, your platform must send a POST request to Allpay to disconnect the integration:

POST https://allpay.to/services/endpoints/exchange.php?act=disconnect&partner_id=PARTNER_ID

Request body:

{
  "external_uid": "USER_ID",
  "sign": "SIGNATURE"
}

Where:

<span class="u-richtext-element">external_uid</span> — the user ID on your platform;

<span class="u-richtext-element">sign</span> — the request signature.

The disconnect request is also signed using <span class="u-richtext-element">secret_key</span>.

If the user disconnects the integration from the Allpay dashboard, Allpay can send a disconnect notification to your platform endpoint. To receive this notification, provide an endpoint on your side.

Security requirements

For automated integration, the following requirements must be met:

  1. HTTPS only
    All requests between Allpay and your platform must be sent only over HTTPS.
  2. Secure key storage
    The received <span class="u-richtext-element">api_login</span> and <span class="u-richtext-element">api_key</span> must be stored securely on your side.
  3. Server request signatures
    Server requests must be signed using <span class="u-richtext-element">secret_key</span>.

<span id="info">Information for the integrations catalog</span>

After the technical part is completed and the integration is working, send us the following information to add your platform to the Allpay integrations catalog:

  • platform logo in SVG format;
  • short platform description of up to 200 characters;
  • extended platform description of up to 360 characters;
  • technical support contacts for the integration: email and WhatsApp or Telegram;
  • information on whether your integration supports installments, recurring payments, and refunds;
  • link to the Allpay connection instructions on your website.

Allpay branding guidelines

Use the correct brand spelling:

correct: Allpay;

incorrect: AllPay, All Pay, allpay.

Use the official Allpay logo.

Keep reading
Integrations
API
Travolta confused - no search results
No results found.
Subscribe for important updates (ad-free)
Subscribe
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

FAQ

Found 100 out of 200
No items found.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Travolta confused - no search results
No results found.

Start accepting payments

Connect a sales channel for your business today
Free sign up
7-day trial
Cancel anytime
Sign up

Installments

Split the amount into monthly payments that will be deducted from the customer's card automatically (tashlumim).

Major card brands

Accepting payments with Visa, MasterCard, American Express, Diners, Discover, JCB and Isracard.

Digital receipts

Automatic generation of digital receipts (kabalot and hashbonit mas) through integration with a licensed service.

Weekly payouts

Option to receive payouts to a bank account weekly instead of monthly.