Getnet DocsGetnet Docs

Create a Pre-authorized Payment

Pre-authorization operations (PREAUTORIZACION) allow merchants to reserve funds on a customer’s card without capturing them immediately. This two-phase model is used when the final amount is known only after service completion (for example, hotels, car rentals, or fuel stations).

This guide applies to Slim Pack.

A pre-authorization never captures funds by itself. It must be followed by a confirmation (CONFIRMACION), which captures all or part of the reserved amount. If you don’t confirm it, the reserved funds release automatically once the expiration window passes, or you can release them earlier with a refund — see the Refund a Payment guide.

Requirements

Before you begin, ensure the following prerequisites are met:

  • Get Central (TPVPC) installed and successfully initialized via fnDllIniTpvpcLatente
  • Pre-authorization capability enabled for your merchant by the acquirer
  • Physical PIN pad connected and available for the initial card-present step

Pre-authorizations are subject to an expiration window defined by the card scheme and issuer. If not confirmed within this period, the reserved funds are automatically released.

Pre-authorization Process Overview

The complete flow consists of two mandatory operations:

  1. PREAUTORIZACION – Card-present operation that reserves funds
  2. CONFIRMACION – Subsequent operation that captures the reserved amount

Step 1: Execute a PREAUTORIZACION

The pre-authorization is a card-present operation. The TPVPC activates the PIN pad, guides the cardholder interaction, and requests a reservation of funds.

To initiate the reservation, invoke the standard PIN pad operation with the operation type set to PREAUTORIZACION. The following parameters are required:

ParameterTypeRequiredDescription
cImporteStringYesAmount to reserve, format XXXXXXXXX.XX (for example, 100.00).
cFacturaStringYesMerchant reference identifying the pre-authorization.
cTipoOperStringYesMust be set to PREAUTORIZACION.
cXMLRespBufferYesOutput buffer that will receive the XML response.
iTamMaxRespIntegerYesMaximum size of the response buffer (minimum recommended: 8192).

Here is an example in C#:

StringBuilder xmlResponse = new StringBuilder(8192);

int result = fnDllOperPinPad(
    "100.00",           // cImporte
    "STAY-2023-001",    // cFactura
    "PREAUTORIZACION",  // cTipoOper
    xmlResponse,
    xmlResponse.Capacity
);

Step 2: Validate the Pre-authorization Result

After execution, the TPVPC returns an XML document describing the result of the reservation.

The pre-authorization must be considered AUTHORIZED only if the XML contains both:

<estado>F</estado>
<resultado>Autorizada</resultado>

If either element is missing or has a different value, the pre-authorization must be treated as DENIED, and no confirmation must be attempted.

Persist the merchant reference (cFactura) and relevant response data, as they are mandatory for the confirmation step.

Step 3: Capture the Pre-authorization

Once the final amount is known, the reserved funds must be captured by executing a CONFIRMACION operation. This operation does not require the physical card to be present.

The confirmation runs through fnDllOperComContable, the same function as a referenced refund, with a different cTipoOper. It must reference the original pre-authorization by its pedido:

ParameterTypeRequiredDescription
cNumPedidoStringYesOrder number of the original pre-authorization, from the pedido field of its response.
cRTSOriginalStringNoRTS identifier of the original pre-authorization. Recommended.
cImporteStringYesFinal amount to capture, format XXXXXXXXX.XX.
cFacturaStringYesPurchase reference for this confirmation. The TPVPC does not validate it.
cTipoOperStringYesMust be set to CONFIRMACION.
cXMLRespBufferYesOutput buffer that will receive the XML response.
iTamMaxRespIntegerYesMaximum size of the response buffer (minimum recommended: 8192).

Here is an example in C#:

StringBuilder xmlResponse = new StringBuilder(8192);

int result = fnDllOperComContable(
    "916548",            // cNumPedido — the pre-authorization's pedido
    "",                  // cRTSOriginal
    "85.00",             // cImporte
    "STAY-2023-001-FIN", // cFactura
    "CONFIRMACION",      // cTipoOper
    xmlResponse,
    xmlResponse.Capacity
);

if (result != 0)
{
    // Technical execution error
}

Step 4: Validate the Confirmation Result

The confirmation is successful only if the XML response contains:

<estado>F</estado>
<resultado>Autorizada</resultado>

Only after this validation should the transaction be considered fully captured and finalized.

Next Steps

After completing a pre-authorization and confirmation cycle, you can proceed with further operational tasks: