openapi: 3.0.0
info:
title: Defacto Accounting Sharing business data API
version: v1.0.0
description: Defacto provides instant, embedded financing for SMBs across Europe. This REST API lets partners onboard borrowers, test eligibility and credit limits, upload business/bank data, create invoices, request and manage loans, handle repayments and recollection, issue and manage credit cards, bill fees, and subscribe to webhooks. Reconstructed by API Evangelist from the per-operation OpenAPI fragments published on Defacto's ReadMe developer portal (developers.getdefacto.com/llms.txt). operationId values are the provider's ReadMe reference slugs; summaries are the reference page titles.
contact:
email: contact@getdefacto.com
url: https://developers.getdefacto.com/
servers:
- url: https://api.getdefacto.com
description: Production
- url: https://api-sandbox.getdefacto.com
description: Sandbox
security:
- Bearer: []
tags:
- name: Sharing business data
paths:
/business/data/account-transactions:
post:
description: '
Upload bank account transactions into our platform to refine borrower
credit line allowance.
This endpoint doesn''t support updates on data already uploaded.
The account field of the transactions should match the id field of the
accounts you share with the POST /business/data/accounts endpoint.
'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/APIPartnerAccountTransactions'
responses:
'204':
description: ''
content:
'*/*':
schema: {}
security:
- Bearer: []
tags:
- Sharing business data
operationId: post_business-data-account-transactions
summary: /business/data/account-transactions
/business/data/accounts:
post:
description: '
Upload bank account balances into our platform to refine borrower credit
line allowance.
This endpoint doesn''t support updates on data already uploaded.
The id field of the accounts should match the account field of the
transactions you share with the POST /business/data/account-transactions endpoint. If you only
have the IBAN of the account, the IBAN being a unique identifier, you can use the IBAN in both
id and account_number.
'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/APIPartnerBusinessAccounts'
responses:
'204':
description: ''
content:
'*/*':
schema: {}
security:
- Bearer: []
tags:
- Sharing business data
operationId: post_business-data-accounts
summary: /business/data/accounts
/business/data/batch-upload/{batch_id}/close:
post:
description: '
Close a batch of upload started with POST /business/data/batch-upload.
This operation is a required one. Otherwise no data of the batch will be used.
'
parameters:
- in: path
name: batch_id
required: true
schema:
type: string
responses:
'200':
description: ''
content:
'*/*':
schema:
$ref: '#/components/schemas/APIBatchUpload'
security:
- Bearer: []
tags:
- Sharing business data
operationId: post_business-data-batch-upload-batch-id-close
summary: /business/data/batch-upload/{batch_id}/close
/business/data/batch-upload:
post:
description: '
Create a batch to upload data about a particular business.
This endpoint returns an id that should be put into all /business/data/XXX endpoints.
**Why use batch?**
- with the batch, you can send accounts transactions in chunks instead of sending them all in a single API call
- with the batch, you can share more context (see parameter below) with us which enables us to update credit lines more accurately
'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/APICreateBatchUpload'
responses:
'201':
description: ''
content:
'*/*':
schema:
$ref: '#/components/schemas/APIBatchUpload'
security:
- Bearer: []
tags:
- Sharing business data
operationId: post_business-data-batch-upload
summary: /business/data/batch-upload
/business/data/invoices:
post:
description: '
Upload business invoices into our platform to refine borrower credit
line allowance.
This endpoint doesn''t support updates on data already uploaded.
'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/APIPartnerBusinessInvoices'
responses:
'204':
description: ''
content:
'*/*':
schema: {}
security:
- Bearer: []
tags:
- Sharing business data
operationId: post_business-data-invoices
summary: /business/data/invoices
components:
schemas:
APIPartnerAccountTransactions:
properties:
batch_id:
default: null
description: Id of the batch you created with POST /business/data/batch-upload. This is a recommended feature.
format: uuid
type: string
nullable: true
end_date:
default: null
description: End date of the financials you're sending.
format: date-time
type: string
nullable: true
identifier:
description: Legal identifier of the business, such as its SIRET or SIREN in France. Must not contain spaces.
type: string
identifier_type:
description: Type of legal business identifier of the business, such as the SIRET in France.
enum:
- belgium_registration_number
- bsn
- cif
- hr_nummer
- kvk
- name
- nif
- siren
- siret
- steuernummer
- vat_number
type: string
start_date:
default: '0001-01-01T00:00:00'
description: Start date of the financials you're sending.
format: date-time
type: string
nullable: true
transactions:
description: List of account transactions of the business.
items:
$ref: '#/components/schemas/APIPartnerAccountTransaction'
type: array
required:
- identifier
- identifier_type
type: object
BatchUploadContent:
properties:
account_transactions:
default: null
nullable: true
accounts:
allOf:
- $ref: '#/components/schemas/BatchUploadContentAccounts'
default: null
nullable: true
invoices:
allOf:
- $ref: '#/components/schemas/BatchUploadContentInvoices'
default: null
nullable: true
shared_data_types:
items:
enum:
- account_transactions
- accounts
- invoices
type: string
type: array
type: object
BatchUploadContentAccounts:
properties:
total_count:
type: integer
required:
- total_count
type: object
BatchUploadContentAccountTransactionsOneAccount:
properties:
account:
type: string
end_date:
format: date-time
type: string
start_date:
format: date-time
type: string
required:
- account
- end_date
- start_date
type: object
APIPartnerBusinessInvoice:
properties:
buyer:
allOf:
- $ref: '#/components/schemas/BuyerBusinessIdentifier'
description: Name or business identifier of the buyer (the billed business)
currency:
default: EUR
description: Currency of the invoice. Use ISO 4217 currency code.
enum:
- AED
- AUD
- BGN
- BHD
- BRL
- BZD
- CAD
- CHF
- CLP
- CNY
- COP
- CUC
- CYP
- CZK
- DJF
- DKK
- EEK
- EGP
- ERN
- EUR
- GBP
- HKD
- HRK
- HUF
- IDR
- ILS
- INR
- ISK
- JOD
- JPY
- KMF
- KRW
- LBP
- LTL
- LVL
- MAD
- MTL
- MUR
- MXN
- MYR
- NOK
- NZD
- OMR
- PAB
- PHP
- PKR
- PLN
- QAR
- ROL
- RON
- RUB
- SAR
- SEK
- SGD
- SIT
- SKK
- THB
- TRL
- TRY
- UGX
- USD
- XAF
- XOF
- ZAR
type: string
direction:
description: 'Is the invoice a ''receivable'' or a ''payable''.Depecrated: ''customer'' or ''supplier'' if the business is the customer or the supplier on the invoice ?'
enum:
- customer
- payable
- receivable
- supplier
type: string
due_at:
description: Expected date when this invoice will be fully paid.
format: date-time
type: string
first_payment_at:
default: null
description: Earliest payment date this invoice already received.
format: date-time
type: string
nullable: true
invoice_number:
description: Invoice number as displayed on the invoice
type: string
issued_at:
description: Invoice creation date displayed on the invoice.
format: date-time
type: string
last_payment_at:
default: null
description: Latest payment date this invoice already received.
format: date-time
type: string
nullable: true
net_amount:
description: Amount before tax, in cents
type: integer
payment_method:
default: null
description: Expected payment method that will be used to pay this invoice.
enum:
- card
- cheque
- direct_debit
- other
- wire_transfer
- null
type: string
nullable: true
salt_id:
default: null
description: Unique invoice identifier.
type: string
nullable: true
seller:
allOf:
- $ref: '#/components/schemas/SellerBusinessIdentifier'
description: Name or business identifier of the seller (the business who bills). Must be a normalized identifier (not a name).
tax_amount:
default: null
description: Amount of tax, in cents
type: integer
nullable: true
to_pay_amount:
default: null
description: Remaining amount due by buyer to seller, in cents. Set at 0 for fully paid invoices.
type: integer
nullable: true
total_amount:
default: null
description: Sum of net amount and tax amount, in cents
type: integer
nullable: true
required:
- buyer
- direction
- due_at
- invoice_number
- issued_at
- net_amount
- seller
type: object
BuyerBusinessIdentifier:
properties:
identifier:
type: string
identifier_type:
enum:
- belgium_registration_number
- bsn
- cif
- hr_nummer
- kvk
- name
- nif
- siren
- siret
- steuernummer
- vat_number
type: string
required:
- identifier
- identifier_type
type: object
SellerBusinessIdentifier:
properties:
identifier:
type: string
identifier_type:
enum:
- belgium_registration_number
- bsn
- cif
- hr_nummer
- kvk
- name
- nif
- siren
- siret
- steuernummer
- vat_number
type: string
required:
- identifier
- identifier_type
type: object
APIBatchUploadContent:
properties:
account_transactions:
default: null
items:
$ref: '#/components/schemas/BatchUploadContentAccountTransactionsOneAccount'
type: array
nullable: true
accounts:
allOf:
- $ref: '#/components/schemas/BatchUploadContentAccounts'
default: null
nullable: true
invoices:
allOf:
- $ref: '#/components/schemas/BatchUploadContentInvoices'
default: null
nullable: true
shared_data_types:
items:
enum:
- account_transactions
- accounts
- invoices
type: string
type: array
type: object
APIPartnerAccountTransaction:
properties:
account:
default: null
description: Business bank account identifier or reference
type: string
nullable: true
amount:
description: Total amount of the transaction.
type: integer
at:
description: Date of the transaction
format: date-time
type: string
category:
default: null
description: Category of this transaction (expense, salaries ...)
type: string
nullable: true
counterparty_name:
default: null
description: Business name of the transaction counterparty
type: string
nullable: true
currency:
default: EUR
description: Transaction currency
enum:
- AED
- AUD
- BGN
- BHD
- BRL
- BZD
- CAD
- CHF
- CLP
- CNY
- COP
- CUC
- CYP
- CZK
- DJF
- DKK
- EEK
- EGP
- ERN
- EUR
- GBP
- HKD
- HRK
- HUF
- IDR
- ILS
- INR
- ISK
- JOD
- JPY
- KMF
- KRW
- LBP
- LTL
- LVL
- MAD
- MTL
- MUR
- MXN
- MYR
- NOK
- NZD
- OMR
- PAB
- PHP
- PKR
- PLN
- QAR
- ROL
- RON
- RUB
- SAR
- SEK
- SGD
- SIT
- SKK
- THB
- TRL
- TRY
- UGX
- USD
- XAF
- XOF
- ZAR
type: string
operation_type:
default: null
description: Source or payment method of this transaction
enum:
- account_remuneration
- card
- card_acquirer_payout
- cheque
- direct_debit
- direct_debit_collection
- direct_debit_hold
- financing_installment
- income
- nrc_payment
- other
- pay_later
- qonto_fee
- recall
- swift_income
- transfer
- null
type: string
nullable: true
provider:
default: null
description: The provider of this transaction (e.g. bridge, plaid...). "MANUAL" if manually imported.
type: string
nullable: true
reference:
default: null
description: Bank reference for the transaction
type: string
nullable: true
salt_id:
default: null
description: Unique identifier of this transaction
type: string
nullable: true
settled_balance:
default: null
description: Balance of the business bank account right after this transaction was processed
type: integer
nullable: true
side:
default: null
description: Is the transaction a debit or a credit operation.
enum:
- credit
- debit
- null
type: string
nullable: true
status:
default: null
enum:
- completed
- declined
- deleted
- pending
- null
type: string
nullable: true
required:
- amount
- at
type: object
BatchUploadContentInvoices:
properties:
total_count:
type: integer
required:
- total_count
type: object
APIPartnerBusinessInvoices:
properties:
batch_id:
default: null
description: Id of the batch you created with POST /business/data/batch-upload. This is a recommended feature.
format: uuid
type: string
nullable: true
identifier:
description: Legal identifier of the business, such as its SIRET or SIREN in France. Must not contain spaces.
type: string
identifier_type:
description: Type of legal business identifier of the business, such as the SIRET in France.
enum:
- belgium_registration_number
- bsn
- cif
- hr_nummer
- kvk
- name
- nif
- siren
- siret
- steuernummer
- vat_number
type: string
invoices:
description: List of invoices of the business.
items:
$ref: '#/components/schemas/APIPartnerBusinessInvoice'
type: array
required:
- identifier
- identifier_type
type: object
APIBatchUpload:
properties:
business_identifier:
$ref: '#/components/schemas/BusinessIdentifierRequired'
content:
$ref: '#/components/schemas/BatchUploadContent'
context:
enum:
- BORROWER_CREATION
- DATA_REFRESH
type: string
id:
format: uuid
type: string
status:
enum:
- CANCELED
- CLOSED
- CLOSING_IN_PROGRESS
- CLOSING_SCHEDULED
- CREATED
type: string
required:
- business_identifier
- content
- context
- id
- status
type: object
APIPartnerBusinessAccount:
properties:
account_name:
default: null
description: A name given to this account. Any name can be given.
type: string
nullable: true
account_number:
default: null
description: The account identifier. Only IBANs are supported at the moment.
type: string
nullable: true
account_number_type:
default: null
description: The type of account number (e.g. IBAN).
enum:
- account_number
- iban
- internal_id
- null
type: string
nullable: true
amount:
description: Balance of the bank account.
type: integer
bank_identifier:
default: null
description: The identifier of the bank.
type: string
nullable: true
bank_identifier_type:
default: null
description: The type of bank identifier (e.g. BIC).
enum:
- bic
- name
- routing_number
- undefined
- null
type: string
nullable: true
id:
description: Unique bank account identifier.
type: string
last_updated_at:
description: Date of last balance update.
format: date-time
type: string
provider:
default: null
description: The provider of this account (e.g. bridge, plaid...). "MANUAL" if manually imported.
type: string
nullable: true
required:
- amount
- id
- last_updated_at
type: object
APIPartnerBusinessAccounts:
properties:
accounts:
description: List of accounts balances of the business.
items:
$ref: '#/components/schemas/APIPartnerBusinessAccount'
type: array
batch_id:
default: null
description: Id of the batch you created with POST /business/data/batch-upload. This is a recommended feature.
format: uuid
type: string
nullable: true
identifier:
description: Legal identifier of the business, such as its SIRET or SIREN in France. Must not contain spaces.
type: string
identifier_type:
description: Type of legal business identifier of the business, such as the SIRET in France.
enum:
- belgium_registration_number
- bsn
- cif
- hr_nummer
- kvk
- name
- nif
- siren
- siret
- steuernummer
- vat_number
type: string
required:
- identifier
- identifier_type
type: object
BusinessIdentifierRequired:
properties:
identifier:
type: string
identifier_type:
enum:
- belgium_registration_number
- bsn
- cif
- hr_nummer
- kvk
- name
- nif
- siren
- siret
- steuernummer
- vat_number
type: string
required:
- identifier
- identifier_type
type: object
APICreateBatchUpload:
properties:
auto_cancel_ongoing_batch_for_business:
default: true
type: boolean
business_identifier:
$ref: '#/components/schemas/BusinessIdentifierRequired'
content:
$ref: '#/components/schemas/APIBatchUploadContent'
context:
enum:
- BORROWER_CREATION
- DATA_REFRESH
type: string
required:
- business_identifier
- content
- context
type: object
securitySchemes:
Bearer:
in: header
name: Authorization
type: apiKey