Hubflo invoicing_profile API

The invoicing_profile API from Hubflo — 2 operation(s) for invoicing_profile.

Operations 3

POST /api/v2/invoicing-profiles/logo Uploads the invoicing profile logo
DELETE /api/v2/invoicing-profiles/logo Deletes the invoicing profile logo
PATCH /api/v2/invoicing-profiles Updates the current invoicing profile

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/hubflo-invoicing-profile-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

hubflo-invoicing-profile-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hubflo chat_room Invoicing Profile API
  version: v2
  description: "The Hubflo API allows you to write and read data from the Hubflo application.\nIt conforms to [REST](https://en.wikipedia.org/wiki/REST).\nIt has predictable resource-oriented URLS, accepts JSON request bodies, returns JSON and uses standard HTTP status codes\nand verbs.\n\n# Authentication\n\nThe Hubflo API requires authentication.\nIt's a bearer authentication, also called token authentication.\n\nTo start your integration journey with the Hubflo API, you must send your **authentication token** in the\n`Authorization` header when making requests to the API.\n\n```\nAuthorization: Bearer <token>\n```\n\n# Getting started\n\nNavigate to [https://app.hubflo.com/organizations/](https://app.hubflo.com/organizations/).\nIn the **Integrations** settings panel, click on the **Generate key** button if you don't already have an API key.\n\nThe generated API key is the required authentication token you must send in the `Authorization` header.\nLet's copy it.\n\nYou can use the `/pings` endpoint to check that you can successfully make an authenticated request.\nDo it directly from this documentation, using the **Authorize** button to paste your authentication token, then push\nthe **Try it out** button.\n\nAlternatively, you can run the following cURL command in a terminal:\n\n```\ncurl -X 'POST' \\\n  'https://app.hubflo.com/api/v2/pings' \\\n  -H 'accept: application/json' \\\n  -H 'Authorization: Bearer <token>' \\\n  -d ''\n```\n\nIf you're successfully authenticated, you receive:\n\n```json\n{\n  \"pong\": \"ok\"\n}\n```\n\nOtherwise you get a `401 - Unauthorized` error. For example:\n\n```json\n{\n  \"status\": 401,\n  \"title\": \"Unauthorized\",\n  \"message\": \"API token not found\"\n}\n```\n\n# Versioning\n\nThe API is versioned. The current version is 2.0 (referenced as v2 in the endpoints).\n\n# Routes\n\nThe API endpoints are accessible through a route of the form: `https://<domain>/api/<version>/<endpoint>`.\n\nWhere:\n\n- `domain` is the domain to use, usually \"app.hubflo.com\"\n- `version` is the API version\n- `endpoint` is the endpoint name\n\nFor example, we will have: `https://app.hubflo.com/api/v2/pings`.\n\n# Request headers\n\nEvery request should include the header `Content-Type: application/json`, except for file uploads.\n\n# Requests and parameters\n\nThe API adheres to REST principles:\n\n- `GET` requests: read without modification\n- `POST` requests: create a new resource\n- `PATCH` requests: update an existing resource\n- `DELETE` requests: delete a resource\n\nThe parameters for `GET` requests should be sent via the query string of the request.\n\nThe parameters for `POST` and `PATCH` requests should be transmitted in the request body in a valid JSON format.\n\nThe parameters should follow the following formats:\n- `date`: \"YYYY-MM-DD\", for example: \"2021-10-21\"\n- `time`: \"H:m[:s]\", for example: \"10:30\"\n- `date-time`: \"YYYY-MM-DDThh:mm:ssZ\", which is the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format, using UTC\n\n# Response headers\n\nAs specified for each endpoint, the response headers contain:\n- `Content-Type`: the response content type\n- `X-Organization-ID`: your organization ID\n- `X-Rate-Limit` the maximum allowed requests in a given period\n- `X-Remaining-Requests`: the remaining requests count in the current period\n\n# Response format\n\nThe API only supports JSON format.\nAll responses sent by the API will contain the header `Content-Type: application/json` and their content is present in\nthe body in a JSON format to be de-serialized.\n\n# Rate limit\n\nThe use of the API is limited.\nYou can make a maximum of 1000 calls per minute.\nIf you exceed this limit, you receive a `429 - Too Many Requests` error and are blocked for one minute.\n\n# Pagination\n\nAll endpoints that return lists are paginated.\nIn general, any endpoint that returns a list can return an empty list.\n\nThe (optional) `page` parameter allows you to access a specific page.\n\nThe (optional) `per_page` parameter allows you to change the number of items on a given page.\nThe default value is 20 and it is limited to a maximum of 100.\n\n# Response codes\n\nThe API may return the following codes:\n\n| Code  | Name                  | Description                                                                      |\n| ----  | --------              | --------                                                                         |\n| `200` | Success               | Success                                                                          |\n| `201` | Created               | Resource created                                                                 |\n| `204` | No Content            | Success but the response does not contain any data (e.g., deletion)              |\n| `400` | Bad Request           | The request is invalid                                                           |\n| `401` | Unauthorized          | Authentication failed                                                            |\n| `403` | Forbidden             | Insufficient rights to perform the requested action                              |\n| `404` | Not Found             | The resource is not found                                                        |\n| `422` | Unprocessable Content  | The transmitted data is malformed                                                |\n| `429` | Too Many Requests     | Too many requests have been made                                                 |\n| `500` | Internal Server Error | An internal server error occurred (the technical team is automatically notified) |\n\n# Errors\n\nWhen an error occurs, the response code informs you about what is happening.\nThe response body contains:\n- the status code,\n- the status name, a.k.a the error title,\n- a human readable message.\n\nSee the error schemas below.\n\n# Resources\n\nAll resources are identified by a unique ID that looks like this: \"16242d6f-a808-41b7-8c4d-fe29b9b3245f\".\n\nJSON data types are used at most: `string`, `number`, `float`, `object`, `array`, `boolean` and `null`.\nDates and datetimes attributes are serialized with UTC [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.\n\n\n"
