Docs

REST API

Payers

POST/api/payers

Sign up a payer. Every field is validated and normalized; nothing is repaired silently. The account opens as pending_verification and can sign nothing until activated.

Request

JSON
{
  "legalName": "Merchant B.V.",
  "accountType": "business",
  "registrationNumber": "87654321",
  "vatNumber": "NL123456789B01",
  "contactFirstName": "Eva",
  "contactLastName": "Jansen",
  "email": "[email protected]",
  "phone": "+31612345678",
  "fundingSources": [
    {
      "type": "sepa",
      "destination": "NL91ABNA0417164300"
    }
  ]
}

Response 200

JSON
{
  "ok": true,
  "data": {
    "payerId": "95df7fad-016c-4406-bd04-8ff13ac121ee",
    "accountType": "business",
    "legalName": "Merchant B.V.",
    "registrationNumber": "87654321",
    "vatNumber": "NL123456789B01",
    "contactFirstName": "Eva",
    "contactLastName": "Jansen",
    "email": "[email protected]",
    "phone": "+31612345678",
    "fundingSources": [
      {
        "type": "sepa",
        "label": "Bank account 4300",
        "identifier": "NL91ABNA0417164300",
        "holderName": "Merchant B.V.",
        "isDefault": true,
        "verified": false,
        "sourceId": "70f228c6-a6d5-4057-b2b5-46c4f57525b2",
        "createdAt": "2026-09-23T18:42:40.612Z"
      }
    ],
    "status": "pending_verification",
    "history": [
      {
        "status": "pending_verification",
        "timestamp": "2026-09-23T18:42:40.612Z",
        "note": "Account created, awaiting verification."
      }
    ],
    "createdAt": "2026-09-23T18:42:40.612Z",
    "updatedAt": "2026-09-23T18:42:40.612Z"
  }
}

POST/api/payers/{id}/activate

Record the verification decision. A person's name goes in verifiedBy.

Request

JSON
{
  "verifiedBy": "Compliance Officer",
  "note": "KYB documents checked"
}

Response 200

JSON
{
  "ok": true,
  "data": {
    "payerId": "95df7fad-016c-4406-bd04-8ff13ac121ee",
    "accountType": "business",
    "legalName": "Merchant B.V.",
    "registrationNumber": "87654321",
    "vatNumber": "NL123456789B01",
    "contactFirstName": "Eva",
    "contactLastName": "Jansen",
    "email": "[email protected]",
    "phone": "+31612345678",
    "fundingSources": [
      {
        "type": "sepa",
        "label": "Bank account 4300",
        "identifier": "NL91ABNA0417164300",
        "holderName": "Merchant B.V.",
        "isDefault": true,
        "verified": false,
        "sourceId": "70f228c6-a6d5-4057-b2b5-46c4f57525b2",
        "createdAt": "2026-09-23T18:42:40.612Z"
      },
      {
        "type": "sepa",
        "label": "Bank account 3000",
        "identifier": "DE89370400440532013000",
        "holderName": "Merchant B.V.",
        "isDefault": false,
        "verified": false,
        "sourceId": "948857c9-e456-491f-8ef4-596e7208d0a5",
        "createdAt": "2026-09-23T18:42:40.615Z"
      }
    ],
    "status": "active",
    "history": [
      {
        "status": "pending_verification",
        "timestamp": "2026-09-23T18:42:40.612Z",
        "note": "Account created, awaiting verification."
      },
      {
        "status": "active",
        "timestamp": "2026-09-23T18:42:40.616Z",
        "note": "KYB documents checked"
      }
    ],
    "createdAt": "2026-09-23T18:42:40.612Z",
    "updatedAt": "2026-09-23T18:42:40.616Z"
  }
}

POST/api/payers/{id}/funding-sources

Add an account the payer can be debited from.

Request

JSON
{
  "type": "sepa",
  "destination": "DE89370400440532013000"
}

Response 200

