---
title: "Endpoint data-exchange del Flow de cobro"
method: POST
path: "/switch/v1/flows/cobro/{flowId}"
tags: ["WhatsApp Flows (Kit T2)"]
---

# Endpoint data-exchange del Flow de cobro

`POST /switch/v1/flows/cobro/{flowId}`

## Request

- Base URL: `https://pay.pagaconquickpay.com`
- URL: `https://pay.pagaconquickpay.com/switch/v1/flows/cobro/{flowId}`
- Auth: none required

Punto de **data-exchange** de WhatsApp Flows (esquema oficial de Meta). Tu Flow apunta aquí en vez de llamar directo al banco. El cuerpo es el **sobre cifrado** de Meta (`encrypted_flow_data` / `encrypted_aes_key` / `initial_vector` en base64; RSA-OAEP + AES-128-GCM, IV invertido) y la respuesta es **texto plano** `base64(cipher+tag)` cifrada con la misma AES key. `REQUEST_TOKEN` pide el OTP, `CONFIRM_PAYMENT` cobra. El tenant/cobrador salen del **binding** (`flowId` + `flow_secret` en el `flow_token` o header `x-flow-secret`), nunca del payload. No usa `x-switch-key`.

## Path parameters

- `flowId` string, uuid, required

## Headers

- `x-flow-secret` string

## Request body

- FlowEncryptedRequest
  - `encrypted_flow_data` string, required: AES-128-GCM(flow_data) + tag, en base64.
  - `encrypted_aes_key` string, required: AES key efímera envuelta con RSA-OAEP(SHA-256), en base64.
  - `initial_vector` string, required: IV de 16 bytes en base64 (la respuesta usa su versión invertida byte a byte).

## Response `200`

Respuesta cifrada de Meta (texto plano base64(cipher+tag))

## Other responses

- `400`: Sobre mal formado
- `421`: No se pudo descifrar / re-handshake de la AES key
- `432`: Firma de Meta inválida (x-hub-signature-256)
- `500`: Private key del Flow no configurada / error de cripto

---

[API](https://skmtc.dev/pagaconquickpay/apis/quickpay-api.md) · [All operations](https://skmtc.dev/pagaconquickpay/apis/quickpay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pagaconquickpay/apis/quickpay-api/revisions/999597fa67f3?raw)
