Credential On File (COF)

Una operación Credential-On-File (COF) es una transacción en la que el comercio está haciendo uso de los datos del titular de la tarjeta (PAN o PAN tokenizado y fecha de caducidad), de los cuales el titular ha dado autorización explícita al comercio para almacenarlos y para utilizarlos en esta transacción y posteriores. Una transacción COF puede ser iniciada por el titular (p.e. compra en comercio electrónico u operación MOTO) o iniciada por el comercio como resultado de un acuerdo entre titular y comercio (p.e. pago recurrente o pago aplazado).

Esta operativa y su correcta identificación cobra especial importancia con la aplicación de la PSD2, para todos los pagos iniciados por el comercio sin participación del titular (Merchant Initiated Transaccions – MIT), ya que son operaciones que no se pueden autenticar y si no se identifican correctamente pueden ser denegadas por los emisores de tarjetas.

Operativas COF

Es necesario saber si es la primera operación COF (almacenamiento de credenciales) o es posterior (uso de credenciales), y el tipo de COF que desea usarse:

  • Operativas principales COF

  • Installments: Pago aplazado. Siempre referido a una compra INDIVIDUAL, el importe de las diferentes transacciones es fijo, y con un intervalo de tiempo definido

  • Recurring: Pago recurrente. El importe de las transacciones puede ser fijo o variable, y con un intervalo de tiempo definido

  • Operativas especiales COF

  • Reauthorization: Normalmente ante envíos parciales. También cuando el cliente amplía la estancia en hotel / alquiler del vehículo o cuando habiendo una autorización estimada, se solicita el importe final (“remate”)

  • Resubmission: Original denegada por “saldo”; solo para ciertos sectores de actividad (para más detalle revisar la normativa de las marcas) y con un máximo de días desde la compra. Ejemplo relevante: “Transporte”

  • Delayed: los que suceden con posterioridad a la operación por servicios prestados / usados desconocidos al principio. (Minibar, daños vehículo, multas, ...)

  • Incremental: cuando durante el periodo de contrato se incurren en servicios adicionales

  • No Show: cuando el comercio cobra servicios a los que el titular se comprometió, pero luego no cumplió con los términos acordados. Ejemplo relevante: reservas en hoteles no atendidas sin cancelar.


Primera operación

Para la primera operación es posible el envío de dos nuevos parámetros:

  • DS_MERCHANT_COF_INI: parámetro que indica que es la primera transacción. Para marcar que es la primera operación es necesario enviar "DS_MERCHANT_COF_INI"= "S". Si en la petición se envía el Ds_Merchant_Identifier=”REQUIRED”, el parámetro "DS_MERCHANT_COF_INI" es opcional.

  • DS_MERCHANT_COF_TYPE: Este parámetro es opcional, e indica el tipo de operativa COF que desea usarse en sucesivas operaciones. Si no se envía se registrará como operativa COF tipo “C” (Otras). No obstante, para obtener los mejores resultados de autorización se recomienda incluir este campo para informar al emisor con la mayor precisión del motivo del almacenamiento de credenciales, y es de especial importancia con la PSD2 en los casos que en los que se enviaran MIT sin autenticar de forma posterior.

  • Tipo de COFValor DS_MERCHANT_COF_TYPE
    Installments I
    Recurring R
    Reauthorization H
    Resubmission E
    Delayed D
    Incremental M
    No Show N
    Otras C

Ejemplo de pago COF vía REST.


Para realizar una operativa COF vía rest, es necesario envíar el parámetro "Ds_MerchantParameters" del siguiente modo:

					
{
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_TRANSACTIONTYPE": "0",
  "DS_MERCHANT_EXPIRYDATE": "3412",
  "DS_MERCHANT_COF_INI": "S",
  "DS_MERCHANT_ORDER": "9722vBXOv5O",
  "DS_MERCHANT_CVV2": "***",
  "DS_MERCHANT_TERMINAL": "1",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_IDENTIFIER": "REQUIRED",
  "DS_MERCHANT_AMOUNT": "145",
  "DS_MERCHANT_PAN": "454**********003"
}
					
				

