This package was developed to give you a quick start to the Bexio API.
Bexio is a cloud-based simple business software for the self-employed, small businesses and startups.
Package | PHP | Laravel |
---|---|---|
>v11.0 | >8.2 | > Laravel 11.0 |
>v1.0 | >8.2 | > Laravel 10.0 |
The currently supported authentication methods are:
Method | Supported |
---|---|
API token | ✅ |
OAuth | ❌ |
You can install the package via composer:
composer require codebar-ag/laravel-bexio
Optionally, you can publish the config file with:
php artisan vendor:publish --provider="CodebarAg\Bexio\BexioServiceProvider" --tag="config"
You can add the following env variables to your .env
file:
BEXIO_API_TOKEN= # Your Bexio API token
You can retrieve your API token from your Bexio Dashboard
To use the package, you need to create a BexioConnector instance.
use CodebarAg\Bexio\BexioConnector;
...
$connector = new BexioConnector();
The following responses are currently supported for retrieving the response body:
Response Methods | Description | Supported |
---|---|---|
body | Returns the HTTP body as a string | ✅ |
json | Retrieves a JSON response body and json_decodes it into an array. | ✅ |
object | Retrieves a JSON response body and json_decodes it into an object. | ✅ |
collect | Retrieves a JSON response body and json_decodes it into a Laravel collection. Requires illuminate/collections to be installed. | ✅ |
dto | Converts the response into a data-transfer object. You must define your DTO first | ✅ |
See https://docs.saloon.dev/the-basics/responses for more information.
We provide enums for the following values:
Enum | Values |
---|---|
Accounts: SearchFieldEnum | ACCOUNT_NO(), self FIBU_ACCOUNT_GROUP_ID(), NAME(), ACCOUNT_TYPE() |
Accounts: AccountTypeEnum | EARNINGS(), EXPENDITURES(), ACTIVE_ACCOUNTS(), PASSIVE_ACCOUNTS(), COMPLETE_ACCOUNTS() |
AdditionalAddresses: AddSearchTypeEnum | ID(), ID_ASC(), ID_DESC(), NAME(), NAME_ASC(), NAME_DESC() |
CalendarYears: VatAccountingMethodEnum | EFFECTIVE(), NET_TAX() |
CalendarYears: VatAccountingTypeEnum | AGREED(), COLLECTED() |
ContactGroups: OrderByEnum | ID(), ID_ASC(), ID_DESC(), NAME(), NAME_ASC(), NAME_DESC() |
ContactRelations: OrderByEnum | ID(), ID_ASC(), ID_DESC(), CONTACT_ID(), CONTACT_ID_ASC(), CONTACT_ID_DESC(), CONTACT_SUB_ID(), CONTACT_SUB_ID_ASC(), CONTACT_SUB_ID_DESC(), UPDATED_AT(), UPDATED_AT_ASC(), UPDATED_AT_DESC() |
Contacts: OrderByEnum | ID(), ID_ASC(), ID_DESC(), NR(), NR_ASC(), NR_DESC(), NAME_1(), NAME_1_ASC(), NAME_1_DESC(), UPDATED_AT(), UPDATED_AT_ASC(), UPDATED_AT_DESC() |
ContactSectors: OrderByEnum | ID(), ID_ASC(), ID_DESC(), NAME(), NAME_ASC(), NAME_DESC() |
IbanPayments: AllowanceTypeEnum | FEE_PAID_BY_SENDER(), FEE_PAID_BY_RECIPIENT(), FEE_SPLIT(), NO_FEE() |
IbanPayments: StatusEnum | OPEN(), TRANSFERRED(), DOWNLOADED(), ERROR(), CANCELLED() |
ManualEntries: TypeEnum | MANUAL_SINGLE_ENTRY(), MANUAL_GROUP_ENTRY(), MANUAL_COMPOUND_ENTRY() |
QrPayments: AllowanceTypeEnum | FEE_PAID_BY_SENDER(), FEE_PAID_BY_RECIPIENT(), FEE_SPLIT(), NO_FEE() |
QrPayments: StatusEnum | OPEN(), TRANSFERRED(), DOWNLOADED(), ERROR(), CANCELLED() |
Taxes: ScopeEnum | ACTIVE(), INACTIVE() |
Taxes: TypeEnum | SALES_TAX(), PRE_TAX() |
Titles: OrderByEnum | ID(), ID_ASC(), ID_DESC(), NAME(), NAME_ASC(), NAME_DESC() |
SearchCriteriaEnum | EQUALS(), DOUBLE_EQUALS(), EQUAL(), NOT_EQUALS(), GREATER_THAN_SYMBOL(), GREATER_THAN(), GREATER_EQUAL_SYMBOL(), GREATER_EQUAL(), LESS_THAN_SYMBOL(), LESS_THAN(), LESS_EQUAL_SYMBOL(), LESS_EQUAL(), LIKE(), NOT_LIKE(), IS_NULL(), NOT_NULL(), IN(), NOT_IN() |
Note: When using the dto method on a response, the enum values will be converted to their respective enum class.
We provide DTOs for the following:
DTO |
---|
AccountGroupDTO |
AccountDTO |
BankAccountDTO |
AdditionalAddressDTO |
BankAccountDTO |
BusinessActivityDTO |
BusinessYearDTO |
CalendarYearDTO |
CompanyProfileDTO |
ContactAdditionalAddressDTO |
ContactGroupDTO |
ContactRelationDTO |
ContactDTO |
CreateEditContactDTO |
ContactSectorDTO |
CurrencyDTO |
CreateCurrencyDTO |
EditCurrencyDTO |
ExchangeCurrencyDTO |
DocumentSettingDTO |
FileDTO |
EditFileDTO |
FileUsageDTO |
InvoiceDTO |
InvoicePositionDTO |
InvoiceTaxDTO |
PdfDTO |
LanguageDTO |
AddFileDTO |
EntryDTO |
FileDTO |
ManualEntryDTO |
NoteDTO |
PaymentDTO |
PaymentTypeDTO |
ProjectDTO |
JournalDTO |
SalutationDTO |
TaxDTO |
TitleDTO |
UnitDTO |
UserDTO |
VatPeriodDTO |
In addition to the above, we also provide DTOs to be used for create and edit request for the following:
DTO |
---|
CreateCalendarYearDTO |
CreateEditAdditionalAddressDTO |
CreateEditContactAdditionalAddressDTO |
CreateEditContactGroupDTO |
CreateEditContactRelationDTO |
CreateEditContactDTO |
CreateCurrencyDTO |
EditCurrencyDTO |
EditFileDTO |
AddFileDTO |
CreateEditIbanPaymentDTO |
CreateEntryDTO |
CreateManualEntryDTO |
CreateEditNoteDTO |
CreateEditQrPaymentDTO |
CreateEditSalutationDTO |
CreateEditTitleDTO |
Note: This is the prefered method of interfacing with Requests and Responses however you can still use the json, object and collect methods. and pass arrays to the requests.
use CodebarAg\DocuWare\BexioConnector;
// You can either set the token in the constructor or in the .env file
// PROVIDE TOKEN IN CONSTRUCTOR
$connector = new BexioConnector(token: 'your-token');
// OR
// PROVIDE TOKEN IN .ENV FILE
$connector = new BexioConnector();
/**
* Fetch A List Of Account Groups
*/
$accountGroups = $connector->send(new FetchAListOfAccountGroupsRequest())->dto();
/**
* Fetch A List Of Accounts
*/
$accounts = $connector->send(new FetchAListOfAccountsRequest())->dto();
/**
* Search Accounts
*/
$accounts = $connector->send(new SearchAccountsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Fetch A List Of Addresses
*/
$addresses = $connector->send(new FetchAListOfAddressesRequest())->dto();
/**
* Fetch An Address
*/
$address = $connector->send(new FetchAnAddressRequest(
id: 1
))->dto();
/**
* Search Addresses
*/
$addresses = $connector->send(new SearchAddressesRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Address
*/
$address = $connector->send(new CreateAddressRequest(
data: new CreateEditAddressDTO(
name: 'Test',
subject: 'Test Subject',
description: 'This is a test',
address: 'Test Address',
postcode: '1234',
city: 'Test City',
)
));
/**
* Edit Address
*/
$address = $connector->send(new EditAnAddressRequest(
id: 1,
data: new CreateEditAddressDTO(
name: 'Test Edit',
subject: 'Test Subject Edit',
description: 'This is a test edit',
address: 'Test Address Edit',
postcode: '4567',
city: 'Test City Edit',
)
));
/**
* Delete Address
*/
$address = $connector->send(new DeleteAnAddressRequest(
id: 1
));
/**
* Fetch A List Of Bank Accounts
*/
$bankAccounts = $connector->send(new FetchAListOfBankAccountsRequest())->dto();
/**
* Fetch A Single Bank Account
*/
$bankAccount = $connector->send(new FetchASingleBankAccountRequest(
id: 1
))->dto();
/**
* Fetch A List Of Business Years
*/
$businessYears = $connector->send(new FetchAListOfBusinessYearsRequest())->dto();
/**
* Fetch A Business Year
*/
$businessYear = $connector->send(new FetchABusinessYearRequest(
id: 1
))->dto();
/**
* Fetch A List Of Calendar Years
*/
$calendarYears = $connector->send(new FetchAListOfCalendarYearsRequest())->dto();
/**
* Fetch A Calendar Year
*/
$calendarYear = $connector->send(new FetchACalendarYearRequest(
id: 1
))->dto();
/**
* Fetch A List Of Company Profiles
*/
$companyProfiles = $connector->send(new FetchAListOfCompanyProfilesRequest())->dto();
/**
* Fetch A Company Profile
*/
$companyProfile = $connector->send(new FetchACompanyProfileRequest(
id: 1
))->dto();
/**
* Fetch A List Of Contact Additional Addresses
*/
$contactAdditionalAddresses = $connector->send(new FetchAListOfContactAdditionalAddressesRequest(
contactId: 1
))->dto();
/**
* Fetch A Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new FetchAContactAdditionalAddressRequest(
contactId: 1,
id: 1
))->dto();
/**
* Search Contact Additional Address
*/
$contactAdditionalAddresses = $connector->send(new SearchContactAdditionalAddressesRequest(
contactId: 1,
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new CreateContactAdditionalAddressRequest(
contactId: 1,
data: new CreateEditContactAdditionalAddressDTO(
name: 'Test',
subject: 'Test Subject',
description: 'This is a test',
address: 'Test Address',
postcode: '1234',
city: 'Test City',
)
));
/**
* Edit Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new EditAContactAdditionalAddressRequest(
contactId: 1,
id: 9,
data: new CreateEditContactAdditionalAddressDTO(
name: 'Test Edit',
subject: 'Test Subject Edit',
description: 'This is a test edit',
address: 'Test Address Edit',
postcode: '4567',
city: 'Test City Edit',
)
));
/**
* Delete Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new DeleteAContactAdditionalAddressRequest(
contactId: 1,
id: 9,
));
/**
* Fetch A List Of Contact Groups
*/
$contactGroups = $connector->send(new FetchAListOfContactGroupsRequest())->dto();
/**
* Fetch A Contact Group
*/
$contactGroup = $connector->send(new FetchAContactGroupRequest(
id: 1
))->dto();
/**
* Search Contact Groups
*/
$contactGroups = $connector->send(new SearchContactGroupsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact Group
*/
$contactGroup = $connector->send(new CreateContactGroupRequest(
data: new CreateEditContactGroupDTO(
name: 'Name'
)
));
/**
* Edit Contact Group
*/
$contactGroup = $connector->send(new EditAContactGroupRequest(
id: 1,
data: new CreateEditContactGroupDTO(
name: 'Name'
)
));
/**
* Delete Contact Group
*/
$contactGroup = $connector->send(new DeleteAContactGroupRequest(
id: 1
));
/**
* Fetch A List Of Contact Relations
*/
$contactRelations = $connector->send(new FetchAListOfContactRelationsRequest())->dto();
/**
* Fetch A Contact Relation
*/
$contactRelation = $connector->send(new FetchAContactRelationRequest(
id: 1
))->dto();
/**
* Search Contact Relations
*/
$contactRelations = $connector->send(new SearchContactRelationsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact Relation
*/
$contactRelation = $connector->send(new CreateContactRelationRequest(
data: new CreateEditContactRelationDTO(
contact_id: 1,
contact_sub_id: 2,
description: 'Something',
)
));
/**
* Edit Contact Relation
*/
$contactRelation = $connector->send(new EditAContactRelationRequest(
id: 1,
data: new CreateEditContactRelationDTO(
contact_id: 1,
contact_sub_id: 2,
description: 'Something',
)
));
/**
* Delete Contact Relation
*/
$contactRelation = $connector->send(new DeleteAContactRelationRequest(
id: 1
));
/**
* Fetch A List Of Contacts
*/
$contacts = $connector->send(new FetchAListOfContactsRequest())->dto();
/**
* Fetch A Contact
*/
$contact = $connector->send(new FetchAContactRequest(
id: 1
))->dto();
/**
* Search Contacts
*/
$contacts = $connector->send(new SearchContactsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact
*/
$contact = $connector->send(new CreateContactRequest(
data: new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name'
)
));
/**
* Bulk Create Contacts
*/
$contact = $connector->send(new BulkCreateContactsRequest(
data: [
new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name'
),
new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name 2'
)
]
));
/**
* Edit Contact
*/
$contact = $connector->send(new EditAContactRequest(
id: 1,
data: new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name'
)
));
/**
* Delete Contact
*/
$contact = $connector->send(new DeleteAContactRequest(
id: 1
));
/**
* Restore Contact
*/
$contact = $connector->send(new RestoreAContactRequest(
id: 1
));
/**
* Fetch A List Of Contact Sectors
*/
$contactSectors = $connector->send(new FetchAListOfContactSectorsRequest())->dto();
/**
* Search Contact Sectors
*/
$contactSectors = $connector->send(new SearchContactSectorsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Fetch A List Of Currencies
*/
$currencies = $connector->send(new FetchAListOfCurrenciesRequest())->dto();
/**
* Fetch A Currency
*/
$currency = $connector->send(new FetchACurrencyRequest(
id: 1
))->dto();
/**
* Create Currency
*/
$currency = $connector->send(new CreateCurrencyRequest(
data: new CreateCurrencyDTO(
name: 'JPY',
round_factor: 0.05,
)
));
/**
* Edit Currency
*/
$currency = $connector->send(new EditACurrencyRequest(
id: 1,
data: new EditCurrencyDTO(
round_factor: 0.05,
)
));
/**
* Delete Currency
*/
$currency = $connector->send(new DeleteACurrencyRequest(
id: 1
));
/**
* Fetch All Possible Currency Codes
*/
$currencyCodes = $connector->send(new FetchAllPossibleCurrencyCodesRequest())->dto();
/**
* Fetch Exchange Rates For Currencies
*/
$exchangeRates = $connector->send(new FetchExchangeRatesForCurrenciesRequest(
currencyId: 1
))->dto();
/**
* Fetch A List Of Files
*/
$files = $connector->send(new FetchAListOfFilesRequest())->dto();
/**
* Get A Single File
*/
$file = $connector->send(new GetASingleFileRequest(
id: 1
))->dto();
/**
* Show A File Usage
*/
$fileUsage = $connector->send(new ShowAFileUsageRequest(
id: 1
))->dto();
/**
* Get A File Preview
*/
$filePreview = $connector->send(new GetAFilePreviewRequest(
id: 1
))->stream();
/**
* Download File Download
*/
$fileDownload = $connector->send(new DownloadFileDownloadRequest(
id: 1
))->stream();
/**
* Create A File
*/
$file = $connector->send(new CreateAFileRequest(
data: [
new MultipartValue(
name: 'picture',
value: fopen(__DIR__ . 'image.png', 'r'),
)
],
));
/**
* Edit A File
*/
$file = $connector->send(new EditAFileRequest(
id: 1,
data: new EditFileDTO(
name: 'Test name edited',
is_archived: false,
source_type: 'web',
)
));
/**
* Delete A File
*/
$file = $connector->send(new DeleteAFileRequest(
id: 1
));
/**
* Fetch An Iban Payment
*/
$payment = $connector->send(new GetIbanPaymentRequest(
bank_account_id: 1,
payment_id: 3
))->dto();
/**
* Create Iban Payment
*/
$payment = $connector->send(new CreateIbanPaymentRequest(
bank_account_id: 1,
data: new CreateEditIbanPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Sonnenstrasse',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
iban: 'CH8100700110005554634',
execution_date: '2024-01-08',
is_salary_payment: false,
is_editing_restricted: false,
message: 'Rechnung 1234',
allowance_type: 'no_fee',
)
))->dto();
/**
* Update Iban Payment
*
* NOTE: THE PAYMENT MUST HAVE A STATUS OF OPEN TO BE UPDATED
*/
$payment = $connector->send(new EditIbanPaymentRequest(
bank_account_id: 1,
payment_id: 3,
iban: 'CH8100700110005554634',
id: 3,
data: new CreateEditIbanPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Colchester Place',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
iban: 'CH8100700110005554634',
execution_date: '2024-01-08',
is_salary_payment: false,
is_editing_restricted: false,
message: 'Rechnung 1234',
allowance_type: 'no_fee',
)
))->dto();
/**
* Fetch A List Of Invoices
*/
$invoices = $connector->send(new FetchAListOfInvoicesRequest())->dto();
/**
* Fetch An Invoice
*/
$invoice = $connector->send(new FetchAnInvoiceRequest(
invoice_id: 1
))->dto();
/**
* Create An Invoice
*/
$contacts = $connector->send(new FetchAListOfContactsRequest);
$user = $connector->send(new FetchAuthenticatedUserRequest);
$languages = $connector->send(new FetchAListOfLanguagesRequest);
$banks = $connector->send(new FetchAListOfBankAccountsRequest);
$currencies = $connector->send(new FetchAListOfCurrenciesRequest);
$paymentTypes = $connector->send(new FetchAListOfPaymentTypesRequest);
$units = $connector->send(new FetchAListOfUnitsRequest);
$accounts = $connector->send(new FetchAListOfAccountsRequest);
$taxes = $connector->send(new FetchAListOfTaxesRequest(scope: 'active', types: 'sales_tax'));
$newInvoice = InvoiceDTO::fromArray([
'title' => 'Test',
'contact_id' => $contacts->dto()->first()->id,
'user_id' => $user->dto()->id,
'pr_project_id' => null,
'language_id' => $languages->dto()->first()->id,
'bank_account_id' => $banks->dto()->first()->id,
'currency_id' => $currencies->dto()->first()->id,
'payment_type_id' => $paymentTypes->dto()->first()->id,
'mwst_type' => 1,
'mwst_is_net' => true,
'show_position_taxes' => true,
'is_valid_from' => now()->format('Y-m-d h:m:s'),
'is_valid_to' => now()->addDays(5)->format('Y-m-d h:m:s'),
'api_reference' => Str::uuid(),
'positions' => [
InvoicePositionDTO::fromArray([
'type' => 'KbPositionText',
'show_pos_nr' => true,
'text' => Str::uuid(),
]),
InvoicePositionDTO::fromArray([
'type' => 'KbPositionCustom',
'amount' => 1,
'unit_id' => $units->dto()->first()->id,
'account_id' => $accounts->dto()->filter(fn ($account) => $account->account_type_enum === AccountTypeEnum::ACTIVE_ACCOUNTS())->first()->id,
'tax_id' => $taxes->dto()->first()->id,
'text' => Str::uuid(),
'unit_price' => 100,
'discount_in_percent' => '0',
]),
],
]);
$invoice = $connector->send(new CreateAnInvoiceRequest(invoice: $newInvoice))->dto();
/**
* Edit An Invoice
*/
$editInvoice = $connector->send(new FetchAnInvoiceRequest(invoice_id: 1))->dto();
$editInvoice->title = 'Test Invoice';
$invoice = $connector->send(new EditAnInvoiceRequest(invoice_id: 1, invoice: $editInvoice));
/**
* Delete An Invoice
*/
$response = $connector->send(new DeleteAnInvoiceRequest(
invoice_id: 1
));
/**
* Cancel An Invoice
*/
$response = $connector->send(new CancelAnInvoiceRequest(
invoice_id: 1
));
/**
* Create A Default Position For An Invoice
*/
$units = $connector->send(new FetchAListOfUnitsRequest);
$accounts = $connector->send(new FetchAListOfAccountsRequest);
$taxes = $connector->send(new FetchAListOfTaxesRequest(scope: 'active', types: 'sales_tax'));
$position = InvoicePositionDTO::fromArray([
'type' => 'KbPositionCustom',
'amount' => 1,
'unit_id' => $units->dto()->first()->id,
'account_id' => $accounts->dto()->filter(fn ($account) => $account->account_type === 1)->first()->id,
'tax_id' => $taxes->dto()->first()->id,
'text' => Str::uuid(),
'unit_price' => 100,
'discount_in_percent' => '0',
]);
$response = $connector->send(new CreateADefaultPositionRequest(
kb_document_type: 'kb_invoice',
invoice_id: 1,
position: $position,
));
/**
* Create A Sub Position For An Invoice
*/
$position = InvoicePositionDTO::fromArray([
'type' => 'KbSubPosition',
'text' => Str::uuid(),
'show_pos_nr' => true,
]);
$response = $connector->send(new CreateASubPositionRequest(
kb_document_type: 'kb_invoice',
invoice_id: 1,
position: $position,
));
/**
* Show PDF
*/
$pdf = $connector->send(new ShowPdfRequest(
invoice_id: 1
))->dto();
/**
* Saving PDF from response
*/
Storage::disk('local')->put('your/directory/'. $pdf->name, base64_decode($pdf->content));
/**
* Download PDF from response
*/
return response(base64_decode($pdf->content))
->header('Content-Type', $pdf->mime)
->header('Content-Disposition', 'attachment; filename="'.$pdf->name.'"')
->header('Content-Length', $pdf->size);
/**
* Fetch A List Of Languages
*/
$languages = $connector->send(new FetchAListOfLanguagesRequest())->dto();
/**
* Fetch A List Of Manual Entries
*/
$manualEntries = $connector->send(new FetchAListOfManualEntriesRequest())->dto();
/**
* Fetch Files Of Accounting Entry
*/
$files = $connector->send(new FetchFilesOfAccountingEntryRequest(
manual_entry_id: 1,
entry_id: 1
))->dto();
/**
* Fetch File Of Accounting Entry Line
*/
$file = $connector->send(new FetchFileOfAccountingEntryLineRequest(
manual_entry_id: 1,
entry_id: 1,
line_id: 1
))->dto();
/**
* Create Manual Entry
*/
$manualEntry = $connector->send(new CreateManualEntryRequest(
data: new CreateManualEntryDTO(
type: 'manual_single_entry',
date: '2023-12-13',
reference_nr: '1234',
entries: collect([
new CreateEntryDTO(
debit_account_id: 89,
credit_account_id: 90,
tax_id: 10,
tax_account_id: 89,
description: 'Something',
amount: 100,
currency_id: 1,
currency_factor: 1,
),
]),
)
));
/**
* Add File To Accounting Entry Line
*/
$manualEntry = $connector->send(new AddFileToAccountingEntryLineRequest(
manual_entry_id: 1,
entry_id: 1,
data: new AddFileDTO(
name: 'fileName',
absolute_file_path_or_stream: fopen('image.png', 'r'),
filename: 'image.png',
)
));
/**
* Get Next Reference Number
*/
$referenceNumber = $connector->send(new GetNextReferenceNumberRequest())->dto();
/**
* Fetch A List Of Notes
*/
$notes = $connector->send(new FetchAListOfNotesRequest())->dto();
/**
* Fetch A Note
*/
$note = $connector->send(new FetchANoteRequest(
id: 1
))->dto();
/**
* Search Notes
*/
$notes = $connector->send(new SearchNotesRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Note
*/
$note = $connector->send(new CreateNoteRequest(
data: new CreateEditNoteDTO(
title: 'Test',
content: 'Test Content',
is_public: true,
)
));
/**
* Edit Note
*/
$note = $connector->send(new EditANoteRequest(
id: 1,
data: new CreateEditNoteDTO(
title: 'Test Edit',
content: 'Test Content Edit',
is_public: true,
)
));
/**
* Delete Note
*/
$note = $connector->send(new DeleteANoteRequest(
id: 1
));
/**
* Fetch A List Of Payments
*/
$payments = $connector->send(new FetchAListOfPaymentsRequest())->dto();
/**
* Cancel A Payment
*/
$payment = $connector->send(new CancelAPaymentRequest(
payment_id: 1
))->dto();
/**
* Delete A Payment
*/
$payment = $connector->send(new DeleteAPaymentRequest(
payment_id: 1
))->json();
/**
* Fetch A Qr Payment
*/
$payment = $connector->send(new GetQrPaymentRequest(
bank_account_id: 1,
payment_id: 4
))->dto();
/**
* Create A Qr Payment
*/
$connector->send(new CreateQrPaymentRequest(
bank_account_id: 1,
data: new CreateEditQrPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Sonnenstrasse',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
execution_date: '2024-01-08',
iban: 'CH8100700110005554634',
qr_reference_nr: null,
additional_information: null,
is_editing_restricted: false,
)
))->dto();
/**
* Update A Qr Payment
*
* NOTE: THE PAYMENT MUST HAVE A STATUS OF OPEN TO BE UPDATED
*/
$payment = $connector->send(new EditQrPaymentRequest(
bank_account_id: 1,
payment_id: 4,
iban: '8100700110005554634',
id: 4,
data: new CreateEditQrPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Colchester Place',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
execution_date: '2024-01-08',
iban: 'CH8100700110005554634',
)
))->dto();
/**
* Journal
*/
$journals = $connector->send(new JournalRequest())->dto();
/**
* Fetch A List Of Salutations
*/
$salutations = $connector->send(new FetchAListOfSalutationsRequest())->dto();
/**
* Fetch A Salutation
*/
$salutation = $connector->send(new FetchASalutationRequest(
id: 1
))->dto();
/**
* Search Salutations
*/
$salutations = $connector->send(new SearchSalutationsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Salutation
*/
$salutation = $connector->send(new CreateSalutationRequest(
data: new CreateEditSalutationDTO(
name: 'Test',
is_archived: false,
)
));
/**
* Edit Salutation
*/
$salutation = $connector->send(new EditASalutationRequest(
id: 1,
data: new CreateEditSalutationDTO(
name: 'Test Edit',
is_archived: false,
)
));
/**
* Delete Salutation
*/
$salutation = $connector->send(new DeleteASalutationRequest(
id: 1
));
/**
* Fetch A List Of Taxes
*/
$taxes = $connector->send(new FetchAListOfTaxesRequest())->dto();
/**
* Fetch A Tax
*/
$tax = $connector->send(new FetchATaxRequest(
id: 1
))->dto();
/**
* Delete A Tax
*/
$tax = $connector->send(new DeleteATaxRequest(
id: 1
));
/**
* Fetch A List Of Titles
*/
$titles = $connector->send(new FetchAListOfTitlesRequest())->dto();
/**
* Fetch A Title
*/
$title = $connector->send(new FetchATitleRequest(
id: 1
))->dto();
/**
* Search Titles
*/
$titles = $connector->send(new SearchTitlesRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Title
*/
$title = $connector->send(new CreateTitleRequest(
data: new CreateEditTitleDTO(
name: 'Test',
is_archived: false,
)
));
/**
* Edit Title
*/
$title = $connector->send(new EditATitleRequest(
id: 1,
data: new CreateEditTitleDTO(
name: 'Test Edit',
is_archived: false,
)
));
/**
* Delete Title
*/
$title = $connector->send(new DeleteATitleRequest(
id: 1
));
/**
* Fetch A List Of VAT Periods
*/
$vatPeriods = $connector->send(new FetchAListOfVatPeriodsRequest())->dto();
/**
* Fetch A VAT Period
*/
$vatPeriod = $connector->send(new FetchAVatPeriodRequest(
id: 1
))->dto();
Copy your own phpunit.xml-file.
cp phpunit.xml.dist phpunit.xml
Run the tests:
./vendor/bin/pest
Please see CHANGELOG for recent changes.
Please see CONTRIBUTING for details.
composer test
./vendor/bin/pint
Please review our security policy on reporting security vulnerabilities.
- Rhys Lees
- Sebastian Fix
- All Contributors
- Skeleton Repository from Spatie
- Laravel Package Training from Spatie
- Laravel Saloon by Sam Carré
The MIT License (MIT). Please have a look at License File for more information.