servers:
- url: https://app.hubflo.com
  description: The production API server
- url: https://staging.hubflo.com
  description: The staging API server
- url: http://localhost:3000
  description: The local API server
tags:
- name: invoicing_profile
paths:
  /api/v2/invoicing-profiles/logo:
    post:
      summary: Uploads the invoicing profile logo
      security:
      - bearer_auth: []
      description: Replaces the invoicing profile logo. The image is sent as multipart/form-data.
      tags:
      - invoicing_profile
      parameters: []
      responses:
        '201':
          description: Logo uploaded
          headers:
            Content-Type:
              schema:
                type: string
              description: application/json; charset=utf-8
            X-Organization-ID:
              schema:
                type: string
              description: The organization ID
            X-Rate-Limit:
              schema:
                type: integer
              description: Max allowed requests in the current period
            X-Remaining-Requests:
              schema:
                type: integer
              description: Remaining requests in the current period
          content:
            application/json:
              examples:
                example:
                  value:
                    id: 83510985-067c-4c2e-9951-23e2693ef282
                    name: Invoicing profile
                    address: 34 rue Dautancourt
                    email: null
                    phone: null
                    postal_code: '75017'
                    city: Paris
                    country: FR
                    state: Île-de-France
                    legal_status: null
                    siret: '12345678900014'
                    vat_number: FR76123456789
                    invoices_comment: null
                    invoices_description: null
                    invoices_reference_prefix: '{{year}}/{{month}}-'
                    pdf_custom_footer: null
                    pdf_font_size: medium
                    pdf_font_weight: normal
                    pdf_line_height: medium
                    pdf_logo_size: medium
                    pdf_salable_principal_color: '#8AA3D9'
                    pdf_salable_secondary_color: '#5F6368'
                    proposal_mode: true
                    proposals_description: null
                    proposals_quote_comment: null
                    proposals_reference_prefix: '{{year}}/{{month}}-'
                    payment_terms: null
                    salable_payment_deadline_days: 30
                    salable_payment_methods:
                    - bank_transfer
                    salable_vat: '20.0'
                    created_at: '2026-07-17T13:08:42Z'
                    logo_url: http://www.example.com/rails/active_storage/disk/eyJfcmFpbHMiOnsiZGF0YSI6eyJrZXkiOiJqMGI1bmlkZTFrNWhtYjhscGk5ZHNzcnE4ejExIiwiZGlzcG9zaXRpb24iOiJpbmxpbmU7IGZpbGVuYW1lPVwiNjAweDYwMC5wbmdcIjsgZmlsZW5hbWUqPVVURi04Jyc2MDB4NjAwLnBuZyIsImNvbnRlbnRfdHlwZSI6ImltYWdlL3BuZyIsInNlcnZpY2VfbmFtZSI6InRlc3QifSwiZXhwIjoiMjAyNi0wNy0xN1QxMzoxNDo0MC40ODNaIiwicHVyIjoiYmxvYl9rZXkifX0=--7908a0c56001c9819c7a0052366c08258d32e001/600x600.png
        '401':
          description: 'unauthorized: the Authorization header is missing or invalid'
          content:
            application/json:
              examples:
                example:
                  value:
                    status: 401
                    title: Unauthorized
                    message: Invalid API token
              schema:
                $ref: '#/components/schemas/error_unauthorized'
        '429':
          description: 'too many requests: the user has reached the rate limit'
          content:
            application/json:
              examples:
                example:
                  value:
                    status: 429
                    title: Too Many Requests
                    message: Rate limit reached. Please wait for a couple of minutes.
              schema:
                $ref: '#/components/schemas/error_too_many_requests'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: string
              format: binary
        required: true
        description: Logo to upload
    delete:
      summary: Deletes the invoicing profile logo
      security:
      - bearer_auth: []
      description: Removes the invoicing profile logo
      tags:
      - invoicing_profile
      responses:
        '204':
          description: Logo deleted
          headers:
            X-Organization-ID:
              schema:
                type: string
              description: The organization ID
            X-Rate-Limit:
              schema:
                type: integer
              description: Max allowed requests in the current period
            X-Remaining-Requests:
              schema:
                type: integer
              description: Remaining requests in the current period
          content:
            application/json:
              examples:
                example:
                  value: ''
        '401':
          description: 'unauthorized: the Authorization header is missing or invalid'
          content:
            application/json:
              examples:
                example:
                  value:
                    status: 401
                    title: Unauthorized
                    message: Invalid API token
              schema:
                $ref: '#/components/schemas/error_unauthorized'
        '429':
          description: 'too many requests: the user has reached the rate limit'
          content:
            application/json:
              examples:
                example:
                  value:
                    status: 429
                    title: Too Many Requests
                    message: Rate limit reached. Please wait for a couple of minutes.
              schema:
                $ref: '#/components/schemas/error_too_many_requests'
  /api/v2/invoicing-profiles:
    patch:
      summary: Updates the current invoicing profile
      security:
      - bearer_auth: []
      description: Returns the updated invoicing profile
      tags:
      - invoicing_profile
      parameters: []
      responses:
        '200':
          description: Invoicing profile updated
          headers:
            Content-Type:
              schema:
                type: string
              description: application/json; charset=utf-8
            X-Organization-ID:
              schema:
                type: string
              description: The organization ID
            X-Rate-Limit:
              schema:
                type: integer
              description: Max allowed requests in the current period
            X-Remaining-Requests:
              schema:
                type: integer
              description: Remaining requests in the current period
          content:
            application/json:
              examples:
                example:
                  value:
                    id: 83510985-067c-4c2e-9951-23e2693ef282
                    name: Updated name
                    address: 10 Updated Street
                    email: updated@example.com
                    phone: +33 9 87 65 43 21
                    postal_code: '69001'
                    city: Lyon
                    country: FR
                    state: Auvergne-Rhône-Alpes
                    legal_status: SARL
                    siret: '98765432100012'
                    vat_number: FR99987654321
                    invoices_comment: Late payment incurs a 1.5% fee.
                    invoices_description: Services rendered for the month.
                    invoices_reference_prefix: '{{year}}/INV-'
                    pdf_custom_footer: Thanks for your business!
                    pdf_font_size: large
                    pdf_font_weight: bold
                    pdf_line_height: large
                    pdf_logo_size: large
                    pdf_salable_principal_color: '#112233'
                    pdf_salable_secondary_color: '#445566'
                    proposal_mode: true
                    proposals_description: Scope of work outlined below.
                    proposals_quote_comment: Quote valid for 30 days.
                    proposals_reference_prefix: '{{year}}/PRO-'
                    payment_terms: Payment due within 30 days of invoice date.
                    salable_payment_deadline_days: 30
                    salable_payment_methods:
                    - bank_transfer
                    - bank_card
                    salable_vat: '20.0'
                    created_at: '2026-07-17T13:08:42Z'
                    logo_url: null
        '401':
          description: 'unauthorized: the Authorization header is missing or invalid'
          content:
            application/json:
              examples:
                example:
                  value:
                    status: 401
                    title: Unauthorized
                    message: Invalid API token
              schema:
                $ref: '#/components/schemas/error_unauthorized'
        '429':
          description: 'too many requests: the user has reached the rate limit'
          content:
            application/json:
              examples:
                example:
                  value:
                    status: 429
                    title: Too Many Requests
                    message: Rate limit reached. Please wait for a couple of minutes.
              schema:
                $ref: '#/components/schemas/error_too_many_requests'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                address:
                  type: string
                  example: 1 Market St
                city:
                  type: string
                  example: San Francisco
                country:
                  type: string
                  example: US
                email:
                  type: string
                  example: billing@acme.com
                invoices_comment:
                  type: string
                  example: Late payment incurs a 1.5% fee.
                invoices_description:
                  type: string
                  example: Services rendered for the month.
                invoices_reference_prefix:
                  type: string
                  example: '{{year}}/INV-'
                legal_status:
                  type: string
                  example: LLC
                name:
                  type: string
                  example: Acme Inc.
                payment_terms:
                  type: string
                  example: Payment due within 30 days of invoice date.
                pdf_custom_footer:
                  type: string
                  example: Thanks for your business!
                pdf_font_size:
                  type: string
                  enum:
                  - small
                  - medium
                  - large
                  - very_large
                  example: medium
                pdf_font_weight:
                  type: string
                  enum:
                  - light
                  - normal
                  - bold
                  example: normal
                pdf_line_height:
                  type: string
                  enum:
                  - small
                  - medium
                  - large
                  example: medium
                pdf_logo_size:
                  type: string
                  enum:
                  - small
                  - medium
                  - large
                  example: medium
                pdf_salable_principal_color:
                  type: string
                  example: '#8AA3D9'
                pdf_salable_secondary_color:
                  type: string
                  example: '#5F6368'
                phone:
                  type: string
                  example: +1 415 555 0142
                postal_code:
                  type: string
                  example: '94103'
                proposal_mode:
                  type: boolean
                  enum:
                  - true
                  - false
                  example: true
                  description: 'Proposal/estimate PDF layout style — true: Proposal Layout (content emphasized), false: Estimate-Focused Layout (quote/PDF emphasized).'
                proposals_description:
                  type: string
                  example: Scope of work outlined below.
                proposals_quote_comment:
                  type: string
                  example: Quote valid for 30 days.
                proposals_reference_prefix:
                  type: string
                  example: '{{year}}/PRO-'
                salable_payment_deadline_days:
                  type: integer
                  enum:
                  - 0
                  - 14
                  - 30
                  - 45
                  - 60
                  example: 30
                salable_payment_methods:
                  type: array
                  items:
                    type: string
                    enum:
                    - bank_transfer
                    - bank_card
                    - direct_debit
                    - check
                    - cash
                    - ach
                    - paypal
                    - other
                  example:
                  - bank_transfer
                  - bank_card
                salable_vat:
                  type: number
                  example: 8.625
                siret:
                  type: string
                  example: 12-3456789
                  description: Business registration number.
                state:
                  type: string
                  example: California
                vat_number:
                  type: string
                  example: US123456789
        required: true
        description: Invoicing profile attributes
components:
  schemas:
    error_unauthorized:
      description: A response describing an authentication error
      type: object
      properties:
        status:
          type: integer
          example: 401
        title:
          type: string
          example: Unauthorized
        message:
          type: string
          example: API token not found
      required:
      - status
      - title
      - message
    error_too_many_requests:
      description: A response describing a rate limit error
      type: object
      properties:
        status:
          type: integer
          example: 429
        title:
          type: string
          example: Too Many Requests
        message:
          type: string
          example: Rate limit reached. Please wait for a couple of minutes.
      required:
      - status
      - title
      - message
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
x-readme:
  explorer-enabled: true
  proxy-enabled: true