Una vez realizada esta petición, se recibe una respuesta que puede contener un error, o un elemento "Ds_MerchantParameters", el cual debemos decodificar en BASE64. De esta forma obtenemos el parámetro "Ds_Response", si su valor es "0000" el pago ha sido autorizado

					
{
  "Ds_Amount": "145",
  "Ds_Currency": "978",
  "Ds_Order": "9722vBXOv5O",
  "Ds_MerchantCode": "999008881",
  "Ds_Terminal": "1",
  "Ds_Response": "0000",
  "Ds_AuthorisationCode": "381927",
  "Ds_TransactionType": "0",
  "Ds_SecurePayment": "0",
  "Ds_Language": "1",
  "Ds_CardNumber": "454881******0003",
  "Ds_ExpiryDate": "3412",
  "Ds_Merchant_Identifier": "120c14ed9f7264383434fc1154559f1e2bcc2b1c",
  "Ds_MerchantData": "",
  "Ds_Card_Country": "724",
  "Ds_Card_Brand": "1",
  "Ds_Merchant_Cof_Txnid": "2006031152000"
}
						    
						

Ejemplo de pago con autorización vía Redirección.


Para realizar una autorización mediante redirección, es necesario envíar el parámetro "Ds_MerchantParameters" del siguiente modo:

					
{
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_TRANSACTIONTYPE": "0",
  "DS_MERCHANT_COF_INI": "S",
  "DS_MERCHANT_COF_TYPE": "R",
  "DS_MERCHANT_ORDER": "9722vBXOv5O",
  "DS_MERCHANT_TERMINAL": "1",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_IDENTIFIER": "REQUIRED",
  "DS_MERCHANT_AMOUNT": "145",
  "DS_MERCHANT_MERCHANTURL":"http://www.prueba.com/urlNotificacion.php",
  "DS_MERCHANT_URLOK":"http://www.prueba.com/urlOK.php",
  "DS_MERCHANT_URLKO":"http://www.prueba.com/urlKO.php"
}					
					
				

Una vez realizada esta petición, se recibe una respuesta que puede contener un error, o un elemento "Ds_MerchantParameters", el cual debemos decodificar en BASE64. De esta forma obtenemos el parámetro "Ds_Response", si su valor es "0000" el pago ha sido autorizado

					
{
  "Ds_Amount": "145",
  "Ds_Currency": "978",
  "Ds_Order": "9722vBXOv5O",
  "Ds_MerchantCode": "999008881",
  "Ds_Terminal": "1",
  "Ds_Response": "0000",
  "Ds_AuthorisationCode": "381927",
  "Ds_TransactionType": "0",
  "Ds_SecurePayment": "0",
  "Ds_Language": "1",
  "Ds_CardNumber": "454881******0003",
  "Ds_ExpiryDate": "3412",
  "Ds_Merchant_Identifier": "120c14ed9f7264383434fc1154559f1e2bcc2b1c",
  "Ds_MerchantData": "",
  "Ds_Card_Country": "724",
  "Ds_Card_Brand": "1",
  "Ds_Merchant_Cof_Txnid": "2006031152000"
}
						    
						

Ejemplo de pago con autorización vía InSite.


