Para más templates PDF ayuda@afipsdk.com
Emitir PDF
Nota de Crédito A con leyenda "Operación Sujeta a Retención"

Nota de Crédito A con leyenda "Operación Sujeta a Retención"

Template especial de Nota de Crédito A con leyenda "Operación Sujeta a Retención" (código AFIP 53).


Requisitos previos

Para poder emitir este PDF, primero necesitarás:


Nombre del template

credit-note-a-operation-subject-to-withholding

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.
credit_note_reasonstring
Motivo de nota de crédito.
invoice_footer_notestringOpcional
Opcional. Texto libre de nota al pie del comprobante. Se muestra después de los importes y antes del QR.
Solicitud
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;

// Deben cambiar los datos por los que correspondan. 
Map<String, Object> data = new LinkedHashMap<>();
    data.put("file_name", "invoice_name.pdf");
    data.put("send_to", "cliente@empresa.com");
    Map<String, Object> template = new LinkedHashMap<>();
    data.put("template", template);
        template.put("name", "credit-note-a-operation-subject-to-withholding");
        Map<String, Object> params = new LinkedHashMap<>();
        template.put("params", params);
            params.put("voucher_number", 97);
            params.put("sales_point", 1);
            params.put("issue_date", "27/02/2026");
            params.put("cae_due_date", "12/03/2026");
            params.put("issuer_cuit", 30123456789);
            params.put("cae", 12345678901234);
            params.put("issuer_business_name", "EMPRESA IMAGINARIA S.A.");
            params.put("issuer_address", "Calle Falsa 123");
            params.put("issuer_iva_condition", "Responsable Inscripto");
            params.put("issuer_gross_income", "CM 901-123456-7");
            params.put("issuer_activity_start_date", "01/01/2020");
            params.put("receiver_name", "CONSUMIDOR FINAL");
            params.put("receiver_address", "-");
            params.put("receiver_document_type", 99);
            params.put("receiver_document_number", 0);
            params.put("receiver_iva_condition", "Consumidor Final");
            params.put("sale_condition", "Contado");
            params.put("currency_id", "ARS");
            params.put("currency_rate", 1);
            params.put("concept", 1);
            List<Object> items = new ArrayList<Object>();
            params.put("items", items);
                Map<String, Object> items0 = new LinkedHashMap<>();
                items.add(items0);
                    items0.put("code", "001");
                    items0.put("description", "Servicio mensual");
                    items0.put("quantity", 1);
                    items0.put("unit_price", 121);
                    items0.put("subtotal", 121);
            params.put("vat_amount", 21);
            params.put("tributes_amount", 0);
            params.put("total_amount", 121);
            params.put("billing_from", "01/02/2026");
            params.put("billing_to", "28/02/2026");
            params.put("payment_due_date", "10/03/2026");
            List<Object> tributes = new ArrayList<Object>();
            params.put("tributes", tributes);
                Map<String, Object> tributes0 = new LinkedHashMap<>();
                tributes.add(tributes0);
                    tributes0.put("tribute_id", 99);
                    tributes0.put("description", "Percepción IIBB");
                    tributes0.put("base_amount", 100);
                    tributes0.put("rate", 3);
                    tributes0.put("amount", 3);
            params.put("net_amount_taxed", 100);
            params.put("net_amount_untaxed", 0);
            params.put("exempt_amount", 0);
            List<Object> vat_breakdown = new ArrayList<Object>();
            params.put("vat_breakdown", vat_breakdown);
                Map<String, Object> vat_breakdown0 = new LinkedHashMap<>();
                vat_breakdown.add(vat_breakdown0);
                    vat_breakdown0.put("vat_rate_id", 21);
                    vat_breakdown0.put("taxable_base", 100);
                    vat_breakdown0.put("vat_subtotal", 21);
            List<Object> associated_vouchers = new ArrayList<Object>();
            params.put("associated_vouchers", associated_vouchers);
                Map<String, Object> associated_vouchers0 = new LinkedHashMap<>();
                associated_vouchers.add(associated_vouchers0);
                    associated_vouchers0.put("voucher_type", 6);
                    associated_vouchers0.put("point_of_sale", 1);
                    associated_vouchers0.put("voucher_number", 97);
                    associated_vouchers0.put("issue_date", "27/02/2026");
            params.put("credit_note_reason", "Anulación parcial");

// Creamos un cliente HTTP para llamar a la API
HttpClient client = HttpClient.newBuilder()
    .connectTimeout(Duration.ofSeconds(20))
    .build();

// Realizamos la llamada a la API
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String dataJSON = gson.toJson(data);

HttpRequest.Builder request = HttpRequest.newBuilder()
    .uri(new URI("https://app.afipsdk.com/api/v1/pdfs"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(dataJSON));

// Reemplazar con tu access_token obtenido de https://app.afipsdk.com
String accessToken = "TU_TOKEN_AQUI";
request.header("Authorization", "Bearer "+ accessToken); 

HttpResponse<String> requestResponse = client.send(request.build(), HttpResponse.BodyHandlers.ofString());

// En caso de error lo mostramos por consola
if (requestResponse.statusCode() >= 400) {
    JsonElement errorResponse = gson.fromJson(requestResponse.body(), JsonElement.class);
    System.out.println("Error en la request: " + gson.toJson(errorResponse));

    return;
}

// Convertimos la respuesta en un objeto
JsonObject jsonObject = gson.fromJson(requestResponse.body(), JsonElement.class).getAsJsonObject();

// Mostramos la respuesta por consola
System.out.println(gson.toJson(jsonObject));
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"
}