Developer Portal & API Reference

Enterprise-grade interactive API documentation for ExcelToPain001. Review our endpoints via the modern 3-column reference below and complete your B2B integration processes in minutes.

Map Once, Automate Forever

Stop building custom parsers for every client. Our intelligent mapping engine handles the mess so you don't have to.

Step 1

Visual Mapping

Map messy columns in our dashboard once to get your profile_id.

Step 2

One-Shot POST

Just POST the raw file + ID. We handle all XML complexities and validations.

CLEANEST API ON THE MARKET

# Just two parameters. No complex JSON required.
curl -X POST -H "x-api-key: YOUR_API_KEY" \
     -F "file=@data.xlsx" \
     -F "profile_id=prof_8k2m9..." \
     https://www.exceltopain001.com/api/v1/convert
Compliance Ready

Built-in Nov 2026
Address Compliance

Don't rewrite your ERP logic. The SEPA November 2026 Structured Address Mandate is coming.

"Our API automatically detects, parses, and structures address fields to ensure your files are 100% compliant with the new banking regulations."

Future-proof your payments today.

API Documentation

Authentication

All API requests must include the x-api-key header.

Use TEST_KEY_123 to test in our sandbox environment.

Supported Banks

Universal SEPA (All 27+ EU Countries)

Default ISO-20022 PAIN.001.001.03 format guaranteed to work with any standard European bank.

Standard Compliant

Bank-Specific Rules & Quirks

We automatically handle character limits, encoding (ISO-8859-1), and required fields unique to these institutions:

  • Citibank
  • Deutsche Bank
  • HSBC
  • ING
  • BNP Paribas
  • Soc. Générale
  • Santander
  • BBVA
  • Sparkasse
  • Intesa Sanpaolo
  • UniCredit
  • Erste Bank

Endpoints

POST/api/v1/sepa/generate

Code Examples

curl -X POST https://www.exceltopain001.com/api/v1/sepa/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "bankType": "DEUTSCHE_BANK",
  "companyName": "Acme Corp",
  "transactions": [
    {
      "debtorIban": "DE12345678901234567890",
      "creditorName": "John Doe",
      "creditorIban": "DE98765432109876543210",
      "amount": 100.5,
      "currency": "EUR",
      "remittanceInfo": "Invoice #123"
    }
  ]
}'
import requests

url = "https://www.exceltopain001.com/api/v1/sepa/generate"
headers = {
    "Content-Type": "application/json",
    "x-api-key": "YOUR_API_KEY"
}
payload = {
  "bankType": "DEUTSCHE_BANK",
  "companyName": "Acme Corp",
  "transactions": [
    {
      "debtorIban": "DE12345678901234567890",
      "creditorName": "John Doe",
      "creditorIban": "DE98765432109876543210",
      "amount": 100.5,
      "currency": "EUR",
      "remittanceInfo": "Invoice #123"
    }
  ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
const axios = require('axios');

const url = 'https://www.exceltopain001.com/api/v1/sepa/generate';
const headers = { 'x-api-key': 'YOUR_API_KEY' };

const payload = {
  "bankType": "DEUTSCHE_BANK",
  "companyName": "Acme Corp",
  "transactions": [
    {
      "debtorIban": "DE12345678901234567890",
      "creditorName": "John Doe",
      "creditorIban": "DE98765432109876543210",
      "amount": 100.5,
      "currency": "EUR",
      "remittanceInfo": "Invoice #123"
    }
  ]
};

axios.post(url, payload, { headers })
  .then(res => console.log(res.data))
  .catch(err => console.error(err));

Responses & Error Codes

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>ABC-123456</MsgId>
      ...
    </GrpHdr>
  </CstmrCdtTrfInitn>
</Document>
{
  "status": "error",
  "message": "Missing mandatory field 'creditorIban' in row 2. Please map it.",
  "errors": ["Row 2: creditorIban: Required"]
}

Returned when the x-api-key is missing or invalid.

API Playground

Deutsche Bank (V09)