Ir al contenido
Documentación

Suscripciones

Crear una suscripción mensual con facturación fiscal automática

POST
/v1/subscriptions
curl --request POST \
--url https://api.timbro.do/v1/subscriptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "subscriptionReference": "example", "customer": { "customerReference": "example", "name": "example", "email": "hello@example.com" }, "currency": "DOP", "items": [ { "id": "example", "description": "example", "product": { "id": "example", "sku": "example", "name": "example", "description": "example", "imageUrl": "https://example.com" }, "quantity": "example", "unit": "barrel", "unitPrice": "example", "kind": "good", "tax": { "kind": "itbis_18", "included": true }, "legalTip": { "applied": true }, "group": "example" } ], "interval": { "unit": "month" }, "invoicing": { "type": "E31", "buyer": { "kind": "anonymous" }, "recipientEmail": "hello@example.com", "isTypeLocked": true, "isBuyerLocked": true, "governmentEligibility": { "entityKind": "central_government", "authorityReference": "example" }, "mode": "automatic" } }'
Media typeapplication/json
object
subscriptionReference
obligatorio
string
>= 1 characters <= 128 characters
customer
obligatorio
object
customerReference
obligatorio
string
>= 1 characters <= 128 characters
name
obligatorio
string
>= 1 characters <= 150 characters
email
obligatorio
string format: email
<= 254 characters
currency
obligatorio
string
Valor permitido: DOP
items
obligatorio
Array<object>
>= 1 items <= 100 items
object
description
obligatorio
string
>= 1 characters <= 80 characters
unitPrice
obligatorio
string
/^(0|[1-9][0-9]{0,15})(\.[0-9]{1,4})?$/
tax
obligatorio
object
kind
obligatorio
Cualquiera de:
string
Valor permitido: itbis_18
included
obligatorio
boolean
id
string
>= 1 characters <= 128 characters
product

Metadatos de presentación. Se excluyen del contenido fiscal canónico.

object
id
obligatorio
string
>= 1 characters <= 128 characters
sku
string
>= 1 characters <= 128 characters
name
string
>= 1 characters <= 256 characters
description
string
>= 1 characters <= 500 characters
imageUrl
string format: uri
<= 2048 characters
quantity
string
/^(?=[0-9.]*[1-9])[0-9]{1,16}(\.[0-9]{1,2})?$/
unit
string
Valores permitidos: barrel bag jar bundle bottle box cigarette_pack centimetre cylinder set container day dozen bale gallon degree gram bulk hour crate kilogram kilowatt_hour pound litre lot metre square_metre cubic_metre million_btu minute package pair foot piece roll envelope second tank ton tube yard square_yard unit element thousand sack tin display drum ration quintal gross_register_tonnage square_foot passenger inch boat_berth_stay tray hectare millilitre milligram ounce troy_ounce
kind
Cualquiera de:
string
Valor permitido: good
legalTip
object
applied
obligatorio
boolean
group
string
>= 1 characters <= 64 characters
interval
obligatorio
object
unit
obligatorio
string
Valor permitido: month
invoicing
obligatorio
object
type
obligatorio
string
Valores permitidos: E31 E32 E45
mode
obligatorio
string
Valor permitido: automatic
buyer
Cualquiera de:
object
kind
obligatorio
string
Valor permitido: anonymous
recipientEmail

Correo del comprador al que se entrega la factura una vez emitida.

string format: email
<= 254 characters
isTypeLocked
boolean
isBuyerLocked
boolean
governmentEligibility
Cualquiera de:
object
entityKind
obligatorio
string
Valor permitido: central_government
authorityReference
obligatorio
string
>= 1 characters <= 128 characters

Respuesta predeterminada

Media typeapplication/json
Campos y códigos de la respuesta
object
id
obligatorio

Identidad de la suscripción

string
/^sub_[0-9a-hjkmnp-tv-z]{24,}$/
subscriptionReference
obligatorio
string
terms
obligatorio
object
version
obligatorio
string
text
obligatorio
string
locale
obligatorio
Cualquiera de:
string
Valor permitido: es
translations
obligatorio
object
es
obligatorio
string
en
obligatorio
string
customer
obligatorio
object
customerReference
obligatorio
string
>= 1 characters <= 128 characters
name
obligatorio
string
>= 1 characters <= 150 characters
email
obligatorio
string format: email
<= 254 characters
status
obligatorio
string
Valores permitidos: pending active past_due deferred canceled expired
amount
obligatorio

Monto monetario decimal exacto.

object
currency
obligatorio

Ejemplo

DOP
string
/^[A-Z]{3}$/
value
obligatorio

Monto decimal exacto y no negativo, con un máximo de dos cifras decimales.

