Skip to main content

Especificaciones para validación de QR

ACH cuenta con la capacidad de validar la veracidad del código QR antes de realizar la acreditación del dinero en la entidad participante destino. Sin embargo, las entidades que lo requieran podrán implementar el método de validación según lo establecido en esta documentación.
El servicio de validación aplica unicamente para los códigos QR generados por Transfiya.
Dominio: https://bank.apihub.achcolombia.com.co
POST /ach/bk/v1/money-movement/qr

Campos de Entrada

CampoTipoDescripciónFormatoObligatorio
metaobjectSI
requestIduuidCódigo generado por la entidad participante para identificar el paquetea1b2c3d4-e5f6-7890-abcd-ef1234567890SI
timestampdatetimeFecha y hora de la solicitud de generación del código QR2025-12-23T18:16:35.099ZSI
versionstringVersión del esquema, enviar el valor “1.0”1.0SI
dataobjectSI
movementTypeenumTipo de operación a realizar. [QR, QRVALIDATE, QRPARSER]QRVALIDATESI
useCaseInformationobjectSI
idQrstringCampo para la identificación de la transacción. (Tag 90)CO.COM.ACH.RED3748349738748374SI
crcstringCódigo de redundancia cíclica del QR (Tag 63)3A5FNO
hashstringCadena de caracteres de seguridad del QR (Tag 91)7f9c2ba4e88f827d616045507605853ed73b4761f1d1f6c5e9f7f0f4b7a4f1f0NO
{
  "meta": {
    "requestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "timestamp": "2026-01-15T17:18:15.761Z",
    "version": "1.0"
  },
  "data": {
    "movementType": "QRVALIDATE",
    "useCaseInformation": {
      "idQr": "CO.COM.ACH.RED3748349738748374",
      "crc": "3A5F",
      "hash": "7f9c2ba4e88f827d616045507605853ed73b4761f1d1f6c5e9f7f0f4b7a4f1f0"
    }
  }
}

Campos de Salida:

CampoTipoDescripciónFormato
metaobject--
requestIduuidCódigo generado por la entidad participante para identificar el paquetea1b2c3d4-e5f6-7890-abcd-ef1234567890
timestampdatetimeFecha y hora de la respuesta a la solicitud de generación del código QR2025-12-23T18:16:35.099Z
statusenumEstado de la respuesta. SUCCESS, ERRORSUCCESS
statusCodestringCódigo HTTP de la respuesta200
statusDescstringDescripción del código HTTPOK
dataobject
movementTypeenumTipo de operación a realizar. [QR, QRVALIDATE, QRPARSER]QRVALIDATE
qrobject--
Tag numberobjectNúmero del tag EMVCO26
idstringNúmero del tag EMVCO26
namestringNombre del campoMerchant Account Information
lenstringTamaño del campo32
dataobjectContenido del tag-
SubTag NumberobjectNúmero del subTag EMVCO26
idstringNúmero del subTag EMVCO01
namestringNombre del campoGlobal Unique Identifier
lenstringTamaño del campo14
datastringContenido del tagCO.COM.ACH.LLA
rawdatastringFragmento del TLV para este TAGCO.COM.ACH.LLA
rawdatastringFragmento del TLV para este TAG0014CO.COM.ACH.LLA02103152466845
errorobject
codeintegerCódigo de error generado (cero si no hay errores)1005
messagestringMensaje de error (vacío si no hay errores)Fallas técnicas

Campos de Respuesta


