Transacción
https://app.payku.cl/ (Production) · https://des.payku.cl/ (Sandbox)/api/transactionEste método permite crear una orden de pago y recibe como respuesta la URL y el TOKEN que identifica la transacción.
Parámetros adicionales:
additional_parameters = Permite enviar información adicional que será registrada con la transacción:
IMPORTANTE additional_parameters.gateway:
- Permite especificar el medio de pago final
- OBLIGATORIO para comercios que usan método On-Site
Cuerpo de la solicitud
| Parámetro | Tipo | Descripción | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emailrequerido |
string <email> | Email del pagador |
||||||||||||||||||||||||||||
orderrequerido |
string <uuid> | Orden del comercio |
||||||||||||||||||||||||||||
subjectrequerido |
string <text> | Descripción de la orden |
||||||||||||||||||||||||||||
amountrequerido |
integer <int32> | Monto de la orden |
||||||||||||||||||||||||||||
currencyrequerido |
string <currency> | VES |
||||||||||||||||||||||||||||
paymentrequerido |
integer <int32> | 17 |
||||||||||||||||||||||||||||
urlreturn |
string <uri> | url de retorno del comercio donde se redirigirá al pagador luego de obtener el resultado de la transacción. |
||||||||||||||||||||||||||||
urlnotifyrequerido |
string <uri> | URL callback del comercio donde se notificará el resultado del pago. Nota: Una vez que el cliente finalice el proceso de pago, se notificará a la URL de callback (urlnotify) el resultado de la operación bancaria. Ejemplo de respuesta exitosa:
Ejemplo de respuesta rechazada:
|
||||||||||||||||||||||||||||
additional_parameters |
object | Parámetros adicionales del comercio. |
||||||||||||||||||||||||||||
gateway |
string | Seleccione el método de pago deseado:
Nota: Para métodos marcados con "On-Site: SI", la respuesta incluirá información adicional:
Campos importantes en la respuesta On-Site:
|
curl -X POST \https://BASE-URL/api/transaction \-H 'Accept: application/json, text/plain, */*' \-H 'Authorization: Bearer TOKEN-PUBLIC' \-H 'Content-Type: application/json' \-H 'Host: BASE-URL' \-d '{ "email": "[email protected]", "order": "order-commerce-999", "subject": "description of the order", "amount": 100, "currency": "VES", "payment": 17, "urlreturn": "https://youwebsite.com/return/client/order-commerce-999", "urlnotify": "https://youwebsite.com/callback/commerce/order-commerce-999", "additional_parameters": { "gateway":"GATEWAY_CODE" }}'$client = new \GuzzleHttp\Client(); $body = $client->request('POST', 'https://BASE_URL/api/transaction', [ 'json' => [ 'order' => 'order-commerce-999', 'subject' => 'description of the order', 'amount' => 100, 'currency' => 'VES', 'payment' => 17, 'urlreturn' => 'https://youwebsite.com/return/client/order-commerce-999', 'urlnotify' => 'https://youwebsite.com/callback/commerce/order-commerce-999', 'additional_parameters' => [ 'gateway' => 'GATEWAY_CODE' ] ], 'headers' => [ 'Authorization' => 'Bearer TOKEN_PUBLICO' ] ])->getBody();$response = json_decode($body);const data = { "order": "order-commerce-999", "subject": "description of the order", "amount": 100, "currency": "VES", "payment": 17, "urlreturn": "https://youwebsite.com/return/client/order-commerce-999", "urlnotify": "https://youwebsite.com/callback/commerce/order-commerce-999", "additional_parameters": { "gateway": "GATEWAY_CODE" }};const request = async (data) => { const response = await fetch('https://BASE_URL/api/transaction', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN_PUBLICO' }, body: JSON.stringify(data) }); const result = await response.json(); console.log(result)}request(data);Respuestas
{ "status": "register", "id": "trx6...", "url": "https://[BASE_URL]/path?id=trx...&valid=e3c4...", "account_service": { "bank_method": "PA..", "bank_number": "04...", "bank_document": "J...", "bank_name": "Ban...", "bank_nameshort": "Ve...", "bank_code": "01...", "bank_linkqr": "ht..." }, "attributes_request": { "transaction": "tr...", "payer": { "phone_number": "string", "payment_reference": "required" } }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de transacción. Los posibles estados que puede obtener son los siguientes:
|
id |
string | Identificador único de la transacción |
url |
string | URL para redireccionar al usuario. |
account_service |
object | [!SOLO PARA MÉTODOS ON-SITE!] Información del servicio bancario que debe ser utilizado para el pago. |
bank_method |
string | Método de pago bancario |
bank_number |
string | Número de teléfono para pago móvil |
bank_document |
string | Documento de identificación bancaria |
bank_name |
string | Nombre completo del banco |
bank_nameshort |
string | Nombre corto del banco |
bank_code |
string | Código del banco |
bank_linkqr |
string | URL del código QR para el pago |
attributes_request |
object | [!SOLO PARA MÉTODOS ON-SITE!] Datos requeridos para completar para informar el pago. |
transaction |
string | Identificador de la transacción |
payer |
object | Información requerida del pagador |
phone_number |
string | Número de teléfono del pagador |
payment_reference |
string | Referencia del pago |
Error en la solicitud.
{ "status": "failed", "type": "Unprocessable Entity", "message_error": "subject:invalid,amount:is empty,email:is empty,order:invalid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
message_error |
string | Mensaje de error |
Confirmar On-Site
Sección titulada «Confirmar On-Site»/api/validonsiteEste método permite confirmar el pago en el sitio web del comercio, enviando información del pagador para que pueda ser verificada. El resultado de la transacción será informado en el callback [urlnotify].
Cuerpo de la solicitud
| Parámetro | Tipo | Descripción |
|---|---|---|
transactionrequerido |
string | Identificador único de la transacción |
payerrequerido |
object | Información del pagador |
phone_numberrequerido |
string | Número de teléfono del pagador |
payment_referencerequerido |
string | Referencia del pago emitido por la entidad bancaria |
id_numberrequerido |
string | Número de identificación del pagador |
bank_coderequerido |
string | Código del banco del pagador |
payment_date |
string | Fecha del pago (opcional) |
curl -X POST \'https://BASE_URL/api/validonsite' \-H 'Accept: application/json, text/plain, */*' \-H 'Authorization: Bearer TOKEN-PUBLIC' \-H 'Content-Type: application/json' \-H 'Host: BASE-URL' \-d '{ "transaction": "trx2...", "payer": { "phone_number": "04129874563", "payment_reference": "12345600", "id_number": "V12987456", "bank_code": "0102", "payment_date": "2026-08-25" }}'$client = new \GuzzleHttp\Client();$body = $client->request('POST', 'https://BASE_URL/api/validonsite', [ 'json' => [ 'transaction' => 'trx2...', 'payer' => [ 'phone_number' => '04129874563', 'payment_reference' => '12345600', 'id_number' => 'V12987456', 'bank_code' => '0102', 'payment_date' => '2026-08-25' ] ], 'headers' => [ 'Authorization' => 'Bearer TOKEN_PUBLICO' ]])->getBody();$response = json_decode($body);const data = { "transaction": "trx2...", "payer": { "phone_number": "04129874563", "payment_reference": "12345600", "id_number": "V12987456", "bank_code": "0102", "payment_date": "2026-08-25" }};const request = async (data) => { const response = await fetch('https://BASE_URL/api/validonsite', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN_PUBLICO' }, body: JSON.stringify(data) }); const result = await response.json(); console.log(result)}request(data);Respuestas
Respuesta exitosa
{ "transaction": "trx24...", "status": "register", "message": "payment received and pending verification", "gateway": { "status": "successful" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
transactionrequerido |
string | Identificador único de la transacción |
statusrequerido |
string | Estado de la transacción |
messagerequerido |
string | Mensaje descriptivo del estado |
gatewayrequerido |
object | Información del gateway de pago |
status |
string | Estado del gateway |
Error en la solicitud
{ "transaction": "trx24...", "status": "failed", "message_error": "charge already used or consumed"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
transactionrequerido |
string | Identificador único de la transacción |
statusrequerido |
string | Estado de la transacción |
message_errorrequerido |
string | Mensaje descriptivo del error |
Obtener
Sección titulada «Obtener»/api/transaction/{id}Este método permite obtener la información de una transacción
Parámetros de ruta
| Parámetro | Tipo | Descripción |
|---|---|---|
idrequerido |
string | Identificador único de la transacción
|
Respuestas
{ "status": "success", "id": "trx3b...", "created_at": "2025-10-25 14:10:03", "order": "157...", "subject": "description of the order", "amount": 100, "payment": { "start": "2025-12-16 15:10:33", "end": "2025-12-16 15:10:36", "media": "VEPUY", "transaction_id": 107999, "payment_key": "pr...", "transaction_key": null, "deposit_date": "2023-10-05", "verification_key": "666...", "authorization_code": "10...", "last_4_digits": "0000", "installments": 0, "card_type": "VN", "additional_parameters": { "gateway": "CODE_GATEWAY", "network": { "ip_address": "192.0.2.123" } }, "currency": "VES" }, "nullify": { "status": "complete" }, "gateway_response": { "status": "success", "message": "successful transaction" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
id |
string | Identificador único de la transacción |
created_at |
string | Fecha de registro. |
order |
string | Número de orden. |
email |
string | Email del usuario |
subject |
string | Descripción de la orden de compra. |
amount |
string | Monto. |
payment |
object | |
start |
string | Inicio de la transacción. |
end |
string | Fin de la transacción. |
media |
string | Medio de pago, utilizado por el usuario. |
transaction_id |
int | Identificador único de la transacción |
payment_key |
string | Identificador del cobro creado por payku. |
transaction_key |
string | Identificador único de la transacción |
deposit_date |
string | Fecha el cual se realizará el depósito al cliente. |
verification_key |
string | Código de verificación creado por payku. |
authorization_code |
string | Código de autorización. |
last_4_digits |
string | Últimos 4 dígitos de la tarjeta afiliada. |
installments |
int | Cuotas. |
card_type |
string | Tipo de tarjeta. |
additional_parameters |
object | Ejemplo de parámetros adicionales que puede enviar payku. |
gateway |
string | |
network |
object | Datos de la red del usuario: |
ip_address |
string | Ejemplo de IP Address del usuario: |
currency |
string | Moneda. |
nullify |
object | Objeto que contiene información de la respuesta de la anulación |
status |
string | Estatus de anulación. Los posibles estados que puede obtener son los siguientes:
|
gateway_response |
object | Objeto que contiene información de la respuesta de la transacción |
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
message |
string | Mensaje que describe el estado.
|
Error en la solicitud.
{ "status": "failed", "type": "Unprocessable Entity", "message_error": "subject:invalid,amount:is empty,email:is empty,order:invalid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
message_error |
string | Mensaje de error |
Identificador no existe.
{ "status": "failed", "type": "Not Found", "id": "is not valid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
id |
string | Información de id |
/api/transaction?success=trueEste método permite obtener la información de las transacciones realizados en payku, permite una paginación con un máximo de 4000 registros por página.
| Parámetro | Descripción | Ejemplo |
|---|---|---|
| date_init | Fecha inicial para la búsqueda de transacciones. Si no se especifica, se usa la fecha actual | date_init=2025-01-01 |
| date_end | Fecha final para la búsqueda de transacciones. Si no se especifica, se usa la fecha actual | date_end=2025-12-31 |
| success | Filtra transacciones exitosas | success=true |
| pending | Filtra transacciones pendientes | pending=true |
| rejected | Filtra transacciones rechazadas | rejected=true |
| page | Número de página para paginación | page=1 |
| per_page | Cantidad de registros por página (máximo 4000) | per_page=100 |
Ejemplo de URL completa:
https://[URL_BASE]/api/transaction?date_init=2025-01-01&date_end=2025-12-31&success=true&page=1&per_page=100
Respuestas
{ "status": "success", "id": "trx3b...", "created_at": "2025-10-25 14:10:03", "order": "157...", "subject": "description of the order", "amount": 100, "payment": { "start": "2025-12-16 15:10:33", "end": "2025-12-16 15:10:36", "media": "VEPUY", "transaction_id": 107999, "payment_key": "pr...", "transaction_key": null, "deposit_date": "2023-10-05", "verification_key": "666...", "authorization_code": "10...", "last_4_digits": "0000", "installments": 0, "card_type": "VN", "additional_parameters": { "gateway": "CODE_GATEWAY", "network": { "ip_address": "192.0.2.123" } }, "currency": "VES" }, "nullify": { "status": "complete" }, "gateway_response": { "status": "success", "message": "successful transaction" }}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
id |
string | Identificador único de la transacción |
created_at |
string | Fecha de registro. |
order |
string | Número de orden. |
email |
string | Email del usuario |
subject |
string | Descripción de la orden de compra. |
amount |
string | Monto. |
payment |
object | |
start |
string | Inicio de la transacción. |
end |
string | Fin de la transacción. |
media |
string | Medio de pago, utilizado por el usuario. |
transaction_id |
int | Identificador único de la transacción |
payment_key |
string | Identificador del cobro creado por payku. |
transaction_key |
string | Identificador único de la transacción |
deposit_date |
string | Fecha el cual se realizará el depósito al cliente. |
verification_key |
string | Código de verificación creado por payku. |
authorization_code |
string | Código de autorización. |
last_4_digits |
string | Últimos 4 dígitos de la tarjeta afiliada. |
installments |
int | Cuotas. |
card_type |
string | Tipo de tarjeta. |
additional_parameters |
object | Ejemplo de parámetros adicionales que puede enviar payku. |
gateway |
string | |
network |
object | Datos de la red del usuario: |
ip_address |
string | Ejemplo de IP Address del usuario: |
currency |
string | Moneda. |
nullify |
object | Objeto que contiene información de la respuesta de la anulación |
status |
string | Estatus de anulación. Los posibles estados que puede obtener son los siguientes:
|
gateway_response |
object | Objeto que contiene información de la respuesta de la transacción |
status |
string | Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
|
message |
string | Mensaje que describe el estado.
|
Error en la solicitud.
{ "status": "failed", "type": "Unprocessable Entity", "message_error": "subject:invalid,amount:is empty,email:is empty,order:invalid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
message_error |
string | Mensaje de error |
Identificador no existe.
{ "status": "failed", "type": "Not Found", "id": "is not valid"}Campos de la respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
string | Estatus de la solicitud. |
type |
string | Tipo de error ocurrido. |
id |
string | Información de id |