Bank Statement Conversion API
Lägg till konvertering med ett tydligt flöde för uppladdning, status och nedladdning.
Översikt
Bank Statement Conversion API är för utvecklare som vill lägga till konvertering i sin egen app. Den beskriver det publika flödet: kontrollera kontokapacitet vid behov, ladda upp filer, fråga efter jobbstatus och ladda ner färdiga resultat med den returnerade tokenen.
Den här referensen är avsiktligt begränsad till det publika konverteringsflödet.
https://bank-statement-conversion.com/apiSnabbstart
Skapa en API-token
Skapa en token i instrumentpanelen och skicka den som Authorization: Bearer YOUR_API_TOKEN.
Ladda upp en fil
POSTa till /api/upload med statement[], format och valfria inställningar.
Fråga jobbstatus
Använd returnerat jobId med /api/conversion-status/{jobId} tills en preview innehåller download_token.
Ladda ner resultat
GET /api/download/{downloadToken} och spara det binära svaret som den konverterade filen.
Autentisering
Autentisering med API-token
Alla API-anrop måste innehålla en API-token för autentisering. Tokens kan skapas i kontots instrumentpanel under API Tokens.
Så skapar du en API-token
- Logga in på ditt konto
- Gå till API Tokens i instrumentpanelen
- Klicka på "Create New Token" och ange ett namn
- Kopiera och spara tokenen säkert. Den visas bara en gång.
Använda din API-token
Inkludera API-tokenen i Authorization-headern:
Authorization: Bearer YOUR_API_TOKENAI-agenter
Använd API:t med AI-agenter
AI-verktyg kan integrera med samma offentliga konverteringsflöde som utvecklare. Använd OpenAPI-schemat, LLM-discoveryfiler eller MCP-slutpunkten så att agenter vet vilka konverteringsslutpunkter de ska anropa och vilka åtgärder som kräver bekräftelse.
Agent-discovery
/api/openapi.json/llms.txt/llms-full.txt/mcp/bank-statement-conversion- Använd
/api/openapi.jsonför schema-aware verktyg som ChatGPT Actions eller egna agentbyggare. - Använd
/llms.txtoch/llms-full.txtför att ge agenter kanonisk produkt- och API-kontext. - Använd
/mcp/bank-statement-conversionför MCP-kompatibla agentklienter som stödjer fjärr-MCP-servrar.
Engångsinställning av token
- Logga in en gång och skapa en API-token i dashboarden.
- Behåll alla konverteringsbehörigheter aktiverade om du inte vill ha en begränsad token.
- Sätt token som BSC_API_TOKEN i MCP-klientens miljö.
- Återkalla token från dashboarden när agentåtkomst ska stoppas.
Anslut Codex, Claude, Cursor och andra AI-klienter
Alla MCP-kompatibla AI-klienter använder samma fjärrendpoint och bearer-token. Förvara token i en miljövariabel, inte i prompts eller källkod.
https://bank-statement-conversion.com/mcp/bank-statement-conversionAuthorization: Bearer YOUR_API_TOKENCodex-installation
Lägg till denna serverpost i din Codex-konfiguration.
[mcp_servers.bank_statement_conversion]
url = "https://bank-statement-conversion.com/mcp/bank-statement-conversion"
bearer_token_env_var = "BSC_API_TOKEN"Sätt token i shell eller systemmiljö och starta sedan om AI-klienten.
export BSC_API_TOKEN="YOUR_API_TOKEN_HERE"Andra AI-klienter
- Claude, Cursor och andra MCP-klienter bör använda samma endpoint-URL och Authorization bearer-token.
- ChatGPT Actions och egna agentbyggare bör använda /api/openapi.json i stället för MCP när de behöver ett OpenAPI-schema.
- Använd /llms.txt och /llms-full.txt som produktkontext för agenter som stödjer kunskapsfiler.
Token-behörigheter med scope
Workflow-endpoints
Detta är de enda endpoints som behövs för att lägga till dokumentkonvertering i din applikation.
| Endpoint | Metod | Beskrivning |
|---|---|---|
/api/user-status | GET | Valfri förhandskontroll av krediter, sidkvot och abonnemangsplan |
/api/upload | POST | Ladda upp bankutdrag för konvertering |
/api/conversion-status/{jobId} | GET | Kontrollera status för ett konverteringsjobb |
/api/download/{downloadToken} | GET | Ladda ner en färdig konvertering med tokenen från statussvaret |
Kontostatus-endpoint
GET /api/user-status
Använd denna valfria endpoint före uppladdning när appen behöver bekräfta att API-tokenen har krediter, sidkvot eller betald åtkomst.
Användbara svarsfält
| Fält | Typ | Beskrivning |
|---|---|---|
remaining_credits | integer | Tillgängliga krediter för kreditbaserade konverteringar. |
remaining_daily_pages | integer | Återstående daglig sidkvot för den autentiserade användaren. |
remaining_premium_pages | integer | Återstående månatlig premiumsidkvot för aktiv plan. |
plan_type | string | Effektiv abonnemangsplan för API-tokenen. |
Exempelsvar
{
"success": true,
"remaining_credits": 42,
"remaining_daily_pages": 100,
"remaining_premium_pages": 950,
"plan_type": "premium"
}Uppladdnings-endpoint
POST /api/upload
Med denna endpoint laddar du upp bankutdrag för konvertering. Processen är asynkron och du får ett jobb-ID för att kontrollera status senare.
Inmatningsformat som stöds
| Användning | Format | Filändelser | Anteckningar |
|---|---|---|---|
| Standardkonverteringar | PDF, JPG/JPEG, PNG, TIFF/TIF, CSV, XLS/XLSX, OFX, QBO, QFX, 940, STA, MT940, MT940X, XML, CAMT.053 | .pdf, .jpg, .jpeg, .png, .tiff, .tif, .csv, .xls, .xlsx, .ofx, .qbo, .qfx, .940, .sta, .mt940, .mt940x, .xml, .camt053 | Använd för bankutdrag, fakturor och kvitton. |
| CSV-rensning | CSV, XLS, XLSX | .csv, .xls, .xlsx | Använd endast när format är csv_clean. |
| Generering av betalningsfiler | CSV, XLS, XLSX | .csv, .xls, .xlsx | Använd för CSV- eller Excel-betalningsrader som genererar bankklara ACH/NACHA-, CPA005-, SEPA XML-, BACS-, ABA- eller NZ-betalningsfiler. |
Utmatningsformat som stöds
document_type | Dokument | Tillåtna format-värden |
|---|---|---|
bank_statement | Bankutdrag | csvexceljsonqb_onlineqb_desktopxeroofxofx_legacyqfxmt940mt940_moneybirdcamt053camt053_legacycamt053_moneybirdcamt053_netsuitecamt053_sap_v2camt053_sap_v8camt053_business_centralcamt053_datevcamt053_afascamt053_twinfieldtally_xmlbai2bai2_netsuitebai2_sapbai2_bank_xsagesage_cloudsage_intacctmyobdatevdatev_accountingcsv_clean |
invoice | Faktura | csvexceljsonqb_onlineqb_desktopubl_xmlubl_peppolxrechnung_ublzugferd_pdffactur_x_pdf |
receipt | Kvitto | csvexceljson |
payment_file | Bankbetalningsfil | payment_nachapayment_cpa005payment_sepa_pain001payment_bacspayment_abapayment_nz |
Använd document_type=payment_file med payment_nacha, payment_cpa005, payment_sepa_pain001, payment_bacs, payment_aba eller payment_nz. Ladda upp CSV, XLS eller XLSX som statement[]; genereringen använder befintligt flöde för credits, history och download-token.
Öppna betalningsfilgeneratornUse document_type=positive_pay_file with format=positive_pay. Upload CSV, XLS, or XLSX check rows as statement[] and pass positive_pay_settings for Chase, TD, generic CSV, or fixed-width profiles.
Open Positive Pay file generatorAnropsparametrar
| Parameter | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
format | string | Ja | Utmatningsformat. Använd ett av tillåtna format-värden ovan för valt document_type. |
document_type | string | Nej | Dokumentkategori: bank_statement, invoice, receipt eller payment_file. Standard: bank_statement. |
statement | file array | Ja | Filer att konvertera. Skicka en eller flera filer som statement[]. |
conversion_mode | string | Nej | Konverteringsläge: precision eller fast. Standard är precision. |
separate_debit_credit | boolean | Nej | Om debet- och kreditkolumner ska separeras. Standard: false. |
combine_files | boolean | Nej | Om flera filer ska kombineras till ett resultat. Standard: false. |
Exempelsvar
{
"stage": "pending",
"jobId": "5f3a7d8c-8a91-4a2e-9d3b-4c84f0636c12"
}Status-endpoint
GET /api/conversion-status/{jobId}
Med denna endpoint kontrollerar du status för ett konverteringsjobb. Fråga tills jobbet är klart.
Sökvägsparametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
jobId | string | Jobb-ID:t som returneras från uppladdnings-endpointen |
Exempel på väntande svar
{
"stage": "processing",
"success": false,
"previews": []
}Exempel på slutfört svar
{
"success": true,
"previews": [
{
"file_name": "bank_statement.pdf",
"format": "CSV",
"download_token": "Y8Jm7qVf9sR2kP6nL4xA0bT3cD5eF1gH",
"partial_conversion": false,
"credits_used": 1
}
],
"failed_files": [],
"remaining_credits": 41,
"remaining_premium_pages": 949,
"remaining_daily_pages": 99
}Exempel på misslyckat svar
{
"stage": "complete",
"success": false,
"error": "An error occurred during the conversion process.",
"message": "The uploaded file could not be processed.",
"previews": []
}Nedladdnings-endpoint
GET /api/download/{downloadToken}
Använd download_token från ett slutfört statussvar. Skapa inte nedladdningstokens själv.
Sökvägsparametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
downloadToken | string | download_token som returneras för en konverterad fil i statussvaret. |
Exempelanrop
curl -L \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-o converted_statement.csv \
"https://bank-statement-conversion.com/api/download/Y8Jm7qVf9sR2kP6nL4xA0bT3cD5eF1gH"Exempelsvar
200 OKExempel på svarshuvuden
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Disposition: attachment; filename="bank-statement.csv"
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
}Felhantering
API:t använder standardiserade HTTP-statuskoder för att visa om anrop lyckas eller misslyckas.
| Statuskod | Beskrivning |
|---|---|
| 200 OK | Anropet lyckades |
| 400 Bad Request | Anropet var ogiltigt eller saknade obligatoriska parametrar |
| 401 Unauthorized | Autentisering misslyckades eller tokenen är ogiltig |
| 403 Forbidden | Den autentiserade användaren har inte behörighet till resursen |
| 422 Unprocessable Entity | Valideringsfel inträffade |
| 500 Internal Server Error | Ett serverfel inträffade |
Exempel på felsvar
{
"message": "Unauthenticated."
}{
"message": "The given data was invalid.",
"errors": {
"statement": [
"The statement field is required."
],
"format": [
"The selected format is invalid."
]
}
}{
"success": false,
"error": "Insufficient credits or page allowance for this conversion."
}Hastighetsgränser
För rättvis API-användning gäller gränser baserat på din abonnemangsplan:
- Premiumanvändare: 100 anrop per minut
- Maximal filstorlek: 100MB per fil
- Maximalt antal filer per anrop: 5
Kodexempel
Fullständiga exempel för flödet: ladda upp, fråga status och ladda ner.
npm install axios form-dataPython: pip install requestsPHP: PHP cURL extension enabledcURL: curl and jq installedGo: Go 1.20+Ruby: gem install multipart-postC#: .NET 7+npm install axios form-data1// Upload a bank statement file
2const axios = require('axios');
3const FormData = require('form-data');
4const fs = require('fs');
5
6// Your API token from the dashboard
7const API_TOKEN = 'your_api_token_here';
8
9// Create a form data object
10const formData = new FormData();
11formData.append('document_type', 'bank_statement');
12formData.append('format', 'csv');
13formData.append('statement[]', fs.createReadStream('bank_statement.pdf'));
14formData.append('separate_debit_credit', 'true');
15formData.append('combine_files', 'false');
16
17// Make the API request
18const BASE_URL = 'https://bank-statement-conversion.com/api';
19
20axios.post(`${BASE_URL}/upload`, formData, {
21 headers: {
22 'Authorization': `Bearer ${API_TOKEN}`,
23 ...formData.getHeaders()
24 }
25})
26.then(response => {
27 const jobId = response.data.jobId;
28 console.log(`Conversion job started with ID: ${jobId}`);
29
30 // Poll for job status
31 checkJobStatus(jobId);
32})
33.catch(error => {
34 console.error('Error uploading file:', error.response ? error.response.data : error.message);
35});
36
37// Function to check job status
38function checkJobStatus(jobId) {
39 axios.get(`${BASE_URL}/conversion-status/${jobId}`, {
40 headers: {
41 'Authorization': `Bearer ${API_TOKEN}`
42 }
43 })
44 .then(response => {
45 const data = response.data;
46 console.log('Job stage:', data.stage);
47
48 if (data.success && data.previews && data.previews.length > 0) {
49 const downloadToken = data.previews[0].download_token;
50 downloadFile(`${BASE_URL}/download/${downloadToken}`);
51 } else if (data.stage === 'pending' || data.stage === 'processing') {
52 // Check again after 5 seconds
53 setTimeout(() => checkJobStatus(jobId), 5000);
54 } else {
55 console.error('Conversion failed:', data.error || data.message || data);
56 }
57 })
58 .catch(error => {
59 console.error('Error checking job status:', error.response ? error.response.data : error.message);
60 });
61}
62
63// Function to download the converted file
64function downloadFile(url) {
65 const outputPath = 'converted_statement.csv';
66
67 axios({
68 method: 'get',
69 url: url,
70 responseType: 'stream',
71 headers: {
72 'Authorization': `Bearer ${API_TOKEN}`
73 }
74 })
75 .then(response => {
76 response.data.pipe(fs.createWriteStream(outputPath));
77 console.log(`File downloaded to ${outputPath}`);
78 })
79 .catch(error => {
80 console.error('Error downloading file:', error.message);
81 });
82}