string
/^(0|[1-9][0-9]{0,15})(\.[0-9]{1,2})?$/
interval
obligatorio
object
unit
obligatorio
string
Valor permitido: month
nextPaymentAt
obligatorio
Cualquiera de:
string format: date-time
setup
obligatorio
Cualquiera de:
object
url
obligatorio
Cualquiera de:
string format: uri
expiresAt
obligatorio
string format: date-time
management
obligatorio
Cualquiera de:
object
url
obligatorio
string format: uri
managementLinkEmail
obligatorio
Cualquiera de:
object
status
obligatorio
Cualquiera de:
string
Valor permitido: pending
requestedAt
obligatorio
string format: date-time
deferralReason
obligatorio
Cualquiera de:
string
Valores permitidos: merchant_account_not_ready recurring_account_required mandate_credential_unavailable business_fiscal_binding_unavailable business_fiscal_setup_unavailable subscription_invoicing_blocked card_enrollment_incomplete other
createdAt
obligatorio
string format: date-time
canceledAt
obligatorio
Cualquiera de:
string format: date-time
payments
obligatorio
Array<object>
<= 5 items
object
id
obligatorio

Identidad del pago

string
/^pay_[0-9a-hjkmnp-tv-z]{24,}$/
status
obligatorio

Solo succeeded, canceled y expired son terminales. Un intento rechazado devuelve el pago a requires_customer_action con lastDecline, así que el cliente puede intentarlo de nuevo hasta que el pago venza. partially_authorized significa que algunas partes tienen fondos retenidos, authorized que los fondos de todas las partes están retenidos y esperan que el organizador los capture, capturing que la captura está en curso y releasing que se están liberando los fondos retenidos. verifying es un estado real no terminal; no es un error ni un rechazo.

string
Valores permitidos: requires_customer_action processing partially_authorized authorized capturing partially_paid releasing verifying succeeded canceled expired
invoiceId
obligatorio
Cualquiera de:
string
customerCheckoutUrl
obligatorio
Cualquiera de:
string format: uri
periodStart
obligatorio
Cualquiera de:
string format: date-time
periodEnd
obligatorio
Cualquiera de:
string format: date-time
initiator
obligatorio
Cualquiera de:
string
Valor permitido: customer
recoveryNotice
obligatorio
Cualquiera de:
object
status
obligatorio
Cualquiera de:
string
Valor permitido: pending
deadline
obligatorio
Cualquiera de:
string format: date-time
problem
obligatorio
Cualquiera de:

Por qué el aviso de pago pendiente necesita atención. notice_handoff_failed es un rechazo definitivo del proveedor; notice_handoff_unknown es una entrega al proveedor de resultado incierto, que se reintenta hasta que termina su ventana de deduplicación; notice_delivery_failed es un rebote o una queja después de la entrega; notice_unavailable significa que todavía no se pudo preparar el aviso.

string
Valores permitidos: notice_unavailable notice_handoff_failed notice_handoff_unknown notice_delivery_failed
invoicing
Cualquiera de:

Instrucciones de factura guardadas y selección del destinatario. El ciclo de vida de la factura y las credenciales de acceso se informan por separado.

object
mode
obligatorio
Cualquiera de:
string
Valor permitido: automatic
type
obligatorio
string
Valores permitidos: E31 E32 E45
recipientEmail
obligatorio
Cualquiera de:
string format: email
<= 320 characters
issuanceProblem

Cuerpo de un problema RFC 9457 devuelto por la API /v1.

object
code
obligatorio
string
>= 1 characters
requestId
obligatorio
string
status
obligatorio
integer format: int32
>= 400 <= 599
title
obligatorio
string
type
obligatorio
string
Valores permitidos: about:blank
detail
string
invoiceId

Solo aparece si la solicitud rechazada produjo una operación fiscal.

string
issuanceBlockers

Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.

Array<string>
Valores permitidos: invalid_request unsupported_protocol unsupported_rules_version invalid_resolved_facts numbering_verifier_missing numbering_mode_not_enabled document_type_not_recognized sequence_missing sequence_not_observed_on_effective_date sequence_suspended sequence_cancelled sequence_superseded sequence_exhausted sequence_conflicting sequence_document_type_mismatch sequence_rejected_by_dgii sequence_expired sequence_range_overlap fiscal_number_capacity_exhausted invalid_fiscal_number fiscal_number_outside_authorized_range fiscal_number_before_verified_floor sequence_expiration_mismatch
problems

Solo aparece cuando el rechazo señala un valor incluido en la solicitud.

Array<object>

Un problema público estable del documento, guardado para una admisión rechazada.

object
code
obligatorio
string
message
obligatorio
string
path
obligatorio
string
buyer
discriminator: kind
object
kind
obligatorio
string
Valores permitidos: anonymous
governmentEligibility
Cualquiera de:
object
entityKind
obligatorio
string
Valor permitido: central_government
authorityReference
obligatorio
string
>= 1 characters <= 128 characters
allowedTypes
Array<string>
Valores permitidos: E31 E32 E45
isTypeLocked
boolean
isBuyerLocked
boolean
revision

Aumenta cada vez que cambian el tipo de comprobante, el comprador o la elegibilidad gubernamental.

integer
>= 1
invoiceReference
string
>= 1 characters <= 128 characters
paymentsHasMore
obligatorio
boolean
paymentsNextCursor
obligatorio
Cualquiera de:
string
request-id
obligatorio
string

Identifica esta solicitud. Indícalo cuando contactes a soporte.