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. All payments will be performed with iDEAL.

Capayable is 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:

  1. Pay
  2. PayInInstallments
  3. 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:

  1. 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.
  2. 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.
  3. 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.
View in playground

Request


JSON gateway request

Description
Required

Description of the order. Important note: This is a basic parameter.

ClientIP
Required

IP adres of the customer. Important note: This is a basic parameter.

CustomerType
Required

Three values possible: Debtor, SoleProprietor, Company.

InvoiceDate
Required

Date of the invoice

LastName
Required

GroupType: Person. Customers' last name.

Culture
Required

GroupType: Person. Customers' culture code (ISO). At this moment, only "nl-NL" is supported.

Initials
Required

GroupType: Person. Customers' intitials.

Gender
Required

GroupType: Person. Customers' gender. Possible values: 1, 2, 0, 9 (Male, female, unknown, not applicable. Default: 0).

BirthDate
Required

GroupType: Person. Customers' birth date.

Street
Required

GroupType: Address. Customers' Street.

HouseNumber
Required

GroupType: Address. Customers' housenumber

HouseNumberSuffix

GroupType: Address. Customers'' house number suffix

ZipCode
Required

GroupType: Address. Customers' zip code

City
Required

GroupType: Address. Customers' City

Country
Required

GroupType: Address. Customers' country

Phone
Required

GroupType: Phone. Customers' phonenumber

Email
Required

GroupType: Email. Customers' emailadress

Code
Required

GroupType: ProductLine. Identification code of the article, for instance an article number.

Name
Required

GroupType: ProductLine. Name of the article

Quantity
Required

GroupType: ProductLine. The ordered quantity of the article

Price
Required

GroupType: ProductLine. Price of the article

Fax

GroupType: Phone. Customers' fax number

Name

GroupType: Company. Company name. Required if CustomerType is "SoleProprietor" or "Company".

ChamberOfCommerce

GroupType: Company. Chamber of Commerce number. Required if CustomerType is "SoleProprietor" or "Company".

Name

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

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

copy
{
   "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


JSON gateway response

JSON

copy
{
   "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

copy
{
   "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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
View in playground

Request


JSON gateway request

This request uses the same parameters as the "Pay" request, with only the addition of 1 parameter: IsInThreeGuarantee.

IsInThreeGuarantee

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

copy
{
   "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


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

copy
{
   "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

copy
{
   "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.

View in playground

Request


JSON gateway request

For this request it is required to provide an AmountDebit and the transactionkey of the original order.

JSON

copy
{
   "Currency": "EUR",
   "AmountCredit": 0.3,
   "Invoice": "testinvoice 123",
   "OriginalTransactionKey": "1EC52112B19E4AF198E7C51D36C1xxxx",
   "Services": {
      "ServiceList": [
         {
            "Name": "Capayable",
            "Action": "Refund"
         }
      ]
   }
}

Response


JSON gateway request

JSON

copy
{
   "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

copy
{
   "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
   }
}