General
Capayable is a service that lets the customer pay afterwards. Placing an order results in a credit check of the customer (performed by Capayable). If approved, the customer will receive a digital invoice and payment instructions. It is also possible to provide the option for customers to pay the invoice in (three) installments. This payment options is called in3. All payments will be performed with iDEAL.
Capayable and In3 are available for Dutch consumers and companies only. Orders from non Dutch customers will be rejected by Capayable. We therefore recommend to provide the Capayable option to Dutch customers only.
The service supports three different calls:
- Pay
- PayInInstallments
- Refund
Pay
If the merchant has a contract with Capayable for the service Achteraf Betalen, then use the Pay call for your orders. Also make sure to name the payment option Capayable Achteraf Betalen in the checkout. This call initiates a credit check of the customer and - if approved - registers an order at Capayable. The customer will then receive an email from Capayable with payment instructions to fulfill the complete invoice amount at once.
Please take the following points into consideration when performing this call:
- Only one address can be submitted with the order. It is required for this address to be both the billing ánd shipping address. Therefore a validation on your webshop checkout is required; customers who provide a different shipping address should not be able to check out with Capayable.
- The payment is based on the provided total amount (AmountDebit). Any provided article information and it's subtotals are ignored in this regard and only has an informational purpose; it will be shown on the Capayable invoice to the consumer. For this reason it is still important that the provided subtotals (article prices, discounts or fees) match with the total amount.
- It is always required to provide "Person" information, even if the CustomerType is "SoleProprietor" or "Company". Of course, in the latter two cases there is an additional requirement of "'Company" information.
Request
JSON gateway request
Description
string
|
Required
Description of the order. Important note: This is a basic parameter. |
ClientIP
string
|
Required
IP adres of the customer. Important note: This is a basic parameter. |
CustomerType
string
|
Required
Three values possible: Debtor, SoleProprietor, Company. |
InvoiceDate
date
|
Required
Date of the invoice |
LastName
string
|
Required
GroupType: Person. Customers' last name. |
Culture
string
|
Required
GroupType: Person. Customers' culture code (ISO). At this moment, only "nl-NL" is supported. |
Initials
string
|
Required
GroupType: Person. Customers' intitials. |
Gender
integer
|
Required
GroupType: Person. Customers' gender. Possible values: 1, 2, 0, 9 (Male, female, unknown, not applicable. Default: 0). |
BirthDate
date
|
Required
GroupType: Person. Customers' birth date. |
Street
string
|
Required
GroupType: Address. Customers' Street. |
HouseNumber
integer
|
Required
GroupType: Address. Customers' housenumber |
HouseNumberSuffix
string
|
GroupType: Address. Customers'' house number suffix |
ZipCode
string
|
Required
GroupType: Address. Customers' zip code |
City
string
|
Required
GroupType: Address. Customers' City |
Country
string
|
Required
GroupType: Address. Customers' country |
Phone
string
|
Required
GroupType: Phone. Customers' phonenumber |
Email
string
|
Required
GroupType: Email. Customers' emailadress |
Code
string
|
Required
GroupType: ProductLine. Identification code of the article, for instance an article number. |
Name
string
|
Required
GroupType: ProductLine. Name of the article |
Quantity
decimal
|
Required
GroupType: ProductLine. The ordered quantity of the article |
Price
decimal
|
Required
GroupType: ProductLine. Price of the article |
Fax
string
|
GroupType: Phone. Customers' fax number |
Name
string
|
GroupType: Company. Company name. Required if CustomerType is "SoleProprietor" or "Company". |
ChamberOfCommerce
string
|
GroupType: Company. Chamber of Commerce number. Required if CustomerType is "SoleProprietor" or "Company". |
Name
string
|
GroupType: SubtotalLine. This optional parameter can be used to provide any desired variable. For example, you can use it to define a "Discount", "Payment Fee", "Shipping Costs", or even a "Customer Number". |
Value
string
|
GroupType: SubtotalLine. Value of the defined SubtotalLine variable. Following the examples above, this could be any amount for Discount, Payment Fee and Shipping Costs (we advice to use a negative amount for Discount) or 12345 for Customer Code. |
JSON
{
"ClientIP": {
"Type": 0,
"Address": "0.0.0.0"
},
"Description": "This is a test order",
"Currency": "EUR",
"AmountDebit": 9.5,
"Invoice": "testinvoice 123",
"Services": {
"ServiceList": [
{
"Name": "Capayable",
"Action": "Pay",
"Parameters": [
{
"Name": "CustomerType",
"GroupType": "",
"GroupID": "",
"Value": "Company"
},
{
"Name": "InvoiceDate",
"GroupType": "",
"GroupID": "",
"Value": "22-01-2018"
},
{
"Name": "LastName",
"GroupType": "Person",
"GroupID": "",
"Value": "Smith"
},
{
"Name": "Culture",
"GroupType": "Person",
"GroupID": "",
"Value": "nl-NL"
},
{
"Name": "Initials",
"GroupType": "Person",
"GroupID": "",
"Value": "J.S."
},
{
"Name": "Gender",
"GroupType": "Person",
"GroupID": "",
"Value": "1"
},
{
"Name": "BirthDate",
"GroupType": "Person",
"GroupID": "",
"Value": "1990-01-01"
},
{
"Name": "Street",
"GroupType": "Address",
"GroupID": "",
"Value": "Hoofdstraat"
},
{
"Name": "HouseNumber",
"GroupType": "Address",
"GroupID": "",
"Value": "90"
},
{
"Name": "HouseNumberSuffix",
"GroupType": "Address",
"GroupID": "",
"Value": "a"
},
{
"Name": "ZipCode",
"GroupType": "Address",
"GroupID": "",
"Value": "8441ER"
},
{
"Name": "City",
"GroupType": "Address",
"GroupID": "",
"Value": "Heerenveen"
},
{
"Name": "Country",
"GroupType": "Address",
"GroupID": "",
"Value": "NL"
},
{
"Name": "Phone",
"GroupType": "Phone",
"GroupID": "",
"Value": "0612345678"
},
{
"Name": "Email",
"GroupType": "Email",
"GroupID": "",
"Value": "your@email.com"
},
{
"Name": "Code",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "abc123"
},
{
"Name": "Name",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "Blue Toy Car"
},
{
"Name": "Quantity",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "1"
},
{
"Name": "Price",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "10.00"
},
{
"Name": "Fax",
"GroupType": "Phone",
"GroupID": "",
"Value": "0101234567"
},
{
"Name": "Name",
"GroupType": "Company",
"GroupID": "",
"Value": "My Company B.V."
},
{
"Name": "ChamberOfCommerce",
"GroupType": "Company",
"GroupID": "",
"Value": "123456"
},
{
"Name": "Name",
"GroupType": "SubtotalLine",
"GroupID": "1",
"Value": "Korting"
},
{
"Name": "Value",
"GroupType": "SubtotalLine",
"GroupID": "1",
"Value": "-2.00"
},
{
"Name": "Name",
"GroupType": "SubtotalLine",
"GroupID": "2",
"Value": "Betaaltoeslag"
},
{
"Name": "Value",
"GroupType": "SubtotalLine",
"GroupID": "2",
"Value": "0.50"
},
{
"Name": "Name",
"GroupType": "SubtotalLine",
"GroupID": "3",
"Value": "Verzendkosten"
},
{
"Name": "Value",
"GroupType": "SubtotalLine",
"GroupID": "3",
"Value": "1.00"
}
]
}
]
}
}
Response 200 Status: Ok 400 Status: Access denied 500 Status: Bad request
JSON gateway response
JSON
{
"Key": "F6A912815B1D47A7890E07AE47FBXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S990",
"Description": "The request was successful."
},
"DateTime": "2018-01-23T12:25:25"
},
"RequiredAction": null,
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": "Capayable",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 9.5,
"TransactionType": "V404",
"MutationType": 2,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": "668FD7681AC446589DFA0C3D898XXXXX"
}
Push
JSON push response
JSON
{
"Transaction": {
"Key": "F6A912815B1D47A7890E07AE47FBXXXX",
"Invoice": "testinvoice 123",
"ServiceCode": "Capayable",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S990",
"Description": "The request was successful."
},
"DateTime": "2018-01-23T12:25:25"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 9.5,
"TransactionType": "V404",
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": null,
"IsCancelable": false,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": "668FD7681AC446589DFA0C3D898XXXXX"
}
}
PayInInstallments
If the merchant has a contract with Capayable for the service In3, then use the PayInInstallments call for your orders. Also make sure to name the payment option In3 in your checkout. Performing this call initiates a credit check of the customer and - if approved - returns a redirect URL where the customer needs to be redirected to in order to perform the first payment (one of three). The remaining two installments can be paid later; Capayable will sent the payment instructions per email to the consumer.
The following conditions apply for the PayInInstallments call:
- The input parameters only provide one set of address parameters. It is required to provide an address that is both the shipping ánd invoice address. Therefore a validation on your webshop checkout is required; customers who provide a different shipping address should not be able to check out with Capayable.
- The payment is based on the provided total amount (AmountDebit). Any provided article information and it's subtotals are ignored in this regard and only has an informational purpose; it will be shown on the Capayable invoice to the consumer. For this reason it is still important that the provided subtotals (article prices, discounts or fees) match with the total amount.
- It is always required to provide "Person" information, even if the CustomerType is "SoleProprietor" or "Company". Of course, in the latter two cases there is an additional requirement of "'Company" information.
- Important: There are two versions of In3: In3 Flexible and In3 Garant. Please check the contract with Capayable which version applies. It determines the way the PayInInstallment call should be made. Please see the description of the parameter IsInThreeGuarantee.
Request
JSON gateway request
This request uses the same parameters as the "Pay" request, with only the addition of 1 parameter: IsInThreeGuarantee.
IsInThreeGuarantee
string
|
If the service is In3 Garant, provide this parameter with value true. If the service is In3 Flexible, provide this parameter with value false, or don't provide this parameter at all. |
JSON
{
"ClientIP": {
"Type": 0,
"Address": "0.0.0.0"
},
"Description": "Thank you for your order",
"Currency": "EUR",
"AmountDebit": 3.00,
"Invoice": "testinvoice 12345678",
"Services": {
"ServiceList": [
{
"Name": "Capayable",
"Action": "PayInInstallments",
"Parameters": [
{
"Name": "CustomerType",
"GroupType": "",
"GroupID": "",
"Value": "Debtor"
},
{
"Name": "InvoiceDate",
"GroupType": "",
"GroupID": "",
"Value": "23-02-2018"
},
{
"Name": "LastName",
"GroupType": "Person",
"GroupID": "",
"Value": "Smith"
},
{
"Name": "Culture",
"GroupType": "Person",
"GroupID": "",
"Value": "nl-NL"
},
{
"Name": "Initials",
"GroupType": "Person",
"GroupID": "",
"Value": "J.S."
},
{
"Name": "Gender",
"GroupType": "Person",
"GroupID": "",
"Value": "1"
},
{
"Name": "BirthDate",
"GroupType": "Person",
"GroupID": "",
"Value": "1990-01-01"
},
{
"Name": "Street",
"GroupType": "Address",
"GroupID": "",
"Value": "Hoofdstraat"
},
{
"Name": "HouseNumber",
"GroupType": "Address",
"GroupID": "",
"Value": "90"
},
{
"Name": "HouseNumberSuffix",
"GroupType": "Address",
"GroupID": "",
"Value": "a"
},
{
"Name": "ZipCode",
"GroupType": "Address",
"GroupID": "",
"Value": "8441ER"
},
{
"Name": "City",
"GroupType": "Address",
"GroupID": "",
"Value": "Heerenveen"
},
{
"Name": "Country",
"GroupType": "Address",
"GroupID": "",
"Value": "NL"
},
{
"Name": "Phone",
"GroupType": "Phone",
"GroupID": "",
"Value": "0612345678"
},
{
"Name": "Email",
"GroupType": "Email",
"GroupID": "",
"Value": "your@email.nl"
},
{
"Name": "Code",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "abc123"
},
{
"Name": "Name",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "Blue Toy Car"
},
{
"Name": "Quantity",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "1"
},
{
"Name": "Price",
"GroupType": "ProductLine",
"GroupID": "1",
"Value": "10.00"
},
{
"Name": "Fax",
"GroupType": "Phone",
"GroupID": "",
"Value": "0101234567"
},
{
"Name": "Name",
"GroupType": "SubtotalLine",
"GroupID": "",
"Value": "Korting"
},
{
"Name": "Value",
"GroupType": "SubtotalLine",
"GroupID": "",
"Value": "-2.00"
}
]
}
]
}
}
Response 200 Status: Ok 400 Status: Access denied 500 Status: Bad request
JSON gateway response
The response contains a URL where the customer can be redirected to in order to perform the first initial payment. However, this will only happen in live mode. If the call is performed in test mode, an immediate succes status will be returned.
JSON
{
"Key": "B3E81DCB894A43619AD8CCE5A10F5xxx",
"Status": {
"Code": {
"Code": 791,
"Description": "Pending processing"
},
"SubCode": {
"Code": "S002",
"Description": "An additional action is required: Pay first installment via Capayable"
},
"DateTime": "2018-02-23T12:15:26"
},
"RequiredAction": {
"RedirectURL": "https://checkout.buckaroo.nl/html/redirect.ashx?r=D197713CEE864F9C9D2643EDB6C99xxx",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": [
{
"Name": "Capayable",
"Action": null,
"Parameters": [
{
"Name": "CapayableTransactionKey",
"Value": "65af1494fb6540e8a323477e80815xxx"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 12345678",
"ServiceCode": "Capayable",
"IsTest": false,
"Currency": "EUR",
"AmountDebit": 3,
"TransactionType": "V406",
"MutationType": 2,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": "3B44FD7B73694891A59C04010890Exxx"
}
Push
JSON push response
When the payment has been done and the customer has succesfully been redirected back to the merchants' website, the following push will be performed by Buckaroo.
JSON
{
"Transaction": {
"Key": "B3E81DCB894A43619AD8CCE5A10F5xxx",
"Invoice": "testinvoice 12345678",
"ServiceCode": "Capayable",
"Status": {
"Code": {
"Code": 190,
"Description": "Succes"
},
"SubCode": {
"Code": "S990",
"Description": "De verwerking is geslaagd."
},
"DateTime": "2018-02-23T12:19:14"
},
"IsTest": false,
"Order": null,
"Currency": "EUR",
"AmountDebit": 3,
"TransactionType": "V406",
"Services": [
{
"Name": "Capayable",
"Action": null,
"Parameters": [
{
"Name": "CapayableTransactionKey",
"Value": "65af1494fb6540e8a323477e80815xxx"
}
],
"VersionAsProperty": 1
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": null,
"IsCancelable": false,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": "3B44FD7B73694891A59C04010890Exxx"
}
}
Refund
This action can be used to perform a refund (or cancellation) of a placed order. This can be a "Pay" order as well as a "PayInInstallments" order.
Request
JSON gateway request
For this request it is required to provide an AmountDebit and the transactionkey of the original order.
JSON
{
"Currency": "EUR",
"AmountCredit": 0.3,
"Invoice": "testinvoice 123",
"OriginalTransactionKey": "1EC52112B19E4AF198E7C51D36C1xxxx",
"Services": {
"ServiceList": [
{
"Name": "Capayable",
"Action": "Refund"
}
]
}
}
Response 200 Status: Ok 400 Status: Access denied 500 Status: Bad request
JSON gateway request
JSON
{
"Key": "5DABBCA4939A44CB8DD845E7944Axxxx",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S990",
"Description": "The request was successful."
},
"DateTime": "2018-01-16T10:22:52"
},
"RequiredAction": null,
"Services": [
{
"Name": "Capayable",
"Action": null,
"Parameters": [
{
"Name": "Amount credited",
"Value": "30"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": "Capayable",
"IsTest": false,
"Currency": "EUR",
"AmountCredit": 0.3,
"TransactionType": "V405",
"MutationType": 2,
"RelatedTransactions": [
{
"RelationType": "refund",
"RelatedTransactionKey": "1EC52112B19E4AF198E7C51D36C1xxxx"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": "B4F8B62EA1054B70BAE670F16871xxxx"
}
Push
JSON push response
JSON
{
"Transaction": {
"Key": "5DABBCA4939A44CB8DD845E7944Axxxx",
"Invoice": "Testinvoice18xxxx",
"ServiceCode": "Capayable",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2018-01-16T10:22:52"
},
"IsTest": false,
"Order": null,
"Currency": "EUR",
"AmountCredit": 0.3,
"TransactionType": "V405",
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": [
{
"RelationType": "refund",
"RelatedTransactionKey": "1EC52112B19E4AF198E7C51D36C1xxxx"
}
],
"IsCancelable": false,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": null
}
}