Skip to content

iDeal

FR Integration option

Payment

Payment Flow

  1. The customer initiates the payment on the merchant's website.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with a link to the payment page. The lifespan of the payment link is 15 minutes.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.

Info

This integration option supports only EUR and USD currencies.

Request

Send a payment request with the following additional data:

object
return_url
required
string
URL to return the customer to when the transaction is completed.
ip
string
The customer's IP address.
object
A section of the payment method.
type
required
string
ideal
object
A section of information about the customer.
first_name
string
The customer's first name.
last_name
string
The customer's last name.
address
string
The customer's billing address.
birth_date
string
The customer's date of birth in the ISO 8601 format (YYYY-MM-DD).
city
string
The customer's billing city.
state
string
The customer's two-letter billing state only if the submitted billing address country is US, CA or AU.
country
string (2)
The customer's country in the ISO 3166-1 Alpha-2 format. For example, DE.
phone
string
The customer's phone number including the country code.
email
string
The customer's email address.
zip
string
The customer's billing ZIP or postal code.
Request example
{
    "request": {
        "amount": 20,
        "currency": "EUR",
        "description": "description",
        "return_url": "https://your_return_url.com",
        "ip": "127.0.0.1",
        "method": {
            "type": "ideal"
        },
        "customer": {
            "first_name": "John",
            "last_name": "Doe",
            "address": "First Str. 2",
            "country": "GB",
            "city": "London",
            "phone": "0123456789",
            "zip": "SE22 8FA",
            "email": "email@example.com"
        }
    }
}
Response

Redirect your customer to the URL received as the value of the form.action parameter.

Response example
{
    "transaction": {
        "uid": "ab1c05ac-334b-4430-913c-ba2eb3f9ee97",
        "type": "payment",
        "status": "pending",
        "amount": 20,
        "currency": "EUR",
        "description": "description",
        "created_at": "2025-11-11T13:42:59Z",
        "updated_at": "2025-11-11T13:43:00Z",
        "method_type": "ideal",
        "receipt_url": "https://backoffice.paysage.io/customer/transactions/ab1c05ac-334b-4430-913c-ba2eb3f9ee97/666769f41a97c80a8b0086f6b0a9edbb7bfbee4a7825a0ac4f43c268d0796e25",
        "payment": {
            "status": "pending",
            "gateway_id": 5902,
            "ref_id": "3475097\n",
            "message": "Transaction was initialized."
        },
        "ideal": {
            "type": "ideal"
        },
        "customer": {
            "zip": "SE22 8FA",
            "city": "London",
            "email": "email@example.com",
            "phone": "0123456789",
            "address": "First Str. 2",
            "country": "GB",
            "last_name": "Doe",
            "first_name": "John",
            "ip": "127.0.0.1"
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized.",
        "test": false,
        "billing_address": {
            "zip": "SE22 8FA",
            "city": "London",
            "email": "email@example.com",
            "phone": "0123456789",
            "address": "First Str. 2",
            "country": "GB",
            "last_name": "Doe",
            "first_name": "John"
        },
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },       
        "gateway": {
            "iframe": true
        },
        "form": {
            "action": "link-to-payment-page",
            "fields": [],
            "method": "GET"
        }
    }
}

Refund

Request

Send a standard refund request. It is possible to make only one refund transaction for the corresponding payment transaction and the refund amount must equal the amount of the corresponding payment transaction.

PM Integration option

Payment

Payment Flow

  1. The customer initiates the payment on the merchant's website.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with a link to the payment page.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment by following the instructions.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.

Info

This integration option supports only EUR currency.

Request

Send a payment request with the following additional data:

object
return_url
required

string
A URL to return the customer to when a transaction is completed.
object
A section of the payment method.
type
required
string
ideal
object
A section of information about the customer.
external_id
string
The customer's identifier in the merchant's system.
first_name
string
The customer's first name.
last_name
string
The customer's last name.
email
string
The customer's email address.
country
string (2)
The customer's country in the ISO 3166-1 Alpha-2 format. For example, NL.
Request example
{
    "request": {
        "amount": 500,
        "currency": "EUR",
        "description": "description",
        "test": true,
        "return_url": "https://return.com",
        "language": "en",
        "method": {
            "type": "ideal"
        },
        "customer": {
            "first_name": "John",
            "last_name": "Doe",
            "external_id": "123abc",
            "email": "email@example.com",
            "country": "NL"
        }
    }
} 
Response

Redirect the customer to the URL received as the value of the form.action parameter.

