1. Go to this page and download the library: Download factuarea/factuarea-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
factuarea / factuarea-php example snippets
actuarea\Sdk\Custom\FactuareaClient;
// The key prefix selects the environment:
// fact_test_… → sandbox fact_live_… → production
$factuarea = FactuareaClient::create(getenv('FACTUAREA_API_KEY'));
// List the first page of invoices.
$response = $factuarea->invoices->publicApiV1InvoicesList();
foreach ($response->paginatedList?->data ?? [] as $invoice) {
echo $invoice->id, PHP_EOL;
}
use Factuarea\Sdk\Factuarea;
use Factuarea\Sdk\Models\Components\Security;
$factuarea = Factuarea::builder()
->setSecurity(new Security(bearerAuth: getenv('FACTUAREA_API_KEY')))
->build();
// Auto-generated key — safe to retry.
$factuarea->invoices->publicApiV1InvoicesCreate($body);
// Or pin your own key for app-level deduplication.
$factuarea->invoices->publicApiV1InvoicesCreate($body, idempotencyKey: 'order-4711');
use Factuarea\Sdk\Custom\Pagination\PageIterator;
use Factuarea\Sdk\Models\Operations\PublicApiV1InvoicesListRequest;
$pages = new PageIterator(
fn (?string $cursor) => $factuarea->invoices->publicApiV1InvoicesList(
new PublicApiV1InvoicesListRequest(startingAfter: $cursor),
)->rawResponse,
);
foreach ($pages->items() as $invoice) {
// one invoice at a time, across every page
}
use Factuarea\Sdk\Models\Errors\ErrorThrowable;
try {
$factuarea->invoices->publicApiV1InvoicesCreate($body);
} catch (ErrorThrowable $e) {
$error = $e->container->error;
echo $error->type->value; // e.g. "invalid_request_error"
echo $error->code; // e.g. "parameter_invalid"
echo $error->param; // e.g. "client_id"
echo $error->requestId; // e.g. "req_abc123" — quote this to support
}
use Factuarea\Sdk\Custom\Webhooks\WebhookVerifier;
use Factuarea\Sdk\Custom\Webhooks\WebhookSignatureException;
$verifier = new WebhookVerifier();
$rawBody = file_get_contents('php://input');
$signature = $_SERVER['HTTP_FACTUAREA_SIGNATURE'] ?? '';
try {
$event = $verifier->verify($rawBody, $signature, getenv('FACTUAREA_WEBHOOK_SECRET'));
// $event is the decoded, authenticated payload
} catch (WebhookSignatureException $e) {
http_response_code(400);
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Operations;
$sdk = Sdk\Factuarea::builder()
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
$request = new Operations\PublicApiV1ProformasAcceptRequest(
proforma: '<value>',
idempotencyKey: '01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
body: new Components\AcceptProformaRequest(
reason: 'Cliente confirma pedido por telefono',
),
);
$response = $sdk->proformas->publicApiV1ProformasAccept(
request: $request
);
if ($response->object !== null) {
// handle response
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Operations;
$sdk = Sdk\Factuarea::builder()
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
$request = new Operations\PublicApiV1ProformasAcceptRequest(
proforma: '<value>',
idempotencyKey: '01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
body: new Components\AcceptProformaRequest(
reason: 'Cliente confirma pedido por telefono',
),
);
$response = $sdk->proformas->publicApiV1ProformasAccept(
request: $request
);
if ($response->object !== null) {
// handle response
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Operations;
$sdk = Sdk\Factuarea::builder()
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
$request = new Operations\PublicApiV1RecurringInvoicesLogsRequest(
recurringInvoice: '<value>',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
);
$responses = $sdk->recurringInvoices->publicApiV1RecurringInvoicesLogs(
request: $request
);
foreach ($responses as $response) {
if ($response->statusCode === 200) {
// handle response
}
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Operations;
use Factuarea\Sdk\Utils\Retry;
$sdk = Sdk\Factuarea::builder()
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
$request = new Operations\PublicApiV1ProformasAcceptRequest(
proforma: '<value>',
idempotencyKey: '01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
body: new Components\AcceptProformaRequest(
reason: 'Cliente confirma pedido por telefono',
),
);
$response = $sdk->proformas->publicApiV1ProformasAccept(
request: $request,
options: Utils\Options->builder()->setRetryConfig(
new Retry\RetryConfigBackoff(
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
retryConnectionErrors: false,
))->build()
);
if ($response->object !== null) {
// handle response
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Operations;
use Factuarea\Sdk\Utils\Retry;
$sdk = Sdk\Factuarea::builder()
->setRetryConfig(
new Retry\RetryConfigBackoff(
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
retryConnectionErrors: false,
)
)
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
$request = new Operations\PublicApiV1ProformasAcceptRequest(
proforma: '<value>',
idempotencyKey: '01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
body: new Components\AcceptProformaRequest(
reason: 'Cliente confirma pedido por telefono',
),
);
$response = $sdk->proformas->publicApiV1ProformasAccept(
request: $request
);
if ($response->object !== null) {
// handle response
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Errors;
use Factuarea\Sdk\Models\Operations;
$sdk = Sdk\Factuarea::builder()
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
try {
$request = new Operations\PublicApiV1ProformasAcceptRequest(
proforma: '<value>',
idempotencyKey: '01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
body: new Components\AcceptProformaRequest(
reason: 'Cliente confirma pedido por telefono',
),
);
$response = $sdk->proformas->publicApiV1ProformasAccept(
request: $request
);
if ($response->object !== null) {
// handle response
}
} catch (Errors\ErrorThrowable $e) {
// handle $e->$container data
throw $e;
} catch (Errors\ErrorThrowable $e) {
// handle $e->$container data
throw $e;
} catch (Errors\APIException $e) {
// handle default exception
throw $e;
}
declare(strict_types=1);
Date;
use Factuarea\Sdk;
use Factuarea\Sdk\Models\Components;
use Factuarea\Sdk\Models\Operations;
$sdk = Sdk\Factuarea::builder()
->setServerURL('https://api.factuarea.com/v1')
->setSecurity(
new Components\Security(
http: '<YOUR_BEARER_TOKEN_HERE>',
)
)
->build();
$request = new Operations\PublicApiV1ProformasAcceptRequest(
proforma: '<value>',
idempotencyKey: '01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b',
factuareaVersion: LocalDate::parse('2026-06-01'),
xActiveProfile: '01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c',
body: new Components\AcceptProformaRequest(
reason: 'Cliente confirma pedido por telefono',
),
);
$response = $sdk->proformas->publicApiV1ProformasAccept(
request: $request
);
if ($response->object !== null) {
// handle response
}
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.