Accepting payments
One request shape for every method.
| Field | Type | Notes |
|---|---|---|
method | string | Required. See payment methods. |
amount | integer | Required. Minor units. €10.50 is 1050. |
currency | string | Required. ISO 4217, e.g. EUR. |
country | string | Customer's country. Required by most local methods. |
success_url | string | Required. HTTPS. |
error_url | string | Required. HTTPS. |
reference | string | Your order id. Searchable. |
customer | object | first_name, last_name, email, reference. |
metadata | object | Returned untouched on every read. |
10.50 is rejected rather than interpreted. That is
deliberate: silently reading it as ten and a half cents would undercharge by
a factor of a hundred, and the error would surface in your bank statement
rather than your logs.Cards work exactly like everything else
A card payment returns a redirect_url too. It points at
CleonPay's secure payment page, where the customer enters their card and
pays without ever leaving it. Card numbers never touch your servers, which
keeps you out of PCI DSS scope entirely. Your integration is identical for
iDEAL and for Visa: create, redirect, wait for the webhook.
Let the customer choose: omit the method
Send the request without a method and the payment
page shows every method enabled on your account (cards inline, local
methods handing over to their banks) and collects anything the chosen
scheme still needs. One URL, the whole catalogue. This is also what powers
payment links.
Validation happens before the bank sees it
Scheme rules are enforced here, so you get a precise error instead of an opaque acquirer rejection.
{
"error": {
"type": "invalid_request_error",
"code": "method_requirements_not_met",
"message": "The request does not satisfy iDEAL's requirements.",
"details": [
{ "code": "currency_not_supported", "field": "currency",
"message": "iDEAL supports EUR, not GBP." },
{ "code": "country_not_supported", "field": "country",
"message": "iDEAL is available to customers in NL, not GB." }
]
}
}
Reading a payment
List accepts status, method, reference,
limit and created_before for keyset pagination.