Crear cobro
curl --request POST \
--url https://api.onepay.la/v1/payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-idempotency: <x-idempotency>' \
--data '
{
"amount": 123,
"title": "<string>",
"currency": "<string>",
"phone": "<string>",
"email": "<string>",
"reference": "<string>",
"tax": 123,
"external_id": "<string>",
"description": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>",
"scheduled_date": "<string>",
"metadata": {},
"template_id": 123,
"redirect_url": "<string>",
"splits": [
{
"splits[].customer_id": "<string>",
"splits[].split_type": "<string>",
"splits[].split_value": 123,
"splits[].description": "<string>",
"splits[].account_id": "<string>",
"splits[].to_company_wallet": true,
"splits[].scheduled_at": "<string>"
}
],
"partial_payment_config": {
"min_amount_in_cents": 123,
"max_amount_in_cents": 123,
"max_payment_methods": 123,
"timeout_hours": 123
}
}
'import requests
url = "https://api.onepay.la/v1/payments"
payload = {
"amount": 123,
"title": "<string>",
"currency": "<string>",
"phone": "<string>",
"email": "<string>",
"reference": "<string>",
"tax": 123,
"external_id": "<string>",
"description": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>",
"scheduled_date": "<string>",
"metadata": {},
"template_id": 123,
"redirect_url": "<string>",
"splits": [
{
"splits[].customer_id": "<string>",
"splits[].split_type": "<string>",
"splits[].split_value": 123,
"splits[].description": "<string>",
"splits[].account_id": "<string>",
"splits[].to_company_wallet": True,
"splits[].scheduled_at": "<string>"
}
],
"partial_payment_config": {
"min_amount_in_cents": 123,
"max_amount_in_cents": 123,
"max_payment_methods": 123,
"timeout_hours": 123
}
}
headers = {
"x-idempotency": "<x-idempotency>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-idempotency': '<x-idempotency>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 123,
title: '<string>',
currency: '<string>',
phone: '<string>',
email: '<string>',
reference: '<string>',
tax: 123,
external_id: '<string>',
description: '<string>',
document_url: '<string>',
due_date: '<string>',
expiration_date: '<string>',
scheduled_date: '<string>',
metadata: {},
template_id: 123,
redirect_url: '<string>',
splits: [
{
'splits[].customer_id': '<string>',
'splits[].split_type': '<string>',
'splits[].split_value': 123,
'splits[].description': '<string>',
'splits[].account_id': '<string>',
'splits[].to_company_wallet': true,
'splits[].scheduled_at': '<string>'
}
],
partial_payment_config: {
min_amount_in_cents: 123,
max_amount_in_cents: 123,
max_payment_methods: 123,
timeout_hours: 123
}
})
};
fetch('https://api.onepay.la/v1/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onepay.la/v1/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => 123,
'title' => '<string>',
'currency' => '<string>',
'phone' => '<string>',
'email' => '<string>',
'reference' => '<string>',
'tax' => 123,
'external_id' => '<string>',
'description' => '<string>',
'document_url' => '<string>',
'due_date' => '<string>',
'expiration_date' => '<string>',
'scheduled_date' => '<string>',
'metadata' => [
],
'template_id' => 123,
'redirect_url' => '<string>',
'splits' => [
[
'splits[].customer_id' => '<string>',
'splits[].split_type' => '<string>',
'splits[].split_value' => 123,
'splits[].description' => '<string>',
'splits[].account_id' => '<string>',
'splits[].to_company_wallet' => true,
'splits[].scheduled_at' => '<string>'
]
],
'partial_payment_config' => [
'min_amount_in_cents' => 123,
'max_amount_in_cents' => 123,
'max_payment_methods' => 123,
'timeout_hours' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-idempotency: <x-idempotency>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.onepay.la/v1/payments"
payload := strings.NewReader("{\n \"amount\": 123,\n \"title\": \"<string>\",\n \"currency\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"reference\": \"<string>\",\n \"tax\": 123,\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\",\n \"scheduled_date\": \"<string>\",\n \"metadata\": {},\n \"template_id\": 123,\n \"redirect_url\": \"<string>\",\n \"splits\": [\n {\n \"splits[].customer_id\": \"<string>\",\n \"splits[].split_type\": \"<string>\",\n \"splits[].split_value\": 123,\n \"splits[].description\": \"<string>\",\n \"splits[].account_id\": \"<string>\",\n \"splits[].to_company_wallet\": true,\n \"splits[].scheduled_at\": \"<string>\"\n }\n ],\n \"partial_payment_config\": {\n \"min_amount_in_cents\": 123,\n \"max_amount_in_cents\": 123,\n \"max_payment_methods\": 123,\n \"timeout_hours\": 123\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency", "<x-idempotency>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.onepay.la/v1/payments")
.header("x-idempotency", "<x-idempotency>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"title\": \"<string>\",\n \"currency\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"reference\": \"<string>\",\n \"tax\": 123,\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\",\n \"scheduled_date\": \"<string>\",\n \"metadata\": {},\n \"template_id\": 123,\n \"redirect_url\": \"<string>\",\n \"splits\": [\n {\n \"splits[].customer_id\": \"<string>\",\n \"splits[].split_type\": \"<string>\",\n \"splits[].split_value\": 123,\n \"splits[].description\": \"<string>\",\n \"splits[].account_id\": \"<string>\",\n \"splits[].to_company_wallet\": true,\n \"splits[].scheduled_at\": \"<string>\"\n }\n ],\n \"partial_payment_config\": {\n \"min_amount_in_cents\": 123,\n \"max_amount_in_cents\": 123,\n \"max_payment_methods\": 123,\n \"timeout_hours\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onepay.la/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-idempotency"] = '<x-idempotency>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 123,\n \"title\": \"<string>\",\n \"currency\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"reference\": \"<string>\",\n \"tax\": 123,\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\",\n \"scheduled_date\": \"<string>\",\n \"metadata\": {},\n \"template_id\": 123,\n \"redirect_url\": \"<string>\",\n \"splits\": [\n {\n \"splits[].customer_id\": \"<string>\",\n \"splits[].split_type\": \"<string>\",\n \"splits[].split_value\": 123,\n \"splits[].description\": \"<string>\",\n \"splits[].account_id\": \"<string>\",\n \"splits[].to_company_wallet\": true,\n \"splits[].scheduled_at\": \"<string>\"\n }\n ],\n \"partial_payment_config\": {\n \"min_amount_in_cents\": 123,\n \"max_amount_in_cents\": 123,\n \"max_payment_methods\": 123,\n \"timeout_hours\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 0,
"total_paid_label": "$ 0",
"remaining_amount_in_cents": 140000000,
"remaining_label": "$ 1.400.000",
"progress_percentage": 0,
"is_fully_paid": false,
"min_amount_in_cents": 20000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": null,
"charges": []
}
}
Crear cobro
POST
/
payments
Crear cobro
curl --request POST \
--url https://api.onepay.la/v1/payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-idempotency: <x-idempotency>' \
--data '
{
"amount": 123,
"title": "<string>",
"currency": "<string>",
"phone": "<string>",
"email": "<string>",
"reference": "<string>",
"tax": 123,
"external_id": "<string>",
"description": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>",
"scheduled_date": "<string>",
"metadata": {},
"template_id": 123,
"redirect_url": "<string>",
"splits": [
{
"splits[].customer_id": "<string>",
"splits[].split_type": "<string>",
"splits[].split_value": 123,
"splits[].description": "<string>",
"splits[].account_id": "<string>",
"splits[].to_company_wallet": true,
"splits[].scheduled_at": "<string>"
}
],
"partial_payment_config": {
"min_amount_in_cents": 123,
"max_amount_in_cents": 123,
"max_payment_methods": 123,
"timeout_hours": 123
}
}
'import requests
url = "https://api.onepay.la/v1/payments"
payload = {
"amount": 123,
"title": "<string>",
"currency": "<string>",
"phone": "<string>",
"email": "<string>",
"reference": "<string>",
"tax": 123,
"external_id": "<string>",
"description": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>",
"scheduled_date": "<string>",
"metadata": {},
"template_id": 123,
"redirect_url": "<string>",
"splits": [
{
"splits[].customer_id": "<string>",
"splits[].split_type": "<string>",
"splits[].split_value": 123,
"splits[].description": "<string>",
"splits[].account_id": "<string>",
"splits[].to_company_wallet": True,
"splits[].scheduled_at": "<string>"
}
],
"partial_payment_config": {
"min_amount_in_cents": 123,
"max_amount_in_cents": 123,
"max_payment_methods": 123,
"timeout_hours": 123
}
}
headers = {
"x-idempotency": "<x-idempotency>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-idempotency': '<x-idempotency>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 123,
title: '<string>',
currency: '<string>',
phone: '<string>',
email: '<string>',
reference: '<string>',
tax: 123,
external_id: '<string>',
description: '<string>',
document_url: '<string>',
due_date: '<string>',
expiration_date: '<string>',
scheduled_date: '<string>',
metadata: {},
template_id: 123,
redirect_url: '<string>',
splits: [
{
'splits[].customer_id': '<string>',
'splits[].split_type': '<string>',
'splits[].split_value': 123,
'splits[].description': '<string>',
'splits[].account_id': '<string>',
'splits[].to_company_wallet': true,
'splits[].scheduled_at': '<string>'
}
],
partial_payment_config: {
min_amount_in_cents: 123,
max_amount_in_cents: 123,
max_payment_methods: 123,
timeout_hours: 123
}
})
};
fetch('https://api.onepay.la/v1/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onepay.la/v1/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => 123,
'title' => '<string>',
'currency' => '<string>',
'phone' => '<string>',
'email' => '<string>',
'reference' => '<string>',
'tax' => 123,
'external_id' => '<string>',
'description' => '<string>',
'document_url' => '<string>',
'due_date' => '<string>',
'expiration_date' => '<string>',
'scheduled_date' => '<string>',
'metadata' => [
],
'template_id' => 123,
'redirect_url' => '<string>',
'splits' => [
[
'splits[].customer_id' => '<string>',
'splits[].split_type' => '<string>',
'splits[].split_value' => 123,
'splits[].description' => '<string>',
'splits[].account_id' => '<string>',
'splits[].to_company_wallet' => true,
'splits[].scheduled_at' => '<string>'
]
],
'partial_payment_config' => [
'min_amount_in_cents' => 123,
'max_amount_in_cents' => 123,
'max_payment_methods' => 123,
'timeout_hours' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-idempotency: <x-idempotency>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.onepay.la/v1/payments"
payload := strings.NewReader("{\n \"amount\": 123,\n \"title\": \"<string>\",\n \"currency\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"reference\": \"<string>\",\n \"tax\": 123,\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\",\n \"scheduled_date\": \"<string>\",\n \"metadata\": {},\n \"template_id\": 123,\n \"redirect_url\": \"<string>\",\n \"splits\": [\n {\n \"splits[].customer_id\": \"<string>\",\n \"splits[].split_type\": \"<string>\",\n \"splits[].split_value\": 123,\n \"splits[].description\": \"<string>\",\n \"splits[].account_id\": \"<string>\",\n \"splits[].to_company_wallet\": true,\n \"splits[].scheduled_at\": \"<string>\"\n }\n ],\n \"partial_payment_config\": {\n \"min_amount_in_cents\": 123,\n \"max_amount_in_cents\": 123,\n \"max_payment_methods\": 123,\n \"timeout_hours\": 123\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency", "<x-idempotency>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.onepay.la/v1/payments")
.header("x-idempotency", "<x-idempotency>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"title\": \"<string>\",\n \"currency\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"reference\": \"<string>\",\n \"tax\": 123,\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\",\n \"scheduled_date\": \"<string>\",\n \"metadata\": {},\n \"template_id\": 123,\n \"redirect_url\": \"<string>\",\n \"splits\": [\n {\n \"splits[].customer_id\": \"<string>\",\n \"splits[].split_type\": \"<string>\",\n \"splits[].split_value\": 123,\n \"splits[].description\": \"<string>\",\n \"splits[].account_id\": \"<string>\",\n \"splits[].to_company_wallet\": true,\n \"splits[].scheduled_at\": \"<string>\"\n }\n ],\n \"partial_payment_config\": {\n \"min_amount_in_cents\": 123,\n \"max_amount_in_cents\": 123,\n \"max_payment_methods\": 123,\n \"timeout_hours\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onepay.la/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-idempotency"] = '<x-idempotency>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 123,\n \"title\": \"<string>\",\n \"currency\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"reference\": \"<string>\",\n \"tax\": 123,\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\",\n \"scheduled_date\": \"<string>\",\n \"metadata\": {},\n \"template_id\": 123,\n \"redirect_url\": \"<string>\",\n \"splits\": [\n {\n \"splits[].customer_id\": \"<string>\",\n \"splits[].split_type\": \"<string>\",\n \"splits[].split_value\": 123,\n \"splits[].description\": \"<string>\",\n \"splits[].account_id\": \"<string>\",\n \"splits[].to_company_wallet\": true,\n \"splits[].scheduled_at\": \"<string>\"\n }\n ],\n \"partial_payment_config\": {\n \"min_amount_in_cents\": 123,\n \"max_amount_in_cents\": 123,\n \"max_payment_methods\": 123,\n \"timeout_hours\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 0,
"total_paid_label": "$ 0",
"remaining_amount_in_cents": 140000000,
"remaining_label": "$ 1.400.000",
"progress_percentage": 0,
"is_fully_paid": false,
"min_amount_in_cents": 20000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": null,
"charges": []
}
}
Crea un nuevo pago en tu cuenta.
Headers
string
required
Token único para garantizar la idempotencia de la petición
Body
number
required
Monto a cobrar, en unidades mayores de la moneda (no en centavos). Enviar
1400000 con
currency: "COP" cobra $1.400.000 COP.No lo confundas con los campos de
partial_payment_config, que sí van en centavos: los
reconoces porque lo llevan en el nombre (min_amount_in_cents).string
required
Breve mensaje que se mostrará al usuario al realizar el pago
string
Código de moneda ISO (COP, USD) por defecto COP
string
Número de teléfono del cliente a enviar la solicitud de pago via whatsapp.
string
Campo opcional si quieres enviar una solicitud de pago via email
string
Referencia de pago para que el usuario pueda interactuar con el portal de recaudo.
number
Monto en la misma moneda con valor de impuestos, el valor predeterminado será del 19%
string
ID externo para relacionar el pago con un registro ya existente en tu sistema.
string
Descripción del pago
string
URL de un documento que se mostrará al usuario para que pueda realizar el pago.
date
Fecha de pago oportuno, en formato
YYYY-MM-DD HH:MM:SS.No bloquea el pago: pasada esta fecha el cobro se sigue pudiendo pagar. Su
función es alimentar las reglas de cobranza (los recordatorios de “tu pago vence
mañana” y de mora salen de acá). Es la misma fecha que el due_date de una
factura, que se copia al cobro que la cobra.date
Fecha de expiración del cobro, en formato
YYYY-MM-DD HH:MM:SS.Sí bloquea el pago: al cumplirse, el cobro pasa a estado expired y deja de
poder pagarse. Si no la envías se aplica la expiración por defecto configurada
para tu empresa; si tu empresa no tiene una configurada, el cobro no expira.Son dos fechas distintas y complementarias:
due_date es hasta cuándo conviene
pagar (blanda, dispara la cobranza) y expiration_date es hasta cuándo se
puede pagar (dura, cierra el cobro). Podés enviar una, la otra o las dos.date
Fecha en la que el cobro será enviado al usuario.
YYYY-MM-DD.object
Metadatos adicionales del pago en formato JSON
La llave
template_id está reservada. Si la envías dentro de metadata recibirás un error 422: úsala como campo de primer nivel.integer
Plantilla de WhatsApp con la que se enviará el cobro. Si no la envías, OnePay elige la plantilla según la configuración de tu canal.Obtén los valores válidos con
GET /templates: solo sirven los id que traen selectable: true, es decir, plantillas aprobadas de categoría PAYMENT que pertenecen a tu empresa o son genéricas compartidas contigo.Si la plantilla no existe, no está aprobada, no es de cobro o no está disponible para tu empresa, la petición falla con un error 422 y el cobro no se crea.
La plantilla queda fijada en el cobro: la verás en
metadata.template_id de la respuesta y se usará también en los reenvíos. Si el cobro entra al motor de cobranzas, los recordatorios por etapa usan la plantilla configurada en la regla correspondiente.string
URL de redirección
array
Los pagos divididos permiten distribuir automáticamente un único pago entre múltiples destinatarios según reglas preestablecidas, optimizando la gestión de fondos sin necesidad de cálculos manuales o costos adicionales.
Show Campos de splits[]
Show Campos de splits[]
string
required
ID del cliente beneficiario del split. Ver clientes.
string
required
Tipo de distribución:
percentage— Porcentaje entero del monto total (10= 10%)fixed— Monto fijo en unidades mayores de la moneda (no en centavos)
Si el total de splits supera el 100% del monto o excede el monto total, la operación será rechazada.
integer
required
Valor del split según el tipo:
- Si
split_typeespercentage: porcentaje entero (5= 5%,100= 100%) - Si
split_typeesfixed: monto en la misma unidad queamount(unidades mayores, no centavos)
Versiones anteriores de esta página describían el porcentaje “en centésimas” (
10000 = 100%).
Era un error: la suma de los splits de tipo percentage no puede pasar de 100, así que
esos valores se rechazan con un 422.string
Descripción interna del split.
string
ID de la cuenta donde se recibirá el split. Si no se especifica, se usa la cuenta principal del cliente.Para dividir hacia otra empresa que usa OnePay, registra su saldo como una cuenta y usa ese
account_id. Ver la guía.boolean
deprecated
Forma anterior de dividir hacia el saldo de otra empresa:
true y el identificador del saldo
ajeno en account_id, en cada cobro.Obsoleto. Registra ese saldo como una cuenta del cliente y usa
customer_id + account_id
como en cualquier otro split. Cómo migrar.
Ambas formas funcionan durante la transición.string
Fecha programada para realizar el split (
YYYY-MM-DD HH:mm:ss). Si es null, se ejecuta de inmediato.object
Configuración para pagos parciales. Permite que un cobro sea pagado en múltiples transacciones.
Requiere que el feature Pagos Parciales esté habilitado en tu cuenta. Contacta a soporte para activarlo.
Show Propiedades
Show Propiedades
integer
Monto mínimo por pago parcial en centavos. Mínimo: 100 (equivale a $1).
integer
Monto máximo por pago parcial en centavos. Si no se envía, el máximo es el saldo restante.
integer
Número máximo de pagos parciales permitidos. Mínimo: 2, Máximo: 10. Por defecto: 3.
integer
Horas antes de que expire la ventana de pago parcial después del primer abono. Mínimo: 1, Máximo: 720. Por defecto: 24.
Métodos de pago permitidosEl método de pago disponible depende de la configuración de tu cuenta. Comunícate con el equipo de soporte para habilitar métodos adicionales.
Solo uno de los dos (
| Método | Campo requerido | Descripción |
|---|---|---|
| Cuenta bancaria (ACH) | account_id | Débito directo desde cuenta bancaria registrada |
| Tarjeta de crédito/débito | card_id | Cargo a tarjeta tokenizada |
account_id o card_id) debe estar presente en la petición.Ejemplos de uso
- curl
- JavaScript
- Python
curl https://api.onepay.la/v1/payments \
-X POST \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "x-idempotency: payment-123" \
-d '{
"amount": 1400000,
"currency": "COP",
"title": "Suscripción Premium",
"reference": "INV-2045",
"phone": "+573201112233",
"email": "customer@example.com",
"redirect_url": "https://app.onepay.la/thanks",
"allows": {
"cards": true,
"accounts": true,
"pse": true
},
"metadata": {
"salesforce_id": "OP-554"
}
}'
import fetch from 'node-fetch';
const body = {
amount: 1400000,
currency: 'COP',
title: 'Suscripción Premium',
reference: 'INV-2045',
phone: '+573201112233',
email: 'customer@example.com',
redirect_url: 'https://app.onepay.la/thanks',
allows: {
cards: true,
accounts: true,
pse: true
},
metadata: {
salesforce_id: 'OP-554'
}
};
await fetch('https://api.onepay.la/v1/payments', {
method: 'POST',
headers: {
Authorization: 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
'x-idempotency': 'payment-123'
},
body: JSON.stringify(body)
});
import requests
payload = {
"amount": 1400000,
"currency": "COP",
"title": "Suscripción Premium",
"reference": "INV-2045",
"phone": "+573201112233",
"email": "customer@example.com",
"redirect_url": "https://app.onepay.la/thanks",
"allows": {
"cards": True,
"accounts": True,
"pse": True
},
"metadata": {
"salesforce_id": "OP-554"
}
}
response = requests.post(
"https://api.onepay.la/v1/payments",
headers={
"Authorization": "Bearer sk_test_xxx",
"x-idempotency": "payment-123"
},
json=payload,
timeout=15
)
response.raise_for_status()
print(response.json())
Response
string
Identificador único del pago
number
Monto del pago en pesos
string
Código de moneda ISO
string
Estado del pago:
pending- Pendienteprocessing- Procesandoapproved- Aprobadodeclined- Rechazadocancelled- Canceladoexpired- Expiradopartially_paid- Parcialmente pagadopartial_expired- Pago parcial expirado
string
ID del cliente que realizó el pago
string
Método de pago utilizado
string
Descripción del pago
object
Metadatos adicionales del pago
object
Información de pago parcial. Solo presente cuando
partial_payment_config está configurado.Show Propiedades
Show Propiedades
integer
Total pagado hasta el momento en centavos
string
Total pagado formateado (ej: “$50.000”)
integer
Saldo restante por pagar en centavos
string
Saldo restante formateado
number
Porcentaje de progreso del pago (0 a 100)
boolean
Indica si el pago fue completado totalmente
integer
Monto mínimo por pago parcial en centavos
integer
Monto máximo por pago parcial en centavos
integer
Número máximo de pagos parciales permitidos
integer
Horas de expiración configuradas
string
Fecha de expiración del pago parcial (ISO 8601). Se establece después del primer abono.
string
Fecha y hora de creación en formato ISO 8601
Ejemplo de respuesta
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Suscripción Premium",
"currency": "COP",
"amount": 1400000,
"amount_label": "$ 1.400.000",
"title": "Suscripción Premium",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": "https://app.onepay.la/thanks",
"provider_id": null,
"metadata": { "salesforce_id": "OP-554" },
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null,
"partial_payment": {
"total_paid_in_cents": 0,
"total_paid_label": "$ 0",
"remaining_amount_in_cents": 140000000,
"remaining_label": "$ 1.400.000",
"progress_percentage": 0,
"is_fully_paid": false,
"min_amount_in_cents": 20000000,
"max_amount_in_cents": null,
"max_payment_methods": 3,
"timeout_hours": 24,
"partial_expires_at": null,
"charges": []
}
}
Was this page helpful?
⌘I