pronesoft-rd / ecf-sdk-php
## Descripción general API de nivel productivo para emitir Comprobantes Fiscales Electrónicos (e-CF) en la República Dominicana a través de la plataforma Pronesoft. ## Autenticación — OAuth 2.0 Client Credentials ### Pasos 1. Obtén tus credenciales desde el portal: - Sandbox: https://ecf.sandbo
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^7.3
- guzzlehttp/psr7: ^1.7 || ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.5
- phpunit/phpunit: ^8.0 || ^9.0
This package is not auto-updated.
Last update: 2026-06-10 19:01:11 UTC
README
Descripción general
API de nivel productivo para emitir Comprobantes Fiscales Electrónicos (e-CF) en la República Dominicana a través de la plataforma Pronesoft.
Este SDK encapsula por completo el flujo de autenticación, renovación y reintento de tokens de seguridad mediante el wrapper principal EcfClient.
Primeros Pasos (Getting Started)
La forma recomendada de interactuar con el SDK es a través del cliente unificado EcfClient. Este se encarga de realizar la autenticación inicial, refrescar el token antes de su vencimiento e inyectar las cabeceras requeridas de forma transparente.
<?php require_once __DIR__ . '/vendor/autoload.php'; use PronesoftEcfSdk\EcfClient; use PronesoftEcfSdk\ApiException; // 1. Configurar credenciales (ejemplo con Sandbox) $host = 'https://api.ecf.sandbox.pronesoft.com/api/v1'; $tenantId = 'SBX-TU-EMPRESA-UUID'; // Mapeado como client_id para el token $clientSecret = 'tu-client-secret-aqui'; try { // 2. Inicializar el cliente único (se autentica automáticamente en el constructor) $client = new EcfClient($host, $tenantId, $clientSecret); // 3. Consumir cualquier servicio de negocio directamente $documentsSentApi = $client->documentsSent(); $logs = $documentsSentApi->getSentDocumentLogs('uuid-del-documento'); print_r($logs); } catch (ApiException $e) { echo "Error retornado por la API: " . $e->getResponseBody() . "\n"; } catch (\Exception $e) { echo "Error general: " . $e->getMessage() . "\n"; }
Delegación multi-empresa (Sucursales)
Para actuar en nombre de una empresa asociada (sucursal), puedes usar el método forTenant para obtener una instancia del cliente configurada con la cabecera x-tenant-id:
$sucursalClient = $client->forTenant('uuid-de-la-sucursal'); $logs = $sucursalClient->documentsSent()->getSentDocumentLogs('uuid-del-documento');
Instalación y Uso
Requisitos
PHP 8.1 y superior.
Instalación vía Composer
Para instalar las dependencias en tu proyecto utilizando Composer, agrega lo siguiente a tu archivo composer.json:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/ProneSoftSRL/pronesoft-ecf-sdk-php.git"
}
],
"require": {
"pronesoft-rd/ecf-sdk-php": "dev-main"
}
}
Luego ejecuta en tu terminal:
composer install
Instalación Manual
Descarga los archivos del repositorio e incluye el cargador automático:
<?php require_once('/ruta/a/pronesoft-ecf-sdk-php/vendor/autoload.php');
API Endpoints
All URIs are relative to https://api.ecf.sandbox.pronesoft.com/api/v1
| Class | Method | HTTP request | Description |
|---|---|---|---|
| AssociatedCompaniesApi | createAssociatedCompany | POST /associated-companies | Crear empresa asociada / sucursal |
| AssociatedCompaniesApi | deleteAssociatedCompany | DELETE /associated-companies/{companyId} | Eliminar empresa asociada |
| AssociatedCompaniesApi | getCompanyDocumentMetrics | GET /associated-companies/{companyId}/documents-metrics | Métricas de documentos de la empresa |
| AssociatedCompaniesApi | getCompanyMetrics | GET /associated-companies/{companyId}/metrics | Métricas de la empresa |
| AssociatedCompaniesApi | listAssociatedCompanies | GET /associated-companies | Listar empresas asociadas / sucursales |
| AssociatedCompaniesApi | updateAssociatedCompany | PUT /associated-companies/{companyId} | Actualizar empresa asociada |
| AuthenticationApi | getAccessToken | POST /oauth/token | Obtener token de acceso (OAuth 2.0) |
| AutomatedCertificationApi | downloadCertification | GET /dgii-ecf/automated-certification/{id}/download | Descargar ZIP de certificación |
| AutomatedCertificationApi | getCertificationStatus | GET /dgii-ecf/automated-certification/{id}/status | Estado del proceso de certificación |
| AutomatedCertificationApi | listCertificationNiches | GET /dgii-ecf/automated-certification/niches | Listar nichos de certificación |
| AutomatedCertificationApi | startCertification | POST /dgii-ecf/automated-certification/start | Iniciar proceso de certificación |
| CommercialApprovalsApi | getCommercialApprovalById | GET /documents/approvals/{id} | Obtener aprobación comercial por ID |
| CommercialApprovalsApi | listCommercialApprovals | GET /documents/approvals | Listar aprobaciones comerciales |
| DigitalCertificatesApi | uploadCertificate | POST /{rnc}/certificates | Subir certificado digital (P12/PFX) |
| DocumentsReceivedApi | getReceivedDocumentById | GET /documents/received/{id} | Obtener documento recibido por ID |
| DocumentsReceivedApi | getReceivedDocumentStatsBySupplier | GET /documents/received/stats/by-supplier | Top 10 proveedores por volumen de documentos recibidos |
| DocumentsReceivedApi | getReceivedDocumentStatsSummary | GET /documents/received/stats/summary | Estadísticas de documentos recibidos |
| DocumentsReceivedApi | listReceivedDocuments | GET /documents/received | Listar documentos recibidos |
| DocumentsSentApi | downloadSentDocumentXml | GET /documents/download | Descargar XML del documento |
| DocumentsSentApi | getSentDocumentById | GET /documents/{id} | Obtener detalle del documento |
| DocumentsSentApi | getSentDocumentLogs | GET /documents/logs/{id} | Logs de procesamiento del documento |
| DocumentsSentApi | getSentDocumentStats | GET /documents/stats/summary | Estadísticas de documentos enviados |
| DocumentsSentApi | getSentDocumentStatsByEnvironment | GET /documents/stats/by-environment | Estadísticas agrupadas por ambiente y estado |
| DocumentsSentApi | getSentDocumentStatusOptions | GET /documents/status-options | Opciones de filtro de estado disponibles |
| DocumentsSentApi | getSentDocumentXml | GET /documents/sent/{id}/xml | Descargar XML del documento por ID |
| DocumentsSentApi | listSentDocuments | GET /documents/sent | Listar documentos enviados |
| ECFSubmissionApi | getEcfStats | GET /{environment}/ecf/responses/stats | Obtener estadísticas de envíos (últimos 30 días) |
| ECFSubmissionApi | getEcfStatus | GET /{environment}/ecf/status/{id} | Consultar estado del documento por ID interno |
| ECFSubmissionApi | getEcfSubmissionHistory | GET /{environment}/ecf/responses/history | Historial de envíos (paginado) |
| ECFSubmissionApi | submitEcf | POST /{environment}/ecf/submit | Enviar documento e-CF a la DGII |
| ReportsApi | export606 | GET /dgii/606/export | Exportar Formato 606 (Compras) |
| ReportsApi | exportSentDocuments | GET /dgii/sent/export | Exportar reporte de documentos enviados |
| TaxSequencesApi | createTaxSequence | POST /tax-sequences/create | Crear nueva secuencia de NCF |
| TaxSequencesApi | getNextNumber | GET /tax-sequences/next | Obtener siguiente número fiscal disponible |
| TaxSequencesApi | listTaxSequences | GET /tax-sequences | Listar secuencias de NCF |
| TaxSequencesApi | updateTaxSequence | PATCH /tax-sequences/update | Actualizar secuencia de NCF |
| TaxSequencesApi | voidTaxSequence | POST /tax-sequences/void | Anular rango de números fiscales |
| WebhookConfigurationApi | getWebhook | GET /{rnc}/webhooks/{webhookId} | Detalle de un webhook |
| WebhookConfigurationApi | getWebhookStats | GET /{rnc}/webhooks/{webhookId}/stats | Estadísticas de entregas del webhook |
| WebhookConfigurationApi | listWebhooks | GET /{rnc}/webhooks | Listar configuraciones de webhooks |
Models
- AccountType
- AdditionalInfo
- AdditionalTax
- AlternativeCurrency
- ApprovalItem
- ApprovalListResponse
- AssociatedCompany
- AssociatedCompanySubscription
- AssociatedCompanySubscriptionPlan
- BillingIndicator
- BillingInvoiceReadyPayload
- BranchCreatedPayload
- BranchStatusChangedPayload
- Buyer
- CertificateExpiringPayload
- CertificationCompletedPayload
- CertificationNiche
- CertificationNicheNicheItemsInner
- CertificationStatus
- CommercialApprovalPayload
- CompanyDocumentMetrics
- CompanyDocumentMetricsGroupByStatusInner
- CompanyDocumentMetricsGroupByStatusInnerCount
- CompanyDocumentMetricsMainBusiness
- CompanyDocumentMetricsTotals
- CompanyMetrics
- CompanyMetricsDocumentsStatus
- ContingencyActivatedPayload
- CreateAssociatedCompany201Response
- CreateTaxSequence201Response
- CreateTaxSequenceRequest
- DeleteAssociatedCompany200Response
- DgiiMessage
- DiscountOrSurcharge
- DocumentReceivedPayload
- DocumentStatsResponse
- DocumentStatsResponseByStatusValue
- DocumentStatus
- DocumentStatusChangedPayload
- DocumentValidationErrorPayload
- EcfHistoryItem
- EcfStatsResponse
- EcfStatusResponse
- EcfSubmitResponse
- EcfSubmitResponseCompanyIdentification
- ElectronicDocument
- Environment
- ErrorResponse
- GetEcfSubmissionHistory200Response
- GetNextNumber200Response
- GetNextNumber200ResponseData
- GetReceivedDocumentStatsBySupplier200ResponseInner
- GetSentDocumentLogs200ResponseInner
- GetSentDocumentStatusOptions200ResponseInner
- InvoiceType
- InvoiceTypeSequence
- Item
- ItemAdditionalTax
- ItemAlternativeCurrency
- ItemAmount
- ItemCodesInner
- ItemDiscountInner
- ItemMiningInfo
- ItemQuantity
- ItemSurchargeInner
- ItemUnitPrice
- ItemWithheldITBISAmount
- LegalStatus
- ListTaxSequences200Response
- MemberInvitedPayload
- MemberJoinedPayload
- MemberRemovedPayload
- OAuthTokenRequest
- OAuthTokenResponse
- Page
- PaginationMeta
- PaymentForm
- PaymentMethod
- PlanPaymentFailedPayload
- PlanUsageAlertPayload
- PrintFormat
- ProcessingLog
- PublicDocumentStatus
- RateLimitErrorResponse
- ReceivedDocument
- ReceivedDocumentListResponse
- ReceivedDocumentStatsResponse
- ReferenceInfo
- SecurityApiKeyRotatedPayload
- SecurityNewLoginPayload
- SentDocumentDetail
- SentDocumentListResponse
- SentDocumentSummary
- SentDocumentSummaryBusiness
- SequenceDepletedPayload
- SequenceVoidedPayload
- StartCertification200Response
- StartCertificationRequest
- Subquantity
- Subtotal
- TaxSequence
- TaxSequenceCreated
- Totals
- TotalsItbisRate1
- TotalsItbisRate2
- TotalsItbisRate3
- TotalsTotalAmount
- Transport
- UpdateTaxSequenceRequest
- UploadCertificateResponse
- VoidTaxSequence200Response
- VoidTaxSequence200ResponseData
- VoidTaxSequenceRequest
- WebhookConfigDetail
- WebhookConfigResponse
- WebhookEventType
- WebhookNotificationPayload
- WebhookNotificationPayloadData
- WebhookStats
- WebhookStatsStats
Authorization
Authentication schemes defined for the API:
bearerAuth
- Type: Bearer authentication (JWT)
oauth2
- Type:
OAuth - Flow:
application - Authorization URL: ``
- Scopes:
- business:read: Consultar datos de la empresa.
- business:create: Crear una nueva empresa.
- business:update: Actualizar datos de la empresa.
- members:read: Ver miembros del equipo.
- members:invite: Invitar nuevos miembros.
- members:revoke: Revocar acceso de miembros.
- certificates:read: Ver certificados digitales.
- certificates:upload: Subir nuevos certificados.
- certificates:update: Actualizar certificados existentes.
- documents:read: Listar y consultar detalles de documentos.
- documents:create: Crear borradores o documentos internos.
- documents:send: Enviar e-CF a la DGII.
- documents:receive: Recibir e-CF de terceros.
- documents:update: Modificar metadatos de documentos.
- approvals:read: Ver estados de aprobación.
- approvals:commercial: Realizar aprobaciones o rechazos comerciales.
- sequences:read: Ver rangos de NCF/e-NCF.
- sequences:create: Solicitar o agregar nuevas secuencias.
- sequences:update: Modificar configuraciones de secuencias.
- sequences:cancel: Cancelar secuencias no utilizadas.
- business_info:read: Acceder a estadísticas y métricas del dashboard.
- certification:read: Ver progreso de certificación DGII.
- certification:write: Ejecutar pruebas de certificación automática DGII.
- reports:read: Generar y exportar reportes (ej. formato 606).
Tests
To run the tests, use:
composer install vendor/bin/phpunit
Author
About this package
This PHP package is automatically generated by the OpenAPI Generator project:
- API version:
1.2.0- Generator version:
7.21.0
- Generator version:
- Build package:
org.openapitools.codegen.languages.PhpClientCodegen