Skip to main content

Overview

Payment Links let you generate a hosted checkout URL for a specific order (product, fees, applicants, country, etc.).
Your customer opens the link and completes the payment on a secure hosted page.

Hosted Checkout

Redirect your customer to a ready-to-pay URL

Fast Setup

No complex integration required

Expires Automatically

Links include an expiresAt timestamp

How It Works

1

Create payment link

Your backend calls POST /payment-links with order details.
2

Receive redirect URL

You get { orderId, token, redirectUrl }.
3

Share or redirect

Send redirectUrl to the customer (or redirect them).
4

Customer pays

Customer completes the payment on the hosted checkout page.
Tip: Store orderId and token for tracking and support.

Request

curl -X POST http://api-sandbox.88pay.io/transactions/payment-links \
  -H "Content-Type: application/json" \
  -H "x-api-key: tu_api_key_super_secreta_aqui" \
  -d '{
    "submissionId": "opcional-ref-123",
    "productName": "VisaClick - Full service",
    "applicants": 2,
    "serviceFee": 100.00,
    "govFee": 50.00,
    "totalPrice": 150.00,
    "countryDestination": "U.S",
    "residence": "Colombia"
  }'

Response

{
  "orderId": "a1b2c3d4-...",
  "token": "eyJhbGciOi...",
  "redirectUrl": "https://page.88pay.io/?token=eyJhbGciOi...",
  "order": {
    "productName": "Service - Full service",
    "applicants": 2,
    "totalPrice": 150.0,
    "currency": "USD",
    "status": "pending_payment_method",
    "expiresAt": "2025-02-10T15:30:00.000Z"
  }
}

Fields

FieldTypeRequiredNotes
submissionIdstringNoOptional reference to your internal submission/order
productNamestringYesDisplay name for the product/service
applicantsnumberYesQuantity (e.g., applicants, seats, people)
serviceFeenumberYesService fee amount
govFeenumberYesGovernment fee amount
totalPricenumberYesTotal amount to pay (service + gov, or your final total)
countryDestinationstringYesDestination country label (free text)
residencestringYesCustomer residence label (free text)

Customer Experience

1

Open hosted link

Customer opens redirectUrl.
2

Choose payment method

Customer selects an available method on the hosted checkout.
3

Complete payment

Customer finishes the payment flow.
4

Order status updates

Your system can track the order using orderId.
Expiration: If expiresAt is reached, the link should be considered invalid and a new payment link must be created.

Best Practices

Store Identifiers

Save orderId + submissionId (if used) to reconcile payments

Handle Expiration

If expired, create a new link and resend to the customer

Use HTTPS in Production

Use TLS and keep your x-api-key secret (server-side only)

Don’t Expose API Keys

Never call the endpoint directly from the browser in production

Common Issues

Problem: Missing or invalid x-api-key
**Fix:**
- Ensure `x-api-key` header is present
- Confirm the key matches the environment (local vs prod)
Problem: redirectUrl not received or URL is malformed
**Fix:**
- Log the full JSON response
- Ensure you are using `data.redirectUrl` (not `order.redirectUrl`)

Next Steps