Response example
{
    "transaction": {
        "uid": "901710dd-8d02-4484-829b-51b7b9dba598",
        "type": "payment",
        "status": "pending",
        "amount": 500,
        "currency": "EUR",
        "description": "description",
        "created_at": "2026-04-05T17:12:52Z",
        "updated_at": "2026-04-05T17:12:53Z",
        "method_type": "ideal",
        "receipt_url": "https://backoffice.paysage.io/customer/transactions/901710dd-8d02-4484-829b-51b7b9dba598/a2ad0b74c363267ff8218cdd24e8594c2c2f70c557218acc3d7b59f5e162cced?language=en",
        "payment": {
            "status": "pending",
            "gateway_id": 6428,
            "ref_id": "22185cd2-1389-48bc-93a2-2730c0e16fc9",
            "message": "Transaction was initialized"
        },
        "ideal": {
            "type": "ideal"
        },
        "customer": {
            "email": "email@example.com",
            "country": "NL",
            "last_name": "Doe",
            "first_name": "John",
            "external_id": "123abc",
            "ip": null
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized",
        "test": true,
        "language": "en",
        "billing_address": {
            "email": "email@example.com",
            "country": "NL",
            "last_name": "Doe",
            "first_name": "John"
        },
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {
            "status": "successful"
        },
        "gateway": {
            "iframe": false
        },
        "form": {
            "action": "link-to-payment-page",
            "method": "GET",
            "fields": []
        }
    }
} 

CF Integration option

Payment

Payment Flow

  1. The customer initiates the payment on the merchant's website.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with a link to the payment page.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.

Info

This integration option supports only EUR currency.

Request

Send a payment request with the following additional data:

object
return_url
required

string
A URL to return the customer to when a transaction is completed.
ip
string
The customer's IP address.
object
A section of the payment method.
type
required
string
ideal
object
A section of information about the customer.
first_name
required
string (60)
The customer's first name.
last_name
required
string (60)
The customer's last name.
email
required
string
The customer's email address.
external_id
required
string (128)
The customer's identifier in the merchant's system.
birth_date
string
The customer's date of birth in the ISO 8601 format (YYYY-MM-DD).
phone
string
The customer's phone number.
country
string (2)
NL.
city
required
string (50)
The customer's city.
address
required
string (300)
The customer's address.
state
string (40)
The customer's state/region.
zip
required
string (12)
The customer's postal code.
Request example
{
  "request": {
      "amount": 100,
      "currency": "EUR",
      "description": "description",
      "tracking_id": "123abc",
      "notification_url": "https://your-notification.url",
      "return_url": "https://test.com",
      "ip": "127.0.0.1",
      "language": "en",
      "customer": {
          "first_name": "John",
          "last_name": "Doe",           
          "email": "test@test.com",
          "external_id": "123abc",
          "address": "1st Street",
          "zip": "1012 LG",
          "city": "Amsterdam"
      },
      "method": {
          "type": "ideal"
      }
  }
}
Response

Redirect the customer to the URL received as the value of the form.action parameter.

Response example
{
    "transaction": {
        "uid": "d7dd0e98-68b8-46bf-9be7-e66a5956f78a",
        "type": "payment",
        "status": "pending",
        "amount": 100,
        "currency": "EUR",
        "description": "description",
        "created_at": "2026-07-16T07:25:09Z",
        "updated_at": "2026-07-16T07:25:09Z",
        "method_type": "ideal",
        "receipt_url": "https://backoffice.paysage.io/customer/transactions/d7dd0e98-68b8-46bf-9be7-e66a5956f78a/de7db64ef5776313af6434f46a674900abb7a2a3aa1f21e6a06b15d5ca7e7537?language=en",
        "payment": {
            "status": "pending",
            "gateway_id": 6874,
            "ref_id": "69393529",
            "message": "Transaction was initialized."
        },
        "ideal": {
            "type": "ideal"
        },
        "customer": {
            "email": "test@test.com",
            "last_name": "Doe",
            "first_name": "John",
            "ip": "127.0.0.1",
            "external_id": "123abc",
            "address": "1st Street",
            "zip": "1012 LG",
            "city": "Amsterdam"
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized.",
        "tracking_id": "123abc",
        "test": false,
        "language": "en",
        "billing_address": {
            "email": "test@test.com",
            "last_name": "Doe",
            "first_name": "John",               
            "address": "1st Street",
            "zip": "1012 LG",
            "city": "Amsterdam"
        },
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {
            "status": "skipped"
        },
        "gateway": {
            "iframe": false
        },
        "form": {
            "action": "link-to-payment-page",
            "fields": [],
            "method": "GET"
        }
    }
}