{
  "meta": {
    "requestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "timestamp": "2026-01-15T00:03:39.558Z",
    "status": "SUCCESS",
    "statusCode": "200",
    "statusDesc": "OK"
  },
  "data": {
    "movementType": "QRPARSER",
    "26": {
      "id": "26",
      "name": "Merchant Account Information",
      "len": 32,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 14,
          "data": "CO.COM.ACH.LLA",
          "rawData": "CO.COM.ACH.LLA"
        },
        "02": {
          "id": "02",
          "name": "Merchant ID",
          "len": 10,
          "data": "3152466845",
          "rawData": "3152466845"
        }
      },
      "rawData": "0014CO.COM.ACH.LLA02103152466845"
    },
    "49": {
      "id": "49",
      "name": "Merchant Account Information",
      "len": 25,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 14,
          "data": "CO.COM.ACH.RED",
          "rawData": "CO.COM.ACH.RED"
        },
        "01": {
          "id": "01",
          "name": "Merchat PAN",
          "len": 3,
          "data": "ACH",
          "rawData": "ACH"
        }
      },
      "rawData": "0014CO.COM.ACH.RED0103ACH"
    },
    "53": {
      "id": "53",
      "name": "Transaction Currency",
      "len": 3,
      "data": "170",
      "rawData": "170"
    },
    "54": {
      "id": "54",
      "name": "Transaction Amount",
      "len": 4,
      "data": "8900",
      "rawData": "8900"
    },
    "58": {
      "id": "58",
      "name": "Country Code",
      "len": 2,
      "data": "CO (Colombia)",
      "rawData": "CO"
    },
    "59": {
      "id": "59",
      "name": "Merchant Name",
      "len": 13,
      "data": "Julián Suarez",
      "rawData": "Julián Suarez"
    },
    "60": {
      "id": "60",
      "name": "Merchant City",
      "len": 6,
      "data": "Bogota",
      "rawData": "Bogota"
    },
    "61": {
      "id": "61",
      "name": "Postal Code",
      "len": 6,
      "data": "114056",
      "rawData": "114056"
    },
    "62": {
      "id": "62",
      "name": "Additional Data Field Template",
      "len": 11,
      "data": "07010080200",
      "rawData": "07010080200"
    },
    "63": {
      "id": "63",
      "name": "CRC",
      "len": 4,
      "data": "2F1E",
      "rawData": "2F1E"
    },
    "80": {
      "id": "80",
      "name": "Unreserved Templates",
      "len": 27,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 16,
          "data": "CO.COM.ACH.CANAL",
          "rawData": "CO.COM.ACH.CANAL"
        },
        "01": {
          "id": "01",
          "len": 3,
          "data": "POS",
          "rawData": "POS"
        }
      },
      "rawData": "0016CO.COM.ACH.CANAL0103POS"
    },
    "81": {
      "id": "81",
      "name": "Unreserved Templates",
      "len": 25,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 15,
          "data": "CO.COM.ACH.CIVA",
          "rawData": "CO.COM.ACH.CIVA"
        },
        "01": {
          "id": "01",
          "len": 2,
          "data": "03",
          "rawData": "03"
        }
      },
      "rawData": "0015CO.COM.ACH.CIVA010203"
    },
    "82": {
      "id": "82",
      "name": "Unreserved Templates",
      "len": 23,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 14,
          "data": "CO.COM.ACH.IVA",
          "rawData": "CO.COM.ACH.IVA"
        },
        "01": {
          "id": "01",
          "len": 1,
          "data": "0",
          "rawData": "0"
        }
      },
      "rawData": "0014CO.COM.ACH.IVA01010"
    },
    "83": {
      "id": "83",
      "name": "Unreserved Templates",
      "len": 24,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 15,
          "data": "CO.COM.ACH.BASE",
          "rawData": "CO.COM.ACH.BASE"
        },
        "01": {
          "id": "01",
          "len": 1,
          "data": "0",
          "rawData": "0"
        }
      },
      "rawData": "0015CO.COM.ACH.BASE01010"
    },
    "84": {
      "id": "84",
      "name": "Unreserved Templates",
      "len": 25,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 15,
          "data": "CO.COM.ACH.CINC",
          "rawData": "CO.COM.ACH.CINC"
        },
        "01": {
          "id": "01",
          "len": 2,
          "data": "03",
          "rawData": "03"
        }
      },
      "rawData": "0015CO.COM.ACH.CINC010203"
    },
    "85": {
      "id": "85",
      "name": "Unreserved Templates",
      "len": 23,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 14,
          "data": "CO.COM.ACH.INC",
          "rawData": "CO.COM.ACH.INC"
        },
        "01": {
          "id": "01",
          "len": 1,
          "data": "0",
          "rawData": "0"
        }
      },
      "rawData": "0014CO.COM.ACH.INC01010"
    },
    "90": {
      "id": "90",
      "name": "Unreserved Templates",
      "len": 43,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 16,
          "data": "CO.COM.ACH.TRXID",
          "rawData": "CO.COM.ACH.TRXID"
        },
        "01": {
          "id": "01",
          "len": 19,
          "data": "62FB70176DC0B870F58",
          "rawData": "62FB70176DC0B870F58"
        }
      },
      "rawData": "0016CO.COM.ACH.TRXID011962FB70176DC0B870F58"
    },
    "91": {
      "id": "91",
      "name": "Unreserved Templates",
      "len": 86,
      "data": {
        "00": {
          "id": "00",
          "name": "Global Unique Identifier",
          "len": 14,
          "data": "CO.COM.ACH.SEC",
          "rawData": "CO.COM.ACH.SEC"
        },
        "01": {
          "id": "01",
          "len": 64,
          "data": "ac77cb8cc46f1e0aee1b8e3212bc9f27bcb8ec16aaf38d2ce42194a92bfc4d12",
          "rawData": "ac77cb8cc46f1e0aee1b8e3212bc9f27bcb8ec16aaf38d2ce42194a92bfc4d12"
        }
      },
      "rawData": "0014CO.COM.ACH.SEC0164ac77cb8cc46f1e0aee1b8e3212bc9f27bcb8ec16aaf38d2ce42194a92bfc4d12"
    },
    "00": {
      "id": "00",
      "name": "Payload Format Indicator",
      "len": 2,
      "data": "01",
      "rawData": "01"
    },
    "01": {
      "id": "01",
      "name": "Point of Initiation Method",
      "len": 2,
      "data": "11",
      "rawData": "11"
    }
  }
}