Skip to main content

Dynamic Links

A dynamic link is a payment link without a fixed amount. The buyer enters the amount they wish to pay before selecting a payment method.
  • Donations: Let supporters choose their contribution amount.
  • Tips or gratuities: Let customers decide how much to tip.
  • Flexible invoicing: When the amount varies per transaction.
  • Pay-what-you-want: For products or services with flexible pricing.
Omit the amount field from the request:
curl -X POST "https://api.wava.co/v1/links" \
  -H "merchant-key: YOUR_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Donation to Foundation XYZ",
    "currency": "COP",
    "redirect_link": "https://mysite.com/thanks"
  }'
The response is identical to a regular payment link:
{
  "data": {
    "payment_link_id": 9877,
    "payment_url": "https://checkout.wava.co/link/xyz789abc012",
    "hash": "xyz789abc012",
    "expires_at": "2025-03-15T23:59:59.000Z"
  }
}
When the buyer opens the link, they see an amount input field before proceeding to payment method selection.
The only difference between a regular payment link and a dynamic link is whether you include the amount field in the request. Everything else — response format, webhooks, redirects — works the same way.

Collecting shopper contact data

By default, dynamic links only ask buyers for the information their payment method requires (phone number for Nequi, national ID for Daviplata, etc.). If you need the buyer’s name, email, or phone number to identify the payer in your backoffice, enable the collect_shopper_data flag:
curl -X POST "https://api.wava.co/v1/links" \
  -H "merchant-key: YOUR_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Donation to Foundation XYZ",
    "currency": "COP",
    "redirect_link": "https://foundation.org/thanks",
    "collect_shopper_data": true
  }'
When this flag is set, the checkout page shows a contact form (first name, last name, email, phone) before the buyer proceeds to payment method selection. The submitted data is stored with the order.

Behavior

collect_shopper_dataWhat the buyer sees
false (default)Goes straight to payment method selection
trueContact form → payment method selection

Rules

  • Only valid on dynamic links (no amount field). Setting collect_shopper_data: true on a fixed-amount link returns a 400 error.
  • Fixed-amount links already collect shopper data by default — the flag is not needed there.
  • If the flag is omitted, it defaults to false.
Use collect_shopper_data when you need to reconcile payments against a known buyer (e.g., donations, event registrations) and your payment gateway alone doesn’t provide enough buyer identification.