Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.
openapi: 3.2.0
info:
title: BillingEngine Payments API
version: 1.0.0
summary: REST API for customers, invoices and payments of BillingEngine.
description: 'BillingEngine is online invoicing software for freelancers and small businesses in Germany. Every invoice is an e-invoice (ZUGFeRD and XRechnung, EN 16931).
The API is available in the paid plans. Authenticate with the API key from your settings as a bearer token. All requests and responses use JSON; amounts are given in the currency of the record, dates as YYYY-MM-DD. Each key may send 60 requests per minute. New invoices are created as drafts and count towards the monthly invoice maximum of the plan.
Documentation: https://www.billingengine.com/en/api'
termsOfService: https://www.billingengine.com/en/terms_of_service
contact:
name: BillingEngine
url: https://www.billingengine.com/en/contact
license:
name: Proprietary
url: https://www.billingengine.com/en/terms_of_service
servers:
- url: https://www.billingengine.com/api/v1
description: Production
security:
- bearerAuth: []
tags:
- name: Payments
description: Payments received for sent invoices.
paths:
/payments:
get:
tags:
- Payments
operationId: listPayments
summary: List payments
description: All payments, newest first.
parameters:
- name: invoice_id
in: query
schema:
type: integer
description: Only payments of this invoice.
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number.
- name: per_page
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 25
description: Records per page, at most 100.
responses:
'200':
description: A page of payments.
content:
application/json:
schema:
type: object
required:
- data
- pagination
properties:
data:
type: array
items:
$ref: '#/components/schemas/Payment'
pagination:
$ref: '#/components/schemas/Pagination'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
post:
tags:
- Payments
operationId: createPayment
summary: Record a payment
description: A payment needs the gross amount and the ids of sent, open invoices of the same customer and tax rate.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentInput'
responses:
'201':
description: The recorded payment.
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/Unprocessable'
components:
responses:
Unprocessable:
description: The record is invalid. The messages explain why.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
Unauthorized:
description: Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
BadRequest:
description: 'Malformed request: missing parameter, invalid JSON, invalid date or invalid filter.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
Forbidden:
description: The API is not available in the Free plan, or the monthly invoice maximum of the plan has been reached.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
schemas:
Payment:
type: object
properties:
id:
type: integer
number:
type:
- string
- integer
- 'null'
date:
type: string
format: date
amount:
type: number
currency:
type: string
payment_method:
type: string
enum:
- transfer
- cash
cancelled:
type: boolean
customer:
oneOf:
- $ref: '#/components/schemas/CustomerReference'
- type: 'null'
invoice_ids:
type: array
items:
type: integer
PaymentInput:
type: object
required:
- amount
- invoice_ids
properties:
amount:
type: number
description: Gross amount.
invoice_ids:
type: array
items:
type: integer
minItems: 1
date:
type: string
format: date
description: Defaults to today.
payment_method:
type: string
enum:
- transfer
- cash
default: transfer
CustomerReference:
type: object
properties:
id:
type: integer
name:
type: string
Errors:
type: object
required:
- errors
properties:
errors:
type: array
items:
type: string
Pagination:
type: object
required:
- page
- per_page
- pages
- count
properties:
page:
type: integer
per_page:
type: integer
pages:
type: integer
count:
type: integer
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'The API key from the settings of your account, sent as "Authorization: Bearer <key>". Only available in the paid plans.'
externalDocs:
description: API documentation
url: https://www.billingengine.com/en/api