Emitir PDF
Nota de Débito A
Nota de Débito A
Template de Nota de Débito A.
Requisitos previos
Para poder emitir este PDF, primero necesitarás:
Nombre del template
debit-note-a
Parámetros
file_namestring
Nombre del archivo PDF.send_tostringOpcional
Email opcional para enviar el comprobante adjunto.templateobject
Template a utilizar para la generación del PDF.namestring
Nombre del template.paramsobject
Parámetros del template.voucher_numberinteger
Número de comprobante.sales_pointinteger
Punto de venta.issue_datestring
Fecha de emisión (DD/MM/YYYY).cae_due_datestring
Vencimiento CAE (DD/MM/YYYY).issuer_cuitinteger
CUIT emisor (11 dígitos).caeinteger
CAE (14 dígitos).issuer_business_namestring
Razón social emisor.issuer_addressstring
Domicilio emisor.issuer_iva_conditionstring
Condición IVA emisor.issuer_gross_incomestring
Ingresos brutos.issuer_activity_start_datestring
Inicio actividades (DD/MM/YYYY).receiver_namestring
Nombre receptor.receiver_addressstring
Domicilio receptor.receiver_document_typeinteger
Tipo documento receptor.receiver_document_numberinteger
Número documento receptor.receiver_iva_conditionstring
Condición IVA receptor.sale_conditionstring
Condición de venta.currency_idstring
Código de moneda. Para pesos argentinos, usar ARS.currency_ratenumber
Cotización de moneda (>0). Para pesos argentinos (ARS) el valor es 1.conceptinteger
Concepto AFIP (1=Productos, 2=Servicios, 3=Productos y Servicios).itemsobject[]
Detalle de ítems.vat_amountnumber
Importe IVA.tributes_amountnumber
Importe tributos.total_amountnumber
Importe total.billing_fromstringOpcional
Fecha desde. Requerido si concept=2 o 3.billing_tostringOpcional
Fecha hasta. Requerido si concept=2 o 3.payment_due_datestringOpcional
Vencimiento pago. Requerido si concept=2 o 3 y obligatorio en FCE.tributesobject[]Opcional
Tributos adicionales.net_amount_taxednumber
Neto gravado.net_amount_untaxednumber
Neto no gravado.exempt_amountnumber
Importe exento.vat_breakdownobject[]Opcional
Desglose de alícuotas.associated_vouchersobject[]
Comprobantes asociados.debit_note_reasonstring
Motivo de nota de débito.Solicitud
LOCAL loHttp, loUrl, loData, loResponse
* Deben cambiar los datos por los que correspondan.
LOCAL loDataObject
loDataObject = CREATEOBJECT("JSONObject")
loDataObject.set("file_name", "invoice_name.pdf")
loDataObject.set("send_to", "cliente@empresa.com")
LOCAL template
template = CREATEOBJECT("JSONObject")
loDataObject.set("template", template)
template.set("name", "debit-note-a")
LOCAL params
params = CREATEOBJECT("JSONObject")
template.set("params", params)
params.set("voucher_number", 97)
params.set("sales_point", 1)
params.set("issue_date", "27/02/2026")
params.set("cae_due_date", "12/03/2026")
params.set("issuer_cuit", 30123456789)
params.set("cae", 12345678901234)
params.set("issuer_business_name", "EMPRESA IMAGINARIA S.A.")
params.set("issuer_address", "Calle Falsa 123")
params.set("issuer_iva_condition", "Responsable Inscripto")
params.set("issuer_gross_income", "CM 901-123456-7")
params.set("issuer_activity_start_date", "01/01/2020")
params.set("receiver_name", "CONSUMIDOR FINAL")
params.set("receiver_address", "-")
params.set("receiver_document_type", 99)
params.set("receiver_document_number", 0)
params.set("receiver_iva_condition", "Consumidor Final")
params.set("sale_condition", "Contado")
params.set("currency_id", "ARS")
params.set("currency_rate", 1)
params.set("concept", 1)
LOCAL items
items = CREATEOBJECT("JSONArray")
params.set("items", items)
LOCAL items0
items0 = CREATEOBJECT("JSONObject")
items.add(items0)
items0.set("code", "001")
items0.set("description", "Servicio mensual")
items0.set("quantity", 1)
items0.set("unit_price", 121)
items0.set("subtotal", 121)
params.set("vat_amount", 21)
params.set("tributes_amount", 0)
params.set("total_amount", 121)
params.set("billing_from", "01/02/2026")
params.set("billing_to", "28/02/2026")
params.set("payment_due_date", "10/03/2026")
LOCAL tributes
tributes = CREATEOBJECT("JSONArray")
params.set("tributes", tributes)
LOCAL tributes0
tributes0 = CREATEOBJECT("JSONObject")
tributes.add(tributes0)
tributes0.set("tribute_id", 99)
tributes0.set("description", "Percepción IIBB")
tributes0.set("base_amount", 100)
tributes0.set("rate", 3)
tributes0.set("amount", 3)
params.set("net_amount_taxed", 100)
params.set("net_amount_untaxed", 0)
params.set("exempt_amount", 0)
LOCAL vat_breakdown
vat_breakdown = CREATEOBJECT("JSONArray")
params.set("vat_breakdown", vat_breakdown)
LOCAL vat_breakdown0
vat_breakdown0 = CREATEOBJECT("JSONObject")
vat_breakdown.add(vat_breakdown0)
vat_breakdown0.set("vat_rate_id", 21)
vat_breakdown0.set("taxable_base", 100)
vat_breakdown0.set("vat_subtotal", 21)
LOCAL associated_vouchers
associated_vouchers = CREATEOBJECT("JSONArray")
params.set("associated_vouchers", associated_vouchers)
LOCAL associated_vouchers0
associated_vouchers0 = CREATEOBJECT("JSONObject")
associated_vouchers.add(associated_vouchers0)
associated_vouchers0.set("voucher_type", 6)
associated_vouchers0.set("point_of_sale", 1)
associated_vouchers0.set("voucher_number", 97)
associated_vouchers0.set("issue_date", "27/02/2026")
params.set("debit_note_reason", "Interés por mora")
* Convertimos el objeto en JSON
loData = json_encode(loDataObject)
* Creamos un cliente HTTP para llamar a la API
loHttp = CREATEOBJECT("Msxml2.XMLHTTP")
loUrl = "https://app.afipsdk.com/api/v1/pdfs"
* Realizamos la llamada a la API
loHttp.Open("POST", loUrl, .F.)
loHttp.setRequestHeader("Content-Type", "application/json")
* Reemplazar con tu access_token obtenido de https://app.afipsdk.com
LOCAL accessToken
accessToken = "TU_TOKEN_AQUI"
loHttp.setRequestHeader("Authorization", "Bearer " + accessToken)
loHttp.Send(loData)
* En caso de error lo mostramos por pantalla
IF loHttp.Status <> 200
? STR(loHttp.responseText)
RETURN
ENDIF
* Convertimos la respuesta en un objeto
loResponse = json_decode(loHttp.responseText)
* Mostramos la respuesta por pantalla
? loHttp.responseTextRespuesta
{
"id": "019ca6aa-7f1b-70d2-a9c3-1f5e8b62d4c1",
"file": "https://afip-sdk-pdf-storage.s3.amazonaws.com/019ca6aa-7f1b-70d2-a9c3-1f5e8b62d4c1.pdf",
"file_expiration": "2026-03-01T20:00:00.000Z",
"file_name": "invoice_name.pdf",
"created_at": "2026-02-28T20:00:00.000Z"
}