Basware · Schema

Basware SmartPDF invoice upload API

The Basware SmartPDF invoice upload API allows customers to upload PDF documents to the SmartPDF service for data extraction. This API is intended for use exclusively by Basware SmartPDF customers, not by suppliers directly. Customers can use this API to upload PDF documents they have received internally and wish to process through the SmartPDF service. The API can be activated by Basware consultants from the APIs available at the portfolio tenant level. The customer will receive a username and password from the consultant, which will then be used as described below, depending on the chosen authorization method. The document processing occurs in two steps: - A **POST** request is made to obtain a pre-signed URL for uploading the PDF document. - The document is then uploaded to the provided pre-signed URL using a **PUT** request. These steps are repeated for each document that is uploaded. ## Authorization Authorization within the API can be performed in two ways: ### Basic Authentication The user provides a username and password to the API for authorization. ### OAuth2 Authentication Using a username and password previously provided by the consultant, the user must make a request to the authentication endpoint that returns a JWT token. Authentication Endpoint documentation can be found [here](https://api.basware.com/swagger/?urls.primaryName=Authentication#/Tokens/get_token_v1_tokens_post). The JWT token must be included in the API request used to obtain the pre-signed URL for uploading the PDF document. **Important:** When requesting the JWT token, the following permission must be requested: `importDocuments.write`

E-InvoicingPurchase-To-PayAccounts PayableProcurementElectronic InvoicingFinance AutomationB2B Payments
View JSON Schema on GitHub

JSON Schema

