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.