Payment Links
Generate custom payment links to charge third parties without technical integration.
Payment Links allow you to receive payments without requiring technical integration from the payer.
Payment Link flow
Create the link
Generate a Payment Link with fixed or variable amount.
Share the link
Send the URL to the payer by email, WhatsApp, etc.
Payer completes payment
The payer selects payment method and completes the transaction.
Receive notification
The system updates status to PAID and credits balance.
Generate a new payment link.
Create Payment Link
Authorizations
x-api-key and Authorization: Bearer <token> headers are required.Endpoint
POSThttps://dev.backend.colurs.co/payment-linksRequired Headers
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| currency | string | COP, USD | |
| amount | decimal | Fixed amount (required if is_general=false) | |
| is_general | boolean | true = variable amount, false = fixed amount | |
| description | string | Payment description | |
| fee_mode | string | payer or receiver | |
| expires_at | datetime | Link expiration date |
Response
{
"id": 123,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"owner": {
"username": "user",
"email":
"user@example.com"},
"currency": "COP",
"amount": 50000.0,
"colurs_fee_amount": 1000.0,
"colurs_iva_amount": 190.0,
"total_to_pay": 51190.0,
"status": "PENDING",
"expires_at": "2026-03-03T00:00:00Z",
"link_url": "https://colurs.me/pay/550e8400-e29b-41d4-a716-446655440000",
"allowed_methods": ["BANCOLOMBIA", "PSE", "NEQUI"],
"description": "Service payment",
"created_at":
"2026-02-03T10:00:00Z"}Payment method options
Authorizations
x-api-key and Authorization: Bearer <token> headers are required.Endpoint
GET/payment-links/methods/optionsRequired Headers
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]Response
{
"PSE": true,
"CARD": true,
"BREB": false,
"UMA": false,
"BANCOLOMBIA": true,
"NEQUI": true
}Customize methods for a link
Authorizations
x-api-key and Authorization: Bearer <token> headers are required.Endpoint
PATCH/payment-links/{link_uuid}/customRequired Headers
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| allowed_methods | object | Keys: PSE, CARD, BREB, UMA, BANCOLOMBIA, NEQUI (boolean each) |
Response
{
"id": 123,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"allowed_methods": { "PSE": true, "BANCOLOMBIA": true, "NEQUI": false }
}Fee modes
The system supports two modes for charging fees:
| Mode | Description | Example (amount: $50,000, fee: $1,190) |
|---|---|---|
payer | User pays amount + fees | User pays: $51,190 -> Credited: $50,000 |
receiver | User pays only amount | User pays: $50,000 -> Credited: $48,810 |
Fees are calculated automatically according to profile configuration
(CustomFees) or global fees.
Deposit / pay a Payment Link
Authorizations
x-api-key and Authorization: Bearer <token> headers are required.Endpoint
POST/payment-links/{uuid}/depositRequired Headers
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | Amount to pay | |
| payment_method | string | BANCOLOMBIA, PSE, NEQUI, etc. | |
| payer_data | object | Payer data according to method |
Response
{
"status": "PENDING",
"checkout_url": "https://checkout.colurs.me/...",
"amount": 51190.0
}Payment Link statuses
| Status | Icon | Description |
|---|---|---|
PENDING | β³ | Created, waiting payment |
ACTIVE | π | Payment in progress |
PAID | β | Payment completed |
EXPIRED | β | Link expired |
CANCELLED | β | Link canceled |
Available payment methods
| Method | Description | Generates link |
|---|---|---|
BANCOLOMBIA | Bancolombia Button | β |
PSE | Online secure payments | β |
NEQUI | Payment from Nequi app | β |
Get a Payment Link
Authorizations
x-api-key and Authorization: Bearer <token> headers are required.Endpoint
GET/payment-links/{link_uuid}/customRequired Headers
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]Response
{
"id": 123,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"owner": { "username": "user", "email": "user@example.com"},
"currency": "COP",
"amount": 50000.0,
"status": "PENDING",
"link_url": "https://colurs.me/pay/550e8400-e29b-41d4-a716-446655440000",
"allowed_methods": ["BANCOLOMBIA", "PSE", "NEQUI"]
}General link by user
Authorizations
x-api-key and Authorization: Bearer <token> headers are required.Endpoint
GET/payment-links/{user_reference}/generalRequired Headers
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Authorization: Bearer [ACCESS_TOKEN]Response
{
"id": 456,
"uuid": "...",
"currency": "COP",
"is_general": true,
"link_url":
"https://colurs.me/pay/..."}Full example
1. Create the Payment Link
curl -X POST https://api.colurs.co/payment-links \
-H "Authorization: Bearer [TOKEN]" \
-H "x-api-key: [API_KEY]" \
-H "Content-Type: application/json" \
-d '{
"currency": "COP",
"amount": 100000,
"is_general": false,
"description": "Monthly payment",
"fee_mode": "payer"
}'2. Share the URL
Send returned link_url to payer (e.g. https://colurs.me/pay/550e8400-e29b-41d4-a716-446655440000).
3. Payer completes payment
Payer uses POST /payment-links/{uuid}/deposit or completes flow at link URL.
4. Check the link
curl -X GET "https://api.colurs.co/payment-links/550e8400-e29b-41d4-a716-446655440000/custom" \
-H "Authorization: Bearer [TOKEN]" \
-H "x-api-key: [API_KEY]"5. Payment confirmed
When status becomes PAID, balance is credited automatically.
Common errors
| Code | Error | Description |
|---|---|---|
400 | AmountRequired | Amount required for general links |
400 | AmountMismatch | Amount does not match link amount |
400 | InvalidStatus | Link is not in a valid status for payment |
404 | NotFound | Payment Link does not exist |