Create an e-mandate

Creating an e-mandate registers your customer's details and returns the link where they verify their account and sign. The e-mandate starts in draft and becomes active once signed.

1. Send the request

Call POST /v1/e-mandates with an E-Mandate access token.

curl -X POST "https://api.sandbox.fintecture.com/v1/e-mandates?redirect_uri=https://www.my-shop.com/mandate/return&state=order-1234" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "meta": {
      "authentication_methods": ["bank_account", "bank_transfer"],
      "send_invitation_email": false
    },
    "data": {
      "type": "e-mandates",
      "attributes": {
        "creditor_identifier": "FR38ZZZ882BC6",
        "debtor": {
          "name": "Jon Doe",
          "first_name": "Jon",
          "last_name": "Doe",
          "email": "[email protected]",
          "address": {
            "number": "12",
            "street": "rue de la Paix",
            "zip": "75002",
            "city": "Paris",
            "country": "FR"
          }
        }
      }
    }
  }'
const params = new URLSearchParams({
  redirect_uri: 'https://www.my-shop.com/mandate/return',
  state: 'order-1234',
});

const response = await fetch(`https://api.sandbox.fintecture.com/v1/e-mandates?${params}`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${accessToken}`,
    'Content-Type': 'application/json',
    Accept: 'application/json',
  },
  body: JSON.stringify({
    meta: { authentication_methods: ['bank_account', 'bank_transfer'], send_invitation_email: false },
    data: {
      type: 'e-mandates',
      attributes: {
        creditor_identifier: 'FR38ZZZ882BC6',
        debtor: {
          name: 'Jon Doe',
          first_name: 'Jon',
          last_name: 'Doe',
          email: '[email protected]',
          address: { number: '12', street: 'rue de la Paix', zip: '75002', city: 'Paris', country: 'FR' },
        },
      },
    },
  }),
});

const { data } = await response.json();
const signingUrl = data.links.next;

Query parameters

ParameterRequiredDescription
redirect_uriNoWhere the customer is sent once the e-mandate is signed. Without it, the customer stays on a Fintecture confirmation page.
stateNoYour own reference, up to 36 characters, returned on the redirect and in webhooks.
with_beneficiaryNotrue to include your beneficiary details in the response.

Body

AttributeRequiredDescription
meta.authentication_methodsNoVerification methods offered to the customer, in order of preference: bank_account (bank connection) and/or bank_transfer. The first one is shown first; the others are offered as fallbacks. A single value removes the fallback. Default: ["bank_account", "bank_transfer"].
meta.send_invitation_emailNotrue to have Fintecture email the signing link to the customer. Default: false, in which case you send the customer to links.next yourself.
data.typeNoe-mandates
data.attributes.creditor_identifierYesYour SEPA creditor identifier (ICS), up to 35 characters.
data.attributes.rumNoUnique mandate reference (RUM), 1 to 35 characters. It must be unique among your e-mandates. If omitted, Fintecture generates one (FTE followed by 32 characters).
data.attributes.currencyNoEUR, the only accepted value.
data.attributes.debtor.nameYesCustomer's full name, 1 to 70 characters. Printed on the mandate.
data.attributes.debtor.emailYesCustomer's email. Fintecture sends the signed mandate PDF to it.
data.attributes.debtor.addressYesCustomer's postal address, see below.
data.attributes.debtor.first_nameNoCustomer's first name.
data.attributes.debtor.last_nameNoCustomer's last name.
data.attributes.debtor.phone_prefixNoInternational dialling prefix, for example +33.
data.attributes.debtor.phoneNoPhone number without the prefix.
data.attributes.debtor.company_nameNoFor a business customer. When set, incorporation is required.
data.attributes.debtor.incorporationIf company_nameCompany registration, see below.

debtor.address

AttributeRequiredDescription
numberNoStreet number, up to 10 characters.
streetYesStreet name, up to 60 characters.
zipYesPostal code, up to 15 characters.
cityYesCity, up to 50 characters.
countryYesISO 3166-1 alpha-2 country code, for example FR.

debtor.incorporation

AttributeRequiredDescription
registryYesSIREN (9 digits), SIRET (14 digits), VAT (2-letter country code followed by 2 to 13 characters), HRB or CREF.
idYesRegistration number for that registry, 7 to 15 characters. Spaces are removed.
countryYesISO 3166-1 alpha-2 country code of the registry.
📘

The customer's IBAN comes from the verification

You don't send the account to debit. The customer selects it during verification, and it appears in debtor.iban once the e-mandate is signed.

2. Read the response

A 201 Created returns the e-mandate in draft:

{
  "data": {
    "type": "e-mandates",
    "id": "9e2c7e69-732d-4adf-bede-f4ad15d9e8a3",
    "attributes": {
      "status": "draft",
      "flow_step": "bank_account_verification",
      "rum": "FTEa3f69fe87aa34b57b0b1274de55947f1",
      "creditor_identifier": "FR38ZZZ882BC6",
      "scheme": "core",
      "currency": "EUR",
      "created_at": "2026-10-27T15:20:11.000Z",
      "debtor": {
        "name": "Jon Doe",
        "email": "[email protected]",
        "address": { "number": "12", "street": "rue de la Paix", "zip": "75002", "city": "Paris", "country": "FR" }
      }
    },
    "links": {
      "next": "https://api.sandbox.fintecture.com/v1/kyu/redirect?state=emandates:9e2c7e69-732d-4adf-bede-f4ad15d9e8a3:emandate"
    }
  }
}

Store data.id: it is the emandate_id you use for every later call.

3. Send the customer to sign

Redirect the customer to data.links.next, or set meta.send_invitation_email to true to let Fintecture email it. The link takes them through verification and signature, as shown in Integrate e-mandates.

Once signed, the customer is redirected to your redirect_uri with three query parameters:

https://www.my-shop.com/mandate/return?emandate_id=9e2c7e69-732d-4adf-bede-f4ad15d9e8a3&status=active&state=order-1234
❗️

Don't rely on the redirect alone

The customer may close the browser before the redirect. Confirm the status with the emandates.status.active webhook or by reading the e-mandate.

Errors

StatusCauseFix
400A required field is missing, a value is too long or badly formatted, or an unknown field was sent.The error details name the field.
401Missing or expired access token, or an invalid signature in production.Request a new token; check the HTTP Signature.
403The application does not have the e-mandates scope.Check your application in the Console, or contact support.
404 BENEFICIARY_NOT_FOUNDYour application has no beneficiary.Add a beneficiary to the application in the Console.
409 CONFLICTAn e-mandate with this rum already exists.Use a new rum, or omit it to let Fintecture generate one.

Did this page help you?