Skip to content

PayPro API Reference (v1)

Servers

https://api.paypro.nl/

Payments

The payment object is the core of the PayPro API. You can create payments to let a customer pay which ultimately transfers funds from them to you.

This allows you to setup one-time payments, recurring payments, subscriptions or invoices.

Refer to our Creating payments guide to see how you can implement payments.

Operations

Retrieve a list of payments

Request

Retrieve a list of payments that have been created for your account. The payments are sorted, with the most recent first.

Security
apiKey

Responses

payments found

Bodyapplication/json
typestringrequired
Value"list"
dataArray of objects(payment)required
Example: [{"id":"PPH25H07JYWLR7PA82","type":"payment","amount":1000,"description":"Test Payment","currency":"EUR","pay_method":{"id":"ideal","type":"pay_method","name":"iDEAL","currencies":["EUR"],"minimum_amount":10,"maximum_amount":5000000,"details":{}},"state":"paid","refunded_amount":0,"return_url":"https://example.com/thank-you","cancel_url":"https://example.com/cancel","metadata":{},"customer":"CU7JRN6W6K3DA9","mandate":"MD6ULYXJ4HP9RJ","subscription":null,"installment_plan":null,"locale":"en","paid_at":"2023-06-30T12:44:35Z","created_at":"2023-06-30T12:40:10Z","_links":{"self":"https://api.paypro.nl/payments/PPH25H07JYWLR7PA82","customer":"https://api.paypro.nl/customers/CU7JRN6W6K3DA9","mandate":"https://api.paypro.nl/mandates/MD6ULYXJ4HP9RJ"}}]
data[].​idstringrequired
Example: "PPH25H07JYWLR7PA82"
data[].​typestringrequired
Value"payment"
Example: "payment"
data[].​amountintegerrequired
Example: 1000
data[].​descriptionstringrequired
Example: "Test Payment"
data[].​currencystringrequired
Value"EUR"
Example: "EUR"
data[].​pay_methodpay_method (object) or null_type (any)required
Example: {"id":"ideal","type":"pay_method","name":"iDEAL","currencies":["EUR"],"minimum_amount":10,"maximum_amount":5000000,"details":{}}
Any of:
data[].​pay_method.​idstringrequired
Example: "ideal"
data[].​pay_method.​typestringrequired
Value"pay_method"
Example: "pay_method"
data[].​pay_method.​namestringrequired
Example: "iDEAL"
data[].​pay_method.​currenciesArray of strings
Items Value"EUR"
Example: ["EUR"]
data[].​pay_method.​minimum_amountinteger
Example: 10
data[].​pay_method.​maximum_amountinteger
Example: 5000000
data[].​pay_method.​detailsobject
Example: {}
data[].​statestringrequired
Example: "paid"
data[].​refunded_amountintegerrequired
data[].​return_urlstring or null(uri)required
Example: "https://example.com/thank-you"
data[].​cancel_urlstring or null(uri)required
Example: "https://example.com/cancel"
data[].​metadataobjectrequired
Example: {}
data[].​customerstring or nullrequired
Example: "CU7JRN6W6K3DA9"
data[].​mandatestring or nullrequired
Example: "MD6ULYXJ4HP9RJ"
data[].​subscriptionstring or nullrequired
data[].​installment_planstring or nullrequired
data[].​localestring or nullrequired
Enum"de""en""fr""nl"
Example: "en"
data[].​paid_atstring or null(date-time)required
Example: "2023-06-30T12:44:35Z"
data[].​fail_reasonstring or null
data[].​created_atstring or null(date-time)required
Example: "2023-06-30T12:40:10Z"
data[].​_linksobjectrequired
Example: {"self":"https://api.paypro.nl/payments/PPH25H07JYWLR7PA82","customer":"https://api.paypro.nl/customers/CU7JRN6W6K3DA9","mandate":"https://api.paypro.nl/mandates/MD6ULYXJ4HP9RJ"}
data[].​_links.​selfstring(uri)required
Example: "https://api.paypro.nl/payments/PPH25H07JYWLR7PA82"
data[].​_links.​customerstring(uri)
Example: "https://api.paypro.nl/customers/CU7JRN6W6K3DA9"
data[].​_links.​mandatestring(uri)
Example: "https://api.paypro.nl/mandates/MD6ULYXJ4HP9RJ"
data[].​_links.​subscriptionstring(uri)
data[].​_links.​installment_planstring(uri)
data[].​_links.​checkoutstring(uri)
countintegerrequired
_linksobjectrequired
_links.​selfstring(uri)required
_links.​nextstring(uri)
_links.​prevstring(uri)
Response
application/json
{ "type": "list", "data": [ { … } ], "count": 0, "_links": { "self": "http://example.com", "next": "http://example.com", "prev": "http://example.com" } }