JSON
{
  "ok": true,
  "data": {
    "payerId": "95df7fad-016c-4406-bd04-8ff13ac121ee",
    "accountType": "business",
    "legalName": "Merchant B.V.",
    "registrationNumber": "87654321",
    "vatNumber": "NL123456789B01",
    "contactFirstName": "Eva",
    "contactLastName": "Jansen",
    "email": "[email protected]",
    "phone": "+31612345678",
    "fundingSources": [
      {
        "type": "sepa",
        "label": "Bank account 4300",
        "identifier": "NL91ABNA0417164300",
        "holderName": "Merchant B.V.",
        "isDefault": true,
        "verified": false,
        "sourceId": "70f228c6-a6d5-4057-b2b5-46c4f57525b2",
        "createdAt": "2026-09-23T18:42:40.612Z"
      },
      {
        "type": "sepa",
        "label": "Bank account 3000",
        "identifier": "DE89370400440532013000",
        "holderName": "Merchant B.V.",
        "isDefault": false,
        "verified": false,
        "sourceId": "948857c9-e456-491f-8ef4-596e7208d0a5",
        "createdAt": "2026-09-23T18:42:40.615Z"
      }
    ],
    "status": "pending_verification",
    "history": [
      {
        "status": "pending_verification",
        "timestamp": "2026-09-23T18:42:40.612Z",
        "note": "Account created, awaiting verification."
      }
    ],
    "createdAt": "2026-09-23T18:42:40.612Z",
    "updatedAt": "2026-09-23T18:42:40.615Z"
  }
}

POST/api/payers/{id}/suspend

Suspend a payer: no new mandates. Existing mandates stay until revoked.

Request

JSON
{
  "reason": "Chargeback investigation"
}

Response 200

JSON
{
  "ok": true,
  "data": {
    "payerId": "95df7fad-016c-4406-bd04-8ff13ac121ee",
    "accountType": "business",
    "legalName": "Merchant B.V.",
    "registrationNumber": "87654321",
    "vatNumber": "NL123456789B01",
    "contactFirstName": "Eva",
    "contactLastName": "Jansen",
    "email": "[email protected]",
    "phone": "+31612345678",
    "fundingSources": [
      {
        "type": "sepa",
        "label": "Bank account 4300",
        "identifier": "NL91ABNA0417164300",
        "holderName": "Merchant B.V.",
        "isDefault": true,
        "verified": false,
        "sourceId": "70f228c6-a6d5-4057-b2b5-46c4f57525b2",
        "createdAt": "2026-09-23T18:42:40.612Z"
      },
      {
        "type": "sepa",
        "label": "Bank account 3000",
        "identifier": "DE89370400440532013000",
        "holderName": "Merchant B.V.",
        "isDefault": false,
        "verified": false,
        "sourceId": "948857c9-e456-491f-8ef4-596e7208d0a5",
        "createdAt": "2026-09-23T18:42:40.615Z"
      }
    ],
    "status": "suspended",
    "history": [
      {
        "status": "pending_verification",
        "timestamp": "2026-09-23T18:42:40.612Z",
        "note": "Account created, awaiting verification."
      }
    ],
    "createdAt": "2026-09-23T18:42:40.612Z",
    "updatedAt": "2026-09-23T18:42:40.861Z"
  }
}

GET/api/payers/{id}

Read a payer. Same shape as the signup response.

GET/api/payers

List payers.

Response 200

JSON
{
  "ok": true,
  "data": {
    "payers": [
      {
        "payerId": "95df7fad-016c-4406-bd04-8ff13ac121ee",
        "accountType": "business",
        "legalName": "Merchant B.V.",
        "registrationNumber": "87654321",
        "vatNumber": "NL123456789B01",
        "contactFirstName": "Eva",
        "contactLastName": "Jansen",
        "email": "[email protected]",
        "phone": "+31612345678",
        "fundingSources": [
          {
            "type": "sepa",
            "label": "Bank account 4300",
            "identifier": "NL91ABNA0417164300",
            "holderName": "Merchant B.V.",
            "isDefault": true,
            "verified": false,
            "sourceId": "70f228c6-a6d5-4057-b2b5-46c4f57525b2",
            "createdAt": "2026-09-23T18:42:40.612Z"
          },
          {
            "type": "sepa",
            "label": "Bank account 3000",
            "identifier": "DE89370400440532013000",
            "holderName": "Merchant B.V.",
            "isDefault": false,
            "verified": false,
            "sourceId": "948857c9-e456-491f-8ef4-596e7208d0a5",
            "createdAt": "2026-09-23T18:42:40.615Z"
          }
        ],
        "status": "active",
        "history": [
          {
            "status": "pending_verification",
            "timestamp": "2026-09-23T18:42:40.612Z",
            "note": "Account created, awaiting verification."
          },
          {
            "status": "active",
            "timestamp": "2026-09-23T18:42:40.616Z",
            "note": "KYB documents checked"
          }
        ],
        "createdAt": "2026-09-23T18:42:40.612Z",
        "updatedAt": "2026-09-23T18:42:40.616Z"
      }
    ]
  }
}