Skip to main content

Payment Links

Payment links let you collect payments without building a custom checkout. Create a link, share it via any channel, and the buyer completes payment through the hosted Wava checkout page.

Use cases

  • Invoicing: Send a payment link with a fixed amount for an invoice.
  • Social commerce: Share links via WhatsApp, Instagram, or email.
  • Donations: Create dynamic links where the buyer enters the amount.
  • Recurring manual payments: Generate a new link for each billing cycle.

Request fields

Response

expires_at is the UTC timestamp when the link expires, or null if no ttl_minutes was provided. Share the link with your buyer. When they open it, they see the payment amount and can select their preferred payment method (Nequi, Daviplata, Breb, or Stripe if enabled). Use ttl_minutes to create time-limited links:
Once a link passes its expires_at timestamp:
  • The Wava checkout page returns a 410 error with code PAYMENT_LINK_EXPIRED.
  • Attempting to place an order on the link is blocked.
  • The error response includes redirect URLs (same fields as PAYMENT_LINK_INACTIVE) so you can send buyers to a custom expiration page.
In-flight payments are honored: if a buyer starts payment before the link expires and the gateway confirms afterward, the payment is accepted. Expiration only blocks new payment attempts.

Redirect URLs

After the buyer completes (or cancels) the payment, they are redirected to the URL you specified: All redirect fields are optional. If omitted, the buyer stays on the Wava checkout confirmation page.
Use order_key to associate the payment link with your internal reference (invoice number, order ID, etc.) for reconciliation.
Payment links created from the Wava merchant dashboard (app.wava.co) do not trigger webhook notifications. Webhooks are only sent for payment links created via the API. If you need webhook notifications for payments, create links programmatically using this endpoint.

Error codes