Creates a payment

Request

Creates a Payment object.

After you have created a Payment you can use the _links.checkout link to redirect your customer.

Security
apiKey
Bodyapplication/json
amountintegerrequired

The amount that the customer will have to pay.

Example: 1000
currencystringrequired

The currency of the payment. Only 'EUR' is supported.

Value"EUR"
Example: "EUR"
descriptionstringrequired

The description of the payment. This will be shown to your customer and will be visible in the dashboard.

Example: "Test Payment"
return_urlstring or null(uri)

The URL where the customer will be send to after the payment has been processed.

Example: "https://example.com/thank-you"
cancel_urlstring or null(uri)

The URL where the customer will be send to after the payment has been canceled by the customer.

Example: "https://example.com/cancel"
pay_methodsArray of strings or null

The allowed pay methods of the payment. If only one pay method is specified, it will be set as the payment pay method. Cannot be used together with a mandate.

Enum"afterpay""bancontact""bank-transfer""creditcard""direct-debit""ideal""ideal-qr""klarna-paynow""paypal"
Example: ["ideal","creditcard","paypal"]
metadataobject or null

You can put in random data that you like to save alongside the payment. When you fetch the payment this will be returned in the metadata field.

customerstring or null

ID of the customer that pays. This field is optional, if nothing is given we create a new Customer. Cannot be used together with a mandate.

mandatestring or null

ID of the mandate for payment

setup_mandateboolean or null

Indicates if the payment should create a mandate after it has been paid. This allows to setup recurring payments without the need to use a Subscription or InstallmentPlan. Needs the customer parameter to be set as well. Cannot be used together with a mandate.

localestring or null

Specifies the language to be used for the payment pages shown to the customer. If no locale or an invalid locale is specified we will ignore it and choose the locale based on the account settings or the locale used by the customer.

Enum"de""en""fr""nl"
issuerstring or nullDeprecated

Specifying the iDEAL issuer is deprecated and will be ignored if provided.

Enum"SNSBNL2A""ASNBNL21""ABNANL2A""BUNQNL2A""KNABNL2H""RABONL2U""REVOLT21""RBRBNL21""TRIONL2U""FVLBNL22"

Responses

payment created

