Skip to content

Payment links

Updated: May 21, 2026

Payments API also enables businesses to collect payments from their customers via WhatsApp using Payment Links.

When using this integration, WhatsApp only facilitates the communication between merchants and buyers. Merchants are responsible for integrating with a PSP from which they can generate Payment Links, and confirm their payment.

Before you start

  • Familiarize yourself with the Orders API. Orders are the entry point for collecting payments in WhatsApp.
  • You need an existing integration with a PSP to generate Payment Links and do automatic reconciliation when a payment is made.
  • You must update the order status as soon as a payment is made.

Integration steps

The following sequence diagram shows the typical integration with Payment Links.

Sequence diagram of Payment Links flow between User, WhatsApp, Browser, Business, and Payment Gateway

1. Send an order details message

Follow the full integration guide in the Orders API page.

If Payment Link payment is available on this order, provide a payment_link in the payment_settings attribute. You can optionally include an order object with itemized products, fees, and discounts, or send a simplified message with just the total amount and payment settings.

The following images show how the order details message with Payment Links appears in WhatsApp, in both full and simplified versions.

Full order details message with Payment Link showing itemized products and Open payment link buttonSimplified order details message with Payment Link showing total amount and Open payment link button

Endpoint

POST /{PHONE_NUMBER_ID}/messages

Payload example

{  
  "recipient_type": "individual",  
  "to": "<PHONE_NUMBER>",  
  "type": "interactive",  
  "interactive": {  
    "type": "order_details",  
    "body": {  
      "text": "Your message content"  
    },  
    "action": {  
      "name": "review_and_pay",  
      "parameters": {  
        "reference_id": "unique-reference-id",  
        "type": "digital-goods",  
        "payment_type": "br",  
        "payment_settings": [  
          {  
            "type": "payment_link",  
            "payment_link": {  
              "uri": "https://my-payment-link-url"  
            }  
          }  
        ],  
        "currency": "BRL",  
        "total_amount": {  
          "value": 50000,  
          "offset": 100  
        },  
        "order": {  
          "status": "pending",  
          "tax": {  
            "value": 0,  
            "offset": 100,  
            "description": "optional text"  
          },  
          "items": [  
            {  
              "retailer_id": "1234567",  
              "name": "Cake",  
              "amount": {  
                "value": 50000,  
                "offset": 100  
              },  
              "quantity": 1  
            }  
          ],  
          "subtotal": {  
            "value": 50000,  
            "offset": 100  
          }  
        }  
      }  
    }  
  }  
}

Simplified payload example

You can send a simplified order details message without the order object. Sending a simplified order details message is useful when you don't need to send itemized product details and only need to collect the total payment amount.

{  
  "recipient_type": "individual",  
  "to": "<PHONE_NUMBER>",  
  "type": "interactive",  
  "interactive": {  
    "type": "order_details",  
    "body": {  
      "text": "Your message content"  
    },  
    "action": {  
      "name": "review_and_pay",  
      "parameters": {  
        "reference_id": "unique-reference-id",  
        "type": "digital-goods",  
        "payment_type": "br",  
        "payment_settings": [  
          {  
            "type": "payment_link",  
            "payment_link": {  
              "uri": "https://my-payment-link-url"  
            }  
          }  
        ],  
        "currency": "BRL",  
        "total_amount": {  
          "value": 50000,  
          "offset": 100  
        }  
      }  
    }  
  }  
}

Parameters object

Field NameOptional?TypeDescription
payment_settingsOptionalPayment Settings ObjectList of payment related configuration objects.

Payment settings

Field NameOptional?TypeDescription
typeRequiredStringMust be payment_link.
payment_linkRequiredPayment Link ObjectPayment Link object that WhatsApp uses to render the option to buyers during the checkout flow.
Field NameOptional?TypeDescription
uriRequiredStringThe Payment Link's uri that the web browser opens when the user taps the Payment Link CTA button.

2. Send an order status update

Once the payment is confirmed, you must send an order status update. Follow the integration guide in the Orders API page.

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About