Para realizar una autorización vía insite, es necesario envíar el parámetro "DS_MERCHANT_IDOPER" en el elemento "Ds_MerchantParameters":

					
{
  "DS_MERCHANT_AMOUNT": "145",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_COF_INI": "S",
  "DS_MERCHANT_COF_TYPE": "R",
  "DS_MERCHANT_IDENTIFIER": "REQUIRED",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1446068581",
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_TERMINAL": "1",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					
				

Una vez realizada esta petición, se recibe una respuesta que puede contener un error, o un elemento "Ds_MerchantParameters", el cual debemos decodificar en BASE64. De esta forma obtenemos el parámetro "Ds_Response", si su valor es "0000" el pago ha sido autorizado

					
{
  "Ds_Amount": "145",
  "Ds_Currency": "978",
  "Ds_Order": "9722vBXOv5O",
  "Ds_MerchantCode": "999008881",
  "Ds_Terminal": "1",
  "Ds_Response": "0000",
  "Ds_AuthorisationCode": "381927",
  "Ds_TransactionType": "0",
  "Ds_SecurePayment": "0",
  "Ds_Language": "1",
  "Ds_CardNumber": "454881******0003",
  "Ds_ExpiryDate": "3412",
  "Ds_Merchant_Identifier": "120c14ed9f7264383434fc1154559f1e2bcc2b1c",
  "Ds_MerchantData": "",
  "Ds_Card_Country": "724",
  "Ds_Card_Brand": "1",
  "Ds_Merchant_Cof_Txnid": "2006031152000"
}
				    
				

Sucesivas operaciones

  • DS_MERCHANT_COF_TYPE: En caso de no enviarse valor, el sistema recupera el utilizado en la operación de registro de credenciales inicial y lo incorpora antes de enviar la operación a autorizar. (Valores de la tabal superior)

  • DS_MERCHANT_COF_TXNID: Credencial que devuelve la respuesta de la primera operación

Ejemplo de pago sucesivo COF vía REST.


Para realizar un pago sucesivo COF vía rest, es necesario envíar el parámetro "Ds_MerchantParameters" del siguiente modo:

					
{
    "DS_MERCHANT_COF_TXNID": "2006031152000",
    "DS_MERCHANT_MERCHANTCODE": "999008881",
    "DS_MERCHANT_TRANSACTIONTYPE": "0",
    "DS_MERCHANT_DIRECTPAYMENT": "true",
    "DS_MERCHANT_ORDER": "4986Qpqx",
    "DS_MERCHANT_TERMINAL": "1",
    "DS_MERCHANT_CURRENCY": "978",
    "DS_MERCHANT_AMOUNT": "145",
}
					
				

Una vez realizada esta petición, se recibe una respuesta que puede contener un error, o un elemento "Ds_MerchantParameters", el cual debemos decodificar en BASE64. De esta forma obtenemos el parámetro "Ds_Response", si su valor es "0000" el pago ha sido autorizado

					
{
    "Ds_Amount": "145",
    "Ds_Currency": "978",
    "Ds_Order": "4986Qpqx",
    "Ds_MerchantCode": "999008881",
    "Ds_Terminal": "1",
    "Ds_Response": "0000",
    "Ds_AuthorisationCode": "382041",
    "Ds_TransactionType": "0",
    "Ds_SecurePayment": "0",
    "Ds_Language": "1",
    "Ds_CardNumber": "454881******0003",
    "Ds_MerchantData": "",
    "Ds_Card_Country": "724",
    "Ds_Card_Brand": "1",
    "Ds_Merchant_Cof_Txnid": "2006031152000"
}
						    
						

Ejemplo de pago con autorización vía Redirección.


Para realizar una autorización mediante redirección, es necesario envíar el parámetro "Ds_MerchantParameters" del siguiente modo:

										
{
  "DS_MERCHANT_COF_TXNID": "2006031152000",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_TRANSACTIONTYPE": "0",
  "DS_MERCHANT_DIRECTPAYMENT": "true",
  "DS_MERCHANT_ORDER": "4986Qpqx",
  "DS_MERCHANT_TERMINAL": "1"
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_AMOUNT": "145",
  "DS_MERCHANT_MERCHANTURL":"http://www.prueba.com/urlNotificacion.php",
  "DS_MERCHANT_URLOK":"http://www.prueba.com/urlOK.php",
  "DS_MERCHANT_URLKO":"http://www.prueba.com/urlKO.php"
}					
					
				

Una vez realizada esta petición, se recibe una respuesta que puede contener un error, o un elemento "Ds_MerchantParameters", el cual debemos decodificar en BASE64. De esta forma obtenemos el parámetro "Ds_Response", si su valor es "0000" el pago ha sido autorizado

					
{
    "Ds_Amount": "145",
    "Ds_Currency": "978",
    "Ds_Order": "4986Qpqx",
    "Ds_MerchantCode": "999008881",
    "Ds_Terminal": "1",
    "Ds_Response": "0000",
    "Ds_AuthorisationCode": "382041",
    "Ds_TransactionType": "0",
    "Ds_SecurePayment": "0",
    "Ds_Language": "1",
    "Ds_CardNumber": "454881******0003",
    "Ds_MerchantData": "",
    "Ds_Card_Country": "724",
    "Ds_Card_Brand": "1",
    "Ds_Merchant_Cof_Txnid": "2006031152000"
}
						    
						

Ejemplo de pago con autorización vía InSite.


Para realizar una autorización vía insite, es necesario envíar el parámetro "DS_MERCHANT_IDOPER" en el elemento "Ds_MerchantParameters":

					
					
{
  "DS_MERCHANT_COF_TXNID": "2006031152000",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_TRANSACTIONTYPE": "0",
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_DIRECTPAYMENT": "true",
  "DS_MERCHANT_ORDER": "4986Qpqx",
  "DS_MERCHANT_TERMINAL": "1"
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_AMOUNT": "145",
  "DS_MERCHANT_MERCHANTURL":"http://www.prueba.com/urlNotificacion.php",
  "DS_MERCHANT_URLOK":"http://www.prueba.com/urlOK.php",
  "DS_MERCHANT_URLKO":"http://www.prueba.com/urlKO.php"
}	
					
				

Una vez realizada esta petición, se recibe una respuesta que puede contener un error, o un elemento "Ds_MerchantParameters", el cual debemos decodificar en BASE64. De esta forma obtenemos el parámetro "Ds_Response", si su valor es "0000" el pago ha sido autorizado

					
{
    "Ds_Amount": "145",
    "Ds_Currency": "978",
    "Ds_Order": "4986Qpqx",
    "Ds_MerchantCode": "999008881",
    "Ds_Terminal": "1",
    "Ds_Response": "0000",
    "Ds_AuthorisationCode": "382041",
    "Ds_TransactionType": "0",
    "Ds_SecurePayment": "0",
    "Ds_Language": "1",
    "Ds_CardNumber": "454881******0003",
    "Ds_MerchantData": "",
    "Ds_Card_Country": "724",
    "Ds_Card_Brand": "1",
    "Ds_Merchant_Cof_Txnid": "2006031152000"
}
				    
				

Consideraciones PSD2

Con motivo de la entrada en vigor de la directiva de Europea de Pagos PSD2, se indican algunas nuevas características que puede afectar a la funcionalidad de operaciones COF:

1. Operaciones autenticadas: Todas las transacciones en las que se piden los datos de tarjeta al titular para su almacenaje (COF iniciales) deberán ser autenticadas, a excepción de las realizadas en entornos remotos no electrónicos (MO/TO – Mail Order/Telephone Order).

2. Será obligatorio enviar el parámetro DS_MECHANT_COF_TXNID de la COF inicial en todas las operaciones COF sucesivas. Esto es necesario para probar ante el emisor de la tarjeta que se está aplicando PSD2 correctamente y no se deniegue las operaciones sucesivas por no estar autenticadas.

Es posible que algunas operaciones COF iniciales realizadas antes de la entrada en vigor de PSD2 no dispongan de TID (porque no se generó o porque el comercio no lo guardó), en estos casos debe enviarse el siguiente valor para identificar de dicha situación al emisor:

DS_MECHANT_COF_TXNID = “999999999999999”

No obstante, este valor no deberá usarse en transacciones para hacer referencia a operativas ya realizadas dentro del marco temporal de aplicación de la PSD2 y en el futuro será invalidado su uso.

3. Marcaje MIT en COF sucesivas. Las COF subsiguientes podrán ser:

- CIT (Cardholder Initiated Transaction): se marcan como COF sucesivas, y requerirán autenticación del titular (o exención) al estar el titular participando activamente en la transacción.

- MIT (Merchant Initiated Transaction): para asegurar que no se deniegan por el emisor se deben marcar como COF sucesivas y como MIT mediante el parámetro DS_MERCHANT_EXCEP_SCA = “MIT”. De forma adicional, en las transacciones marcadas como MIT se deberá indicar el parámetro Ds_Merchant_DirectPayment=true para indicar que son pagos sin intervención del titular de la tarjeta y por lo tanto no es posible realizar la autenticación del mismo.

4. Operación COF inicial MO/TO (Mail Order/Telephone Order): La operación COF inicial podría ser realizada en un entorno remoto no electrónico MO/TO. En este caso no será necesario autenticar al estar fuera de alcance de SCA-PSD2. Las operaciones COF subsiguientes (cuando la inicial ha sido MOTO) al igual que las descritas anteriormente, pueden ser:

- CIT por comercio electrónico/website/app: marcar la operación COF sucesiva, requerirá autenticación o exención.

- CIT por canal telefónico: la operación por tanto se considera MOTO.

- MIT: COF sucesivas con el TID obtenido en la operación MOTO inicial (COF inicial).