API Documentation

Integrate our extraction engine directly into your software. Automate bank statement parsing for your clients.

Authentication

All API requests require a Bearer token. You can generate an API key in your dashboard.

Authorization: Bearer YOUR_API_KEY

Rate Limits & Billing

  • Rate Limit: 60 requests per minute per IP/User. Exceeding this returns a 429 Too Many Requests.
  • Billing: API conversions use your account credits (1 credit per page). Deducted automatically.
  • Timeouts: Asynchronous processing is recommended for files over 5 pages. Synchronous requests timeout after 120 seconds.

1. Upload PDF (Asynchronous)

POST /api/v1/statements

Uploads a statement and queues it for processing. Returns a statement ID immediately which you can poll for status.

Request Body (multipart/form-data)

Parameter Type Description
file File Required. The PDF, JPG, or PNG to process (Max 10MB).

cURL Example

curl -X POST https://api.bankstatementconverter.com/api/v1/statements \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@/path/to/statement.pdf"

Response (201 Created)

{
  "success": true,
  "data": {
    "id": 142,
    "status": "pending",
    "filename": "statement.pdf",
    "poll_url": "https://api.bankstatementconverter.com/api/v1/statements/142"
  },
  "credits_used": 3,
  "credits_remaining": 997
}

2. Check Status & Get Results

GET /api/v1/statements/{id}

Check the processing status of a statement. Once status is "completed", the full transaction data is included.

Response (200 OK)

{
  "success": true,
  "data": {
    "id": 142,
    "status": "completed",
    "bank_name": "Chase Bank",
    "account_number": "****1234",
    "currency": "USD",
    "statement_period": {
      "start": "2026-01-01",
      "end": "2026-01-31"
    },
    "opening_balance": 5000.00,
    "closing_balance": 4250.75,
    "processing_time_ms": 3200,
    "transaction_count": 2,
    "transactions": [
      {
        "date": "2026-01-02",
        "description": "Amazon.com*ML5K",
        "amount": 49.99,
        "type": "debit",
        "balance": 4950.01
      },
      {
        "date": "2026-01-05",
        "description": "Salary Deposit",
        "amount": 3000.00,
        "type": "credit",
        "balance": 7950.01
      }
    ]
  }
}

Synchronous Extraction (Optional)

POST /api/v1/statements/extract

Uploads and processes the statement in a single blocking request. Ideal for small files. Warning: Connection will remain open until processing finishes. May timeout for files larger than 10 pages.

Takes the same file parameter as the async upload endpoint and returns the full completed JSON response directly.

Error Codes

HTTP Status Code Description
401 Unauthorized unauthorized Missing or invalid API key.
402 Payment Required insufficient_credits Not enough credits on the account to process the file.
404 Not Found not_found The statement ID does not exist or doesn't belong to your account.
422 Unprocessable validation_error Invalid file type or missing required parameters.
429 Too Many Requests rate_limit Exceeded 60 requests per minute.

Need help integrating? Contact our technical support.