HomeGuidesRecipesAPI ExplorerForumSupport
Partner Portal
Partner Portal

SEPA Credit payments

Learn how to send and receive SEPA Credit transfers by using Monite payment rails.

Supported currencies: EUR, GBP
Available in: πŸ‡ͺπŸ‡Ί EU, πŸ‡¬πŸ‡§ UK
Supported payer countries: Belgium, Ireland, Italy, Netherlands, UK

Overview

SEPA Credit Transfer (SCT) is a payment method used for cross-border and domestic Euro payments within the Single Euro Payments Area (SEPA) region. Both the sender and the recipient can be companies or individuals.

Use cases

SEPA Credit is one of the payment methods available for Monite payment links. Entities can use payment links to both send and receive SEPA Credit payments.

Monite payment page with the SEPA Credit transfer option

Monite payment UI with the SEPA Credit transfer option

BillPay (pay payables)

  1. Entity receives a payable from its counterpart (vendor or supplier).
  2. The partner's application enables entity users to view the available payables, along with the "pay" option for unpaid payables.
  3. When an entity user chooses to pay a payable, the application generates a payment link ID for that payable and uses that ID to initialize the embedded Payment Web Component.
  4. The payment component displays the payment details (amount, recipient, due date, etc.) and the available payment methods.
  5. To pay via SEPA Credit, the entity user selects "Bank transfer" as the payment method and provides consent to withdraw the payment amount from the entity's bank account.
  6. Monite initiates the payment with the entity's bank.
  7. After the payment request is accepted by the entity's bank, the funds are transferred via SEPA Credit to the counterpart bank account specified in the payable.

Receive invoice payments from counterparts

  1. Entity uses the partner's application to issue an invoice to a counterpart (client).
  2. The application generates a payment link for this invoice. This payment link is automatically included in the invoice PDF and invoice email message sent to the counterpart. Entities can also share payment links with counterparts in any other way they prefer.
  3. Counterpart navigates to the payment link. The payment page displays the payment amount, invoice details, and the entity bank account details.
  4. To pay via SEPA Credit, the counterpart selects "Bank transfer" as the payment method and provides consent to withdraw the payment amount from their bank account.
  5. Monite initiates the payment with the counterpart's bank.
  6. After the payment request is accepted by the counterpart's bank, the funds are transferred via SEPA Credit to the entity bank account specified in the invoice.

Requirements

From an integration perspective, using SEPA Credit requires the following from Monite partners:

Additionally:

  • Both the sender and the recipient must be based in the EU or UK.
  • If the recipient is based in the EU:
    • Payment currency must be EUR. For example, in case of invoice payment scenarios, the invoice currency must be EUR.
    • The recipient's default bank account must be in a country in the SEPA zone. See Entity bank accounts and Counterpart bank accounts to learn how to specify bank account details.
  • If the recipient is based in the UK:
    • Payment currency must be GBP. For example, in case of invoice payment scenarios, the invoice currency must be GBP.
  • Recipient bank account must have the account holder name specified.

πŸ“˜

SEPA Credit does not require any additional entity onboarding besides the abovementioned requirements. However, if an entity also needs other payment methods, those payment methods may require additional onboarding. For more information about the onboarding process, see Onboarding via API.

Scenario: Accept a SEPA Credit payment

This guide assumes an entity and its bank account have already been created.

1. Enable the SEPA Credit payment method for the entity

To check if SEPA Credit is already enabled for the entity, call GET /entities/{entity_id}/payment_methods. If sepa_credit is not present in the list of payment methods, call PUT /entities/{entity_id}/payment_methods to add it. For more information, see Enabling payment methods for an entity.

The example below assumes that card is a pre-existing payment method enabled for the entity, and we're enabling the entity to both receive and send SEPA Credit payments.

curl -X PUT 'https://api.sandbox.monite.com/v1/entities/e4678...1f6/payment_methods' \
     -H 'X-Monite-Version: 2024-01-31' \
     -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' \
     -H 'Content-Type: application/json' \
     -d '{
       "payment_methods_receive": [
         "card",
         "sepa_credit"
       ],
       "payment_methods_send": [
         "sepa_credit"
       ]
     }'

2. Create a payment link

A payment link is a URL that leads to a secure payment page where the payer (in this example, a counterpart) can specify their payment details and initiate the payment.

To generate a payment link, call POST /payment_links. In the request body, specify the recipient of the payment (in this example, an entity), the payment_methods to be displayed on the payment page, and other details. The required request fields vary based on whether or not the invoice being paid is stored in Monite. For more information, see Create a payment link.

curl -X POST 'https://api.sandbox.monite.com/v1/payment_links' \
     -H 'X-Monite-Version: 2024-01-31' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' \
     -H 'Content-Type: application/json' \
     -d '{
       "object": {
         "type": "receivable",
         "id": "RECEIVABLE_INVOICE_ID"
       }
       "recipient": {
         "type": "entity",
         "id": "ENTITY_ID"
       },
       "payment_methods": [
         "card",
         "sepa_credit",
       ],
       "return_url": "https://example.com/return-url"
     }'
