Giropay

Start accepting payments using Giropay, a favorite payment method in Germany.

Giropay provides a method to make purchases online through quick and easy bank transfers that are not only secure but guaranteed.

To start accepting Giropay payments, please contact your customer success manager.

Process a Giropay payment

Giropay payments follow a two-step process:

  1. Request a Giropay payment
  2. Redirect the customer

Step 1: Request a Giropay payment

The request

Use the details below to set up your request.

Endpoints

Live

https://api.checkout.com/payments

Sandbox

https://api.sandbox.checkout.com/payments

Header parameters

Header
Value

Authorization
Required

secret key

Use the valid secret key of your Checkout.com account. You can find this in the Hub.

Content-Type
Required

application/json

Body parameters

The table below describes the minimum recommended fields. You can find the full list, as well as complete request and response examples, in our API reference.

Field name
Description

source
Object
required

Details about the payment source.

source.type
String
required

The type of payment source. Set this to giropay.

source.bic
String
optional

The 8- or 11-character bank identifier code (BIC). If you want to test this in the sandbox environment, set the value to "TESTDETT421"
If you include this, your payment will follow an alternative flow.

source.purpose
String
required

A description of the payment.
Maximum characters: 27

amount
Integer
required

The payment amount.

currency
String
required

The three-letter ISO currency code. Set this to EUR.

success_url
String
Optional

For redirect payment methods, overrides the default success redirect URL configured on your account.

failure_url
String
Optional

For redirect payment methods, overrides the default failure redirect URL configured on your account.

Request example

{
  "source": {
    "type": "giropay",
    "purpose":"Mens black t-shirt L"
  },  
 "amount": 1914,
 "currency": "EUR",
 "success_url": "http://example.com/payments/success",
 "failure_url": "http://example.com/payments/fail"
}

If a customer ID or email is not provided in the request, then we automatically create a customer profile and return the customer id in the response.

The response

If you receive a 202 Success response containing a status field set to Pending, then your request was successful.

Response example

{
  "id": "pay_d3ohhwwu3qderfjlzitknc26sq",
  "status": "Pending",
  "customer": {
    "id": "cus_hfgq4ctsnr6e3cfhq5ctwb5gtu"
  },
  "_links": {
    "self": {
      "href": "https://api.sandbox.checkout.com/payments/pay_d3ohhwwu3qderfjlzitknc26sq"
    },
    "redirect": {
      "href": "https://ftg-customer-integration.giropay.de/ftgbank/b/bankselection/219499703994809788;jsessionid=8ECFE1809F9BAB6635EC9D37D98A1CAE.sf-testapp01tom21?op=001"
    }
  }
}

Step 2: Redirect the customer

Redirect your customer to the redirect link’s href in the response. This will send them to a Giropay bank selection page where they will select their bank before being transferred to that bank's page to enter their authorization details. If successful, the payment can be approved.

Once they've completed this step, the customer is transferred to your predefined success or failure URL. Confirmation of a Giropay payment is communicated only through webhooks. When you receive a payment_captured webhook notification, the transaction has been completed successfully. Until the payment_captured webhook is received (response code 10000), all payments are labeled as Pending.

Alternative flow: Including the BIC

If you include the BIC in your request, the payment will follow a slightly different flow.

Response example

If your request is successful, you'll receive a response like the following (note the different redirect URL):

{
  "id": "pay_iilqeu2rsdqedkvkjhl2rxgbvy",
  "status": "Pending",
  "customer": {
    "id": "cus_xtmverdclvfuhjuqjwduqeuqnu",
  },
  "_links": {
    "redirect": {
      "href": "https://ftg-customer-integration.giropay.de/ftg/b/go/07i2i1k00pp1tkapcdoy3bo3;jsessionid=3EEF88674DADC7A4FC117BB39E770269.sf-testapp02tom23"
    },
    "self": {
      "href": "http://api.checkout.com/payments/pay_iilqeu2rsdqedkvkjhl2rxgbvy"
    }
  }
}

Redirect the customer

Unlike the standard payment flow detailed above, the redirect link’s href will send your customer directly to their bank's website where they need to enter their authorization details. If successful, the payment can be approved.

After that, the flow is the same: the customer will be sent to your predefined success or failure URL, and you can get confirmation of the payment via webhooks.

Get details about a Giropay payment

You can retrieve details about an existing Giropay payment.

The request

Use the details below to set up your request.

Endpoint

Live

GEThttps://api.checkout.com/payments/{payment_id}

Sandbox

GEThttps://api.sandbox.checkout.com/payments/{payment_id}

Header and path parameters

Header
Value

Authorization
Required

secret key

Use the valid secret key of your Checkout.com account. You can find this in the Hub.

Content-Type
Required

application/json

Path
Value

payment_id
Required

The payment ID found in the response of the initial payment.

The response

Response example

{
  "id": "pay_iilqeu2rsdqedkvkjhl2rxgbvy",
  "created_on": "2018-03-28T14:50:26Z",
  "source": {
    "type": "giropay",
    "purpose": "Set of three masks",
    "bic": "TESTDETT421",
    "iban": "DE46940594210000012345",
    "account_holder": "Test GmbH & Co. KG"
  },
  "amount": 1914,
  "currency": "EUR",
  "payment_type": "Regular",
  "status": "Captured",
  "flagged": false,
  "_links": {
    "self": {
      "href": "http://api.checkout.com/gateway/payments/pay_iilqeu2rsdqedkvkjhl2rxgbvy"
    }
  }
}

Refund a Giropay payment

Giropay supports both partial and full refunds. You can refund a payment through the Hub or using the refund API.

Cancel a Giropay payment

If the customer fails to complete their payment, we will automatically void the payment and send a payment_expired webhook.
If the customer cancels their payment, we will send payment_canceled webhook.

Get a list of supported banks

You can use this request to get an up-to-date list of all banks supporting Giropay payments.

The request

Use the details below to set up your request.

Endpoints

Live

GEThttps://api.checkout.com/giropay/banks

Sandbox

GEThttps://api.sandbox.checkout.com/giropay/banks

Header parameters

Header
Value

Authorization
Required

public key

Use the valid public key of your Checkout.com account. You can find this in the Hub.

The response

Response example

{
  "_links": {
    "self": {
      "href": "https://api.checkout.com/giropay/banks"
    }
  },
  "banks": {
    "BELADEBEXXX": "Landesbank Berlin - Berliner Sparkasse",
    "BEVODEBBXXX": "Berliner Volksbank",
    "GENODEF1P01": "PSD Bank Berlin-Brandenburg",
    "WELADED1WBB": "Weberbank",
    "BYLADEM1001": "Deutsche Kreditbank Berlin"
  }
}

Testing Giropay

Before testing, please ensure that your account has been enabled to support Giropay payments. Contact your customer success manager for more information.

  1. Create a Giropay transaction as above, following the redirect link in the response to Giropay's bank selection page. (If you include the BIC in your request, you will go straight to the bank's page.)

  2. Select the bank:
      -   BIC: TESTDETT421
      -   Name: giropay Testinstitut

  3. Confirm your selection and await redirection to the bank's page.

  4. Log in with the following details:
      -   Anmeldename oder Legitimations-ID: sepatest1
      -   PIN: 12345

  5. Click "Sicher anmelden" to continue.

  6. Scroll to the end of the next page and click "Weiter" to continue.

  7. Scroll to the end of the next page, enter "123456" in the TAN field and click "Jetzt bezahlen" to continue.

  8. You should then be redirected to your predefined success URL.

Can we help?

Thanks for using Checkout.com. If you need any help or support, then message our support team at support@checkout.com.

Giropay


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.