PHP code example of matiz-studio-creative / sri-toolkit
1. Go to this page and download the library: Download matiz-studio-creative/sri-toolkit 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/ */
matiz-studio-creative / sri-toolkit example snippets
use MTZ\Toolkit\Catalogs\Catalogs;
$catalogRegistry = Catalogs::registry();
$catalogRegistry->get('vat-rates', '4'); // VAT 15%
$catalogRegistry->list('payment-methods'); // [{ code: '01', ... }, ...
$catalogRegistry->getMeta('vat-rates'); // source, updatedAt, notes
$catalogRegistry->listCatalogs(); // catalog names
$catalogRegistry->override('vat-rates', [
'4' => ['code' => '4', 'description' => 'VAT 16%', 'rate' => 16],
]);
$catalogRegistry->reset('vat-rates');
use MTZ\Toolkit\AccessKeyGenerator\AccessKeyGenerator;
use MTZ\Toolkit\AccessKeyGenerator\Data\AccessKeyData;
use MTZ\Toolkit\AccessKeyGenerator\Enums\DocumentType;
use MTZ\Toolkit\AccessKeyGenerator\Enums\Environment as AccessKeyEnvironment;
use MTZ\Toolkit\Sender\Config\SenderConfig;
use MTZ\Toolkit\Sender\Enums\Environment as SenderEnvironment;
use MTZ\Toolkit\Sender\Sender;
use MTZ\Toolkit\Signer\Signer;
use MTZ\Toolkit\XMLMaker\Data\XmlGenerationData;
use MTZ\Toolkit\XMLMaker\Enums\XmlDocumentType;
use MTZ\Toolkit\XMLMaker\Enums\XmlEnvironment;
use MTZ\Toolkit\XMLMaker\XMLMaker;
$accessKey = (new AccessKeyGenerator())->generate(
AccessKeyData::make(
emissionDate: '2026-05-13',
documentType: DocumentType::Invoice,
ruc: '1790012345001',
environment: AccessKeyEnvironment::Testing,
sequential: 25,
numericCode: '12345678',
establishmentCode: '001',
emissionPointCode: '001',
),
);
$generatedXml = (new XMLMaker())->generate(
XmlGenerationData::make(
documentType: XmlDocumentType::Invoice,
environment: XmlEnvironment::Testing,
accessKey: $accessKey,
data: [
'date' => '13/05/2026',
'sequential' => '000000025',
'company' => [
'ruc' => '1790012345001',
'legal_name' => 'MTZ TEST S.A.',
'trade_name' => 'MTZ TEST',
'head_office_address' => 'Quito',
],
'establishment' => [
'code' => '001',
],
'emission_point' => [
'code' => '001',
],
'customer' => [
'identification_type' => '05',
'identification_number' => '1710034065',
'name' => 'CONSUMIDOR FINAL',
'address' => 'Quito',
],
'establishment_address' => 'Quito',
'
}
$authorizedXml = $result->authorizationResult?->authorizedDocument?->xml;
use MTZ\Toolkit\AccessKeyGenerator\AccessKeyGenerator;
use MTZ\Toolkit\AccessKeyGenerator\Data\AccessKeyData;
use MTZ\Toolkit\AccessKeyGenerator\Enums\DocumentType;
use MTZ\Toolkit\AccessKeyGenerator\Enums\Environment;
$accessKey = (new AccessKeyGenerator())->generate(
AccessKeyData::make(
emissionDate: '2026-05-13',
documentType: DocumentType::Invoice,
ruc: '1790012345001',
environment: Environment::Testing,
sequential: 25,
numericCode: '12345678',
establishmentCode: '001',
emissionPointCode: '001',
),
);
use MTZ\Toolkit\XMLMaker\Data\XmlGenerationData;
use MTZ\Toolkit\XMLMaker\Enums\XmlDocumentType;
use MTZ\Toolkit\XMLMaker\Enums\XmlEnvironment;
use MTZ\Toolkit\XMLMaker\XMLMaker;
$generatedXml = (new XMLMaker())->generate(
XmlGenerationData::make(
documentType: XmlDocumentType::Invoice,
environment: XmlEnvironment::Testing,
accessKey: $accessKey,
data: $invoicePayload,
),
);
$xml = $generatedXml->toString();
use MTZ\Toolkit\Signer\Signer;
$signedXml = (new Signer(
certificatePath: '/secure/path/certificate.p12',
certificatePassword: getenv('SRI_CERTIFICATE_PASSWORD') ?: '',
))
->loadXml($xml)
->sign();
use MTZ\Toolkit\Sender\Config\SenderConfig;
use MTZ\Toolkit\Sender\Enums\Environment;
use MTZ\Toolkit\Sender\Sender;
$sender = new Sender(
config: new SenderConfig(
environment: Environment::Production,
maxAttempts: 5,
retryDelay: 1,
sendDelay: 3,
soapOptions: [
'trace' => 0,
],
),
);
$result = $sender->send($accessKey, $signedXml);
if ($result->success) {
$authorizedDocument = $result->authorizationResult?->authorizedDocument;
}