basware-smart-pdf-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.basware.com/schemas/smart-pdf",
  "title": "Basware SmartPDF invoice upload API",
  "description": "\nThe Basware SmartPDF invoice upload API allows customers to upload PDF documents to the SmartPDF service for data extraction.\n\nThis API is intended for use exclusively by Basware SmartPDF customers, not by suppliers directly. Customers can use this API to upload PDF documents they have received internally and wish to process through the SmartPDF service.\n\nThe API can be activated by Basware consultants from the APIs available at the portfolio tenant level. The customer will receive a username and password from the consultant, which will then be used as described below, depending on the chosen authorization method.\n\nThe document processing occurs in two steps:\n\n- A **POST** request is made to obtain a pre-signed URL for uploading the PDF document.\n- The document is then uploaded to the provided pre-signed URL using a **PUT** request.\n\nThese steps are repeated for each document that is uploaded.\n\n## Authorization\n\nAuthorization within the API can be performed in two ways:\n\n### Basic Authentication\nThe user provides a username and password to the API for authorization.\n\n### OAuth2 Authentication\nUsing a username and password previously provided by the consultant, the user must make a request to the authentication endpoint that returns a JWT token.\n\nAuthentication Endpoint documentation can be found [here](https://api.basware.com/swagger/?urls.primaryName=Authentication#/Tokens/get_token_v1_tokens_post).\n\nThe JWT token must be included in the API request used to obtain the pre-signed URL for uploading the PDF document.\n\n**Important:** When requesting the JWT token, the following permission must be requested:\n\n`importDocuments.write`\n",
  "$defs": {
    "HTTPValidationError": {
      "properties": {
        "detail": {
          "items": {
            "$ref": "#/components/schemas/ValidationError"
          },
          "type": "array",
          "title": "Detail"
        }
      },
      "type": "object",
      "title": "HTTPValidationError"
    },
    "UploadRequest": {
      "properties": {
        "receivingEmailAddress": {
          "type": "string",
          "format": "email",
          "title": "Receivingemailaddress",
          "description": "Receiving email address",
          "examples": [
            "receiver@abc.com"
          ]
        },
        "notificationEmailAddress": {
          "type": "string",
          "format": "email",
          "title": "Notificationemailaddress",
          "description": "Notification email address",
          "examples": [
            "sender@abc.com"
          ]
        }
      },
      "type": "object",
      "required": [
        "receivingEmailAddress",
        "notificationEmailAddress"
      ],
      "title": "UploadRequest"
    },
    "UploadResponse": {
      "properties": {
        "uploadUrl": {
          "type": "string",
          "title": "Uploadurl",
          "description": "The AWS presigned URL that grants temporary write permission to an S3 object",
          "examples": [
            "https://ued-dub-qa-uem-upload-api-staging.s3.amazonaws.com/apiDocuments/stenantret2022/7b22726563656976696e67456d61696c41646472657373223a2264656d6f756e69746164647265737373733334407369657064662e626173776172652e636f6d222c226e6f74696669636174696f6e456d61696c41646472657373223a2263616c696e2e666c6f72656140626173776172652e636f6d222c226964223a2230353761646635322d643365332d346363362d386466362d313531633031666661656431227d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAV3J4ESG27ZFAJGZS%2F20241003%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20241003T073343Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHAaCWV1LXdlc3QtMSJFMEMCHwCLR3RhSQcQFha4r8UMivM14WKy7UJYIuPl%2BSWvjgsCIETpJgz5i6WpeaIvTCtN70b0FJPtBfn8YrDu8cL6h5TlKrgDCLn%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQBRoMNDAyMjQyNDQxNjUzIgwmW%2Bk7DMI0nc0fs20qjAPr3aw8cBeiCu3hIUnv2wDdl8JzcBsVNOXrply9bFWYBkezCJt4g8S2oKmho%2BeIh1E4sBrRgsdT02VcfmrL1YlpAmS1qC4xsrQ7dGXvaYHIL1ft0JMdIK3hjWRFQalIUknS0o9hvyieN98CzGkw2TdefPYzBPrbEDmZiCCUpQXqVdk20ZIChOtreVivte5RvBEsg1POkd0LpiuQmJr%2Fsv4qGvBQMqecOQo6aigmLYLrRI3t1SnnqcI5Kk%2BuS6wTrP4hOvXbK3k6Ky1VKnzOzQnBlD7%2BTgxjHbgum2ywwU2FbPxtc%2BYZ31TY5hHW7EN3G55cxsUZHtjURX1CjiUaEuao1V1pfoQl1jqvN6gb%2BVa1BUKHjhWjsaiTd9JGOpYvqVUH9jXm2JGe%2F3vEeALP1tk6O6W1HWOWqLzyytqB2t6%2B6ArfJVjLIVU%2F4o5nq9udfogOp2DnOXklISoTzfSHsEyxFI7VU41y9qv4B3bajgCS%2FemvjTJzmwM9ULT0zVDNjbMm%2Bk4rml5f%2F3%2F8Socw0pH5twY6nwG%2FW61Z8y%2FcuAJAg9vsZCuQu3jAPqJGkKhzne691%2BomqOjq%2FTc3F6pSIQD0qDutUxdlfkXbomQR4oYcDa65dRueVByRvkCBMGtMpr714SRKiGDKSz7ugjNOdFMRLA9HC4do1XKjYLo75Tb5bYyY9xD9SUOKODm9c2nol0vKqbLmVBUtqiPWbM0TjcNhvQB5EGbZQVgc1fnWMwqYqCTnUQA%3D&X-Amz-Signature=a0765cbc01b82653ffe6b01d327e85487b5c0016788092a3c7d78fa99ca16c1a"
          ]
        },
        "bumId": {
          "type": "string",
          "title": "Bumid",
          "description": "BumId of the document",
          "examples": [
            "a7c80578-6586-472c-ade8-e941443f0ef0"
          ]
        }
      },
      "type": "object",
      "required": [
        "uploadUrl",
        "bumId"
      ],
      "title": "UploadResponse"
    },
    "ValidationError": {
      "properties": {
        "loc": {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "type": "array",
          "title": "Location"
        },
        "msg": {
          "type": "string",
          "title": "Message"
        },
        "type": {
          "type": "string",
          "title": "Error Type"
        },
        "input": {
          "title": "Input"
        },
        "ctx": {
          "type": "object",
          "title": "Context"
        }
      },
      "type": "object",
      "required": [
        "loc",
        "msg",
        "type"
      ],
      "title": "ValidationError"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/basware-smart-pdf"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.