Bodyapplication/json
idstringrequired
Example: "PPH25H07JYWLR7PA82"
typestringrequired
Value"payment"
Example: "payment"
amountintegerrequired
Example: 1000
descriptionstringrequired
Example: "Test Payment"
currencystringrequired
Value"EUR"
Example: "EUR"
pay_methodpay_method (object) or null_type (any)required
Example: {"id":"ideal","type":"pay_method","name":"iDEAL","currencies":["EUR"],"minimum_amount":10,"maximum_amount":5000000,"details":{}}
Any of:
pay_method.​idstringrequired
Example: "ideal"
pay_method.​typestringrequired
Value"pay_method"
Example: "pay_method"
pay_method.​namestringrequired
Example: "iDEAL"
pay_method.​currenciesArray of strings
Items Value"EUR"
Example: ["EUR"]
pay_method.​minimum_amountinteger
Example: 10
pay_method.​maximum_amountinteger
Example: 5000000
pay_method.​detailsobject
Example: {}
statestringrequired
Example: "paid"
refunded_amountintegerrequired
return_urlstring or null(uri)required
Example: "https://example.com/thank-you"
cancel_urlstring or null(uri)required
Example: "https://example.com/cancel"
metadataobjectrequired
Example: {}
customerstring or nullrequired
Example: "CU7JRN6W6K3DA9"
mandatestring or nullrequired
Example: "MD6ULYXJ4HP9RJ"
subscriptionstring or nullrequired
installment_planstring or nullrequired
localestring or nullrequired
Enum"de""en""fr""nl"
Example: "en"
paid_atstring or null(date-time)required
Example: "2023-06-30T12:44:35Z"
fail_reasonstring or null
created_atstring or null(date-time)required
Example: "2023-06-30T12:40:10Z"
_linksobjectrequired
Example: {"self":"https://api.paypro.nl/payments/PPH25H07JYWLR7PA82","customer":"https://api.paypro.nl/customers/CU7JRN6W6K3DA9","mandate":"https://api.paypro.nl/mandates/MD6ULYXJ4HP9RJ"}
_links.​selfstring(uri)required
Example: "https://api.paypro.nl/payments/PPH25H07JYWLR7PA82"
_links.​customerstring(uri)
Example: "https://api.paypro.nl/customers/CU7JRN6W6K3DA9"
_links.​mandatestring(uri)
Example: "https://api.paypro.nl/mandates/MD6ULYXJ4HP9RJ"
_links.​subscriptionstring(uri)
_links.​installment_planstring(uri)
_links.​checkoutstring(uri)
Response
application/json
{ "id": "PPH25H07JYWLR7PA82", "type": "payment", "amount": 1000, "description": "Test Payment", "currency": "EUR", "pay_method": { "id": "ideal", "type": "pay_method", "name": "iDEAL", "currencies": [ … ], "minimum_amount": 10, "maximum_amount": 5000000, "details": {} }, "state": "paid", "refunded_amount": 0, "return_url": "https://example.com/thank-you", "cancel_url": "https://example.com/cancel", "metadata": {}, "customer": "CU7JRN6W6K3DA9", "mandate": "MD6ULYXJ4HP9RJ", "subscription": null, "installment_plan": null, "locale": "en", "paid_at": "2023-06-30T12:44:35Z", "created_at": "2023-06-30T12:40:10Z", "_links": { "self": "https://api.paypro.nl/payments/PPH25H07JYWLR7PA82", "customer": "https://api.paypro.nl/customers/CU7JRN6W6K3DA9", "mandate": "https://api.paypro.nl/mandates/MD6ULYXJ4HP9RJ" } }

Retrieves a list of chargebacks that belong to this payment

Request

Retrieves a list of chargebacks that belong to this payment.

Security
apiKey
Path
idstringrequired

Responses

chargebacks found

Bodyapplication/json
typestringrequired
Value"list"
dataArray of objects(chargeback)required
Example: [{"id":"PCG2SZKYJCCDV8","type":"chargeback","amount":1000,"description":"Test Payment","reason":"MD06","payment":"PPBLGEE6UG92MS","currency":"EUR","state":"completed","refunded_at":"2023-06-30T12:44:35Z","created_at":"2023-06-30T12:40:10Z","_links":{"self":"https://api.paypro.nl/chargebacks/PCG2SZKYJCCDV8","payment":"https://api.paypro.nl/payments/PPBLGEE6UG92MS"}}]
data[].​idstringrequired
Example: "PCG2SZKYJCCDV8"
data[].​typestringrequired
Value"chargeback"
Example: "chargeback"
data[].​amountintegerrequired
Example: 1000
data[].​descriptionstringrequired
Example: "Test Payment"
data[].​reasonstring or nullrequired
Example: "MD06"
data[].​currencystringrequired
Value"EUR"
Example: "EUR"
data[].​paymentstringrequired
Example: "PPBLGEE6UG92MS"
data[].​statestringrequired
Example: "completed"
data[].​charged_back_atstring or null(date-time)required
data[].​created_atstring(date-time)required
Example: "2023-06-30T12:40:10Z"
data[].​_linksobjectrequired
Example: {"self":"https://api.paypro.nl/chargebacks/PCG2SZKYJCCDV8","payment":"https://api.paypro.nl/payments/PPBLGEE6UG92MS"}
data[].​_links.​selfstring(uri)required
Example: "https://api.paypro.nl/chargebacks/PCG2SZKYJCCDV8"
data[].​_links.​paymentstring(uri)required
Example: "https://api.paypro.nl/payments/PPBLGEE6UG92MS"
countintegerrequired
_linksobjectrequired
_links.​selfstring(uri)required
_links.​nextstring(uri)
_links.​prevstring(uri)
Response
application/json
{ "type": "list", "data": [ { … } ], "count": 0, "_links": { "self": "http://example.com", "next": "http://example.com", "prev": "http://example.com" } }

Refunds

Refunds allow you to return funds to your customer. These funds are deducted from your PayPro balance and are refunded to the card, bank account or wallet used in the initial payment.