curl -X POST 'https://api.sandbox.monite.com/v1/payment_links' \
     -H 'X-Monite-Version: 2024-01-31' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' \
     -H 'Content-Type: application/json' \
     -d '{
       "recipient": {
         "type": "entity"
         "id": "ENTITY_ID",
       },
       "amount": 12500,
       "currency": "EUR",
       "payment_reference": "INV-00042",
       "invoice": {
         "issue_date": "2024-06-01",
         "due_date": "2024-06-30",
         "file": {
           "name": "invoice.pdf",
           "mimetype": "application/pdf",
           "url": "https://bucketname.s3.com/12345/invoice.pdf"
         }
       }
       "payment_methods": [
         "card",
         "sepa_credit"
       ],
       "return_url": "https://example.com/return-url",
     }'

A successful response returns a payment_page_url that can be shared with the payer.

{
  "id": "8babb691-3862-4676-97f4-d61b12284f25",
  ...
  "payment_intent": {
    "id": "e8dac9f8-e68c-4c8e-bcd3-b44cbb4f49d7",
    "updated_at": "2024-06-06T13:18:02.212807+00:00",
    "application_fee_amount": null,
    "object": null,
    "provider": null,
    "selected_payment_method": null,
    "status": "created"
  },
  "payment_intent_id": "e8dac9f8-e68c-4c8e-bcd3-b44cbb4f49d7",
  "payment_methods": [
    "card",
    "sepa_credit"
  ],
  "payment_page_url": "https://pay.sandbox.monite.com?data=eyJpZCI...",
  "payment_reference": "INV-00042",
  "recipient": {
    "id": "cd830c8d-df0f-4ebd-99b7-d290e3506004",
    "bank_accounts": [
      {
        "id": "dc1efc0a-aac1-43bd-878e-b17e4d4d3039",
        "account_holder_name": "Tobias Weingart",
        "bic": "DEUTDEFFXXX",
        "country": "DE",
        "currency": "EUR",
        "iban": "DE74500700100100000900",
        "is_default": true,
        ...
      }
    ],
    "name": "Acme GmbH",
    "type": "entity"
  },
  ...
  "status": "created"
}

A payment intent for tracking the payment is also automatically created and stored in the payment_intent field of the payment link. You can also access that payment intent directly by calling GET /payment_intents/{payment_intent_id}.

3. Share the payment link with the payer

After a payment link has been generated, the entity can share its URL (payment_page_url) with the payer (counterpart) using any way they prefer, for example, via email, via a website link or button, inside an app, or through other channels.

If the payment link was generated for an Accounts Receivable invoice created via Monite, the PDF invoice will include a QR code pointing to the payment link, and the invoice email notification will also include the payment link.

Payment QR code is included at the bottom of an invoice

Payment QR code is included at the bottom of an invoice

When the payer navigates to the payment link, they will see the payment page displaying information about the invoice and payment amount. The payer can select their preferred payment method and enter their payment information to initialize the payment.

4. Track the payment status

After the payer confirms the payment, the payment link status is changed to succeeded and the payment intent status is changed to processing. Monite triggers the following webhooks when the status of payment links and intents is changed:

  • payment_link.status_updated
  • payment_intent.status_updated

You can monitor the status of the payment intent to know when the payment has been settled or rejected. The ID of the payment intent is stored in the payment_intent_id field of the payment link and is also included in payment_intent.status_updated webhooks. For more information, see Track the payment intent.

Test SEPA Credit payments

The sandbox version of the payment page provides a list of sandbox banks that you can use to simulate user consent and test both successful and declined payments.

🚧

The test bank accounts and credentials work only in the Sandbox environment and cannot be used in the Production environment.

Belfius Bank Sandbox

  • Payer country: Belgium
  • Account holder name: any
  • IBAN: any Belgium IBAN, for example, BE68539007547034
  • No bank login required, the payment is immediately initiated after user confirmation.

Fineco Sandbox

  • Payer country: Italy or Ireland
  • Account holder name: any name
  • IBAN: should match the payer country. For example, you can use IT31X0301503200000003517230 for Italy or IE29AIBK93115212345678 for Ireland.
  • Bank username and password: any

The Fineco bank sandbox contains a page with two buttons. Click Accetta ("accept") to trigger successful payment, or Rifiuta ("refuse") to reject the payment.

Depending on the selected option, you will see either the "payment initiated" or "payment error" screen. The status of the payment link and payment intent will be changed accordingly.

KBC Belgium Sandbox

  • Payer country: Belgium
  • Account holder name: any
  • IBAN: any Belgium IBAN, for example, BE68539007547034
  • No username and password required for bank login
  • In the bank, click either Authorize or Reject depending on how you want to handle the payment.

SNS Bank Sandbox

  • Payer country: Netherlands
  • Selecting the SNS Bank immediately redirects to the bank sandbox, no login is required.
  • Click Geef toe stemming (Give permission) to accept the payment.