Para más templates PDF ayuda@afipsdk.com
Emitir PDF
Factura B

Factura B

Template de Factura B.


Requisitos previos

Para poder emitir este PDF, primero necesitarás:


Nombre del template

invoice-b

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.
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", "invoice-b")
        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")

* 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.responseText
Respuesta
{
    "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"
}