You can create refunds yourself or in some cases the customer can initiate a refund.

Refer to our Refund guide on how to manage and create refunds.

Operations

Chargebacks

Chargebacks are created by our system when a customer files a dispute and initiates a chargeback. For example this can happen when the customer does not receive the product bought.

Only certain pay methods have chargebacks like credit card and SEPA Direct Debit. Once the customer initiates a chargeback we will create a chargeback object and notify you through our webhooks.

Operations

Pay methods

Pay method endpoints can be used to retrieve all available payment methods for your account.

The pay method object contains information about the pay method for instance the minimum and maximum amount or which currencies are allowed.

Operations

Customers

Customers are a representation of your customers. These are used to get better insight in your PayPro payments for instance when searching for a customer name in our dashboard.

Customers can be created directly through the API or are created by the system when a payment is paid and no existing customer is associated.

For recurring payments and subscriptions it is mandatory to create a customer. This allows us to manage mandates, subscriptions and payments on the customer level.

A customer does not require any customer information, but we recommend to atleast provide a name or email. This makes it easier to manage your customers and payments in the PayPro dashboard.

To see how you can use customers see our Subscriptions guide.

Operations

Mandates

A Mandate symbolizes the permission the customer gave you to charge their payment method. This is used to setup recurring payments and subscriptions.

Mandates can be created directly for some payment types like "direct-debit" or require an authorization payment which is generally the first payment when setting up the recurring payments or subscription.

Check our Recurring payments guide or Subscriptions guide for how to use mandates.

Operations

Subscriptions

Subscriptions are the easiest way to setup and schedule recurring payments. You provide us the amounts and intervals and PayPro will manage the full life-cycle of the subscription.

Each interval a Subscription period and Payment will be created which will charge the customer.

These subscriptions can be managed through the API or in our dashboard and also includes optional invoicing, debtor management and other features.

Refer to our Subscriptions guide how to setup and manage your subscriptions.

It is also possible to create the Subscription period yourself which we call an "on-demand" subscription check our On-demand subscriptions guide how to do this.

Operations

Subscription periods

The Subscription period represents a period in a subscription. These are created by the system at the interval you specified or by yourself when using an "on-demand" subscription.

The payment created to charge the customer is associated with the subscription period as well as other payments that might happen if the first one fails or when a customer repays after a chargeback.

Operations

Installment plans

Installment plans can be used to periodically charge a customer by specifying the amount and interval. The amount and number of periods are fixed.

The main difference with a subscription is that an installment plan does not run indefinitely and the invoice is generated up front. Where with a subscription it can run indefinitely and an invoice is created for each period.

If you are unsure which to use we suggest to look at the Subscriptions first. Most use cases can be solved with subscriptions and installment plans should only be considered if a single invoice is required.

Operations

Installment plan periods

The Installment plan period represents a period in an installment plan. These are created by the system at the interval you specified.

The payment created to charge the customer are associated with the installment plan period as well as other payments that might happen if the first one fails or when a customer repays after a chargeback.

Operations

Events

Events are generated by our system to notify about something that happened in your account. Events contain an event type like payment.paid or customer.updated and a payload with information about the object for which this event happened.

The event payload always contains the information about the resource at the moment the event was created. This means the information in the payload may be out-of-date. To avoid this you should retrieve the resource from the API again and use the information retrieved in the API request.

You can use these endpoints to retrieve events from your account. Our webhook system uses these events when sending notifications to your server.

Refer to the webhooks section for more information.

Operations

Webhooks

Webhooks can be used to send events to an HTTP endpoint. A typical event is when a payment is paid, payment.paid.

You can retrieve and manage your webhooks through the API or in the PayPro dashboard.

Refer to the webhooks section on how to setup and use webhooks and events.

Operations

Payouts

Payouts are created when you receive funds from PayPro to one of your bank accounts. These can be created on a schedule, through the dashboard or by using the Payout create endpoint.

When creating a payout you must have sufficient balance in your PayPro account.

Operations

Top-ups

Top-ups are a way to top-up your PayPro balance. This can be done through our dashboard or by using the Top-up create endpoint.

The top-up has a unique ID which might be necessary to use when doing manual transfers. When the top-up is processed your PayPro balance will automatically be increased by the amount in the top-up.

Operations