# Checkout.com

FinDock supports [Checkout.com](https://www.checkout.com/), an global provider of finance tools to businesses, from startups and name brands.

| [Multi-merchant](/docs/payment-processors/multi-merchant-accounts-for-psps) | [Multi-currency](/docs/payment-processors/multiple-currency-support-in-findock) |
|  --- | --- |
|  |  |


## Payment methods

You need to register separately with Checkout.com to be able to use iDEAL and Bancontact payment methods.

| Payment Method | Currency | One-time | Recurring | [Initial Recurring](/api/initial-payments-for-recurring-payments) | [Refunds](/docs/payment-processors/payment-methods/payment-methods-overview#refunds) |
|  --- | --- | --- | --- | --- | --- |
| [Bancontact](/docs/payment-processors/payment-methods/bancontact) | EUR |  |  |  |  |
| [Card](/docs/payment-processors/payment-methods/cards) | Multi |  |  | Required |  |
| [iDEAL - Wero](/docs/payment-processors/payment-methods/ideal) | EUR |  |  |  |  |


### Integration patterns

| Payment Method | [Online Flow](/docs/payments/accepting-payments-with-findock#online-payment-collection) | [API](/docs/payments/accepting-payments-with-findock#online-integration-patterns) | [MOTO](/docs/payments/accepting-payments-with-findock#accepting-payments-from-salesforce) | [Data Entry](/docs/payments/accepting-payments-with-findock#data-entry) | [Initiate Refund](/docs/payments/refunds-from-salesforce) |
|  --- | --- | --- | --- | --- | --- |
| [Bancontact](/docs/payment-processors/payment-methods/bancontact) | Redirect |  |  |  |  |
| [Card](/docs/payment-processors/payment-methods/cards) | Redirect |  |  |  |  |
| [iDEAL - Wero](/docs/payment-processors/payment-methods/ideal) | Redirect |  |  |  |  |


## Prerequisites

* FinDock is installed and configured.
* WebHub is connected.
* You have a Checkout.com merchant account.
* You have a registered [Hosted Payments Page](https://www.checkout.com/docs/payments/accept-payments/accept-a-payment-on-a-hosted-page/manage-your-hosted-payments-page)


## Install and activate Checkout.com extension

Follow the standard procedure for [installing](/docs/setup/install-findock) and [activating](/docs/setup/add-payment-extensions) the Checkout.com for FinDock payment extension.

Check and assign the [required permissions](/docs/setup/general-permission-guidance). If you are using custom permission set groups, ensure the [package-specific permission sets](/docs/setup/permission-set-groups#checkout-com-permission-sets) are assigned.

## Set up Checkout.com at The Hub

1. Sign up and log in to [The Hub](https://hub.checkout.com).
2. Under Settings, go to Channels and scroll down to Webhooks. Click **New Webhook**.
![Checkout.com Hub new webhook](/assets/checkout-com-hub-new-webhook.cd3c3835c92a59d4df7e4c2dd015f7c5c96628f30c5b144c3754ae20a57c8a91.f78e0b2f.png)
3. As Endpoint URL use your Notification URL from the Checkout.com for FinDock settings (see below).
4. Select API version 2.0.
5. Check the following event types:
  * Dispute canceled
  * Dispute won
  * Payment approved
  * Payment canceled
  * Payment capture declined
  * Payment captured
  * Payment chargeback
  * Payment declined
  * Payment expired
  * Payment pending
  * Payment refund declined
  * Payment refunded
6. Click **Create webhook**.
7. Under Channel settings, generate API keys as needed.
![Checkout.com API keys](/assets/checkout-com-hub-api-keys.3c9294a67f911dc2ac4635d6b7efbc6c59148db9904b764e36425816bfa7d8ec.f78e0b2f.png)
8. Scroll down and click **Save changes** when you are done.


The URLs under Channel settings are handled different depending on the payment method you use.

## Configure Checkout.com extension

To configure the Checkout.com payment extension:

1. Launch the FinDock app and click the **FinDock Setup** tab.
2. Click **Processors & Methods** in the left-hand menu.
3. On the **Installed** tab, click the Checkout.com processor entry.
4. Click the edit icon next to the Main account in the accounts table.
5. Fill in the target settings as described below.
  * **Notification URL**: this value is automatically filled by the Notification Gateway.
  * **Public key, Secret key (production)**: if you are setting up a production org, copy-paste your public and secret keys for production from your account in The Hub.
  * **Public key, Secret key (test)**: if you are setting up a sandbox org, copy-paste your public and secret keys for testing from your account in The Hub.
  * **Is Test**: enable if you are setting up a sandbox org
  * **Log Requests**: enable to log all API requests
6. Click **Save**.


## Refunds

The Checkout.com for FinDock extension supports full refunds of credit card payments. Refunds are initiated from your account at The Hub.

![Checkout.com Hub dashboard](/assets/checkout-com-hub-dashboard.ecddb2da54a8f85aa72ccef55c51078004146766bef9cd4542ada03b3a52aa1b.f78e0b2f.png)

Installments collected through [payment schedules](/docs/payments/creating-approval-processes-for-bulk-collection-runs) can be refunded based on the installment reference only.

## Payment method parameters

The Payment API [PaymentMethods](/api/payment-api-v2/payment-methods) endpoint returns payment method attributes, like does it support recurring payments, along with parameters that may be optional or required. The attributes and parameters are provided here for reference. The parameter descriptions here are in some cases extended beyond the API response to provide additional guidance.

Processor: `PaymentHub-Checkout.com`

**Bancontact**
Name: `Bancontact`
IsDefault: `true` | `false` (default processor for method; based on org config)
SupportsRecurring: `false`

```json
{
  "title": "Parameters",
  "type": "object",
  "required": [
    "holderName",
    "paymentCountry"
  ],
  "properties": {
    "description": {
      "type": "string",
      "description": "Explanation or purpose of the payment that payers see on their account transactions.",
      "example": "Thank you for your payment of invoice 123ABC457XYZ."
    },
    "holderName": {
      "type": "string",
      "description": "Name of the owner of the payer's bank account.",
      "example": "Test Payer"
    },
    "paymentCountry": {
      "type": "string",
      "description": "The two-letter country code (ISO 3166) in which the payment instrument is issued/operated.",
      "example": "BE"
    }
  }
}
```

**Card**
Name: `CreditCard`
IsDefault: `true` | `false` (default processor for method; based on org config)
SupportsRecurring: `true`
InitialPaymentOnRecurring: `required` ([read more](/api/initial-payments-for-recurring-payments))

```json
{
  "title": "Parameters",
  "type": "object",
  "required": "billingCountry",
  "properties": {
    "billingCountry": {
      "type": "string",
      "description": "Two-letter country code (ISO 3166) of the payer's address,",
      "example": "US"
    },
    "description": {
      "type": "string",
      "description": "Explanation or purpose of the payment that payers see on their account transactions.",
      "example": "Thank you for your payment of invoice 123ABC457XYZ."
    }
  }
}
```

**iDEAL - Wero**
Name: `Ideal`
IsDefault: `true` | `false` (default processor for method; based on org config)
SupportsRecurring: `false`

```json
{
  "title": "Parameters",
  "type": "object",
  "required": [
    "description",
    "issuer"
  ],
  "properties": {
    "description": {
      "type": "string",
      "description": "Explanation or purpose of the payment that payers see on their account transactions.",
      "example": "Thank you for your payment of invoice 123ABC457XYZ."
    },
    "issuer": {
      "type": "enum",
      "description": "Defines issuing bank. Use this parameter to skip the bank selection screen and send payers directly to their bank's authorization environment. Supported values: `abnamro`, `asnbank`,  `bunq`, `ing`, `knob`, `n26`, `nationale-nederlanden`, `rabobank`, `revolut`, `snsbank`, `snsregiobank`, `triodosbank`, `vanlanschot`, `yoursafe`."
    }
  }
}
```

## Payment API messages

To test your Checkout.com configuration, you can use the following API messages.

### One-time credit card payment

```json
{
    "SuccessURL": "https://www.example.com/success",
    "FailureURL": "https://www.example.com/error",
    "Payer": {
        "Contact": {
            "SalesforceFields": {
                "FirstName": "Test",
                "LastName": "Payer",
                "Email": "testpayer@findock.com"
            }
        }
    },
    "OneTime": {
        "Amount": "15"
    },
    "PaymentMethod": {
        "Name": "Creditcard",
        "Processor": "PaymentHub-Checkout.com",
        "Parameters": {
            "billingCountry" : "US"
        }
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}
```

### Recurring credit card payment

```json
{
    "SuccessURL": "https://www.example.com/success",
    "FailureURL": "https://www.example.com/error",
    "WebhookURL" : "https://webhook.site/365d03f8-977f-4fc3-9b01-256cf51e71bb",
    "Payer": {
        "Contact": {
            "SalesforceFields": {
                "FirstName": "Test",
                "LastName": "Payer",
                "Email": "testpayer@findock.com"

            }
        }
    },
    "OneTime" : {
        "Amount" : "0.01"
    },
    "Recurring": {
        "Amount": "40",
        "Frequency": "Monthly",
        "StartDate": "2027-01-01"
    },
    "PaymentMethod": {
        "Name": "Creditcard",
        "Processor": "PaymentHub-Checkout.com",
        "Parameters": {
            "billingCountry" : "US"
        }
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}
```