curl --request POST \
--url https://api.wppfy.com/send/request-payment \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"number": "5511999999999",
"orderMessageId": "3EB0ID_DO_PEDIDO",
"pixKey": "123e4567-e89b-12d3-a456-426614174000",
"text": "Confira os dados para pagamento"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"messageid": "<string>",
"chatid": "<string>",
"sender": "<string>",
"senderName": "<string>",
"isGroup": false,
"fromMe": false,
"messageType": "<string>",
"source": "<string>",
"messageTimestamp": 0,
"status": "<string>",
"text": "",
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"convertOptions": "",
"buttonOrListid": "",
"owner": "",
"error": "",
"content": {},
"wasSentByApi": true,
"pinned": true,
"sendFunction": "<string>",
"sendPayload": {},
"fileURL": "<string>",
"callPeer": {
"jid": "<string>",
"name": "<string>",
"imagePreviewUrl": "<string>"
},
"send_folder_id": "<string>",
"track_source": "<string>",
"track_id": "<string>",
"ai_metadata": {
"agent_id": "<string>",
"turn": "<string>",
"flow_id": "<string>",
"request": {
"messages": "<array>",
"tools": "<array>",
"options": {
"model": "<string>",
"temperature": 123,
"maxTokens": 123,
"topP": 123,
"frequencyPenalty": 123,
"presencePenalty": 123
}
},
"response": {
"choices": "<array>",
"toolResults": "<array>",
"error": "<string>"
},
"outcome": {
"status": "sent",
"texts": 123,
"audio": true,
"menus": 123,
"files": 123,
"handoff": "<string>",
"lead": [
"<string>"
],
"detail": "<string>"
}
},
"sender_pn": "<string>",
"sender_lid": "<string>",
"sender_image_preview_url": "<string>",
"response": {
"status": "success",
"message": "Payment request sent successfully"
}
}{
"error": "Missing pixKey or pixCode"
}{
"error": "Invalid token"
}{
"error": "Failed to send payment request"
}Request payment
Sends a payment request with WhatsApp’s native “Review and pay” button. The flow supports PIX (static, dynamic, or disabled), boleto, payment link, and card, combining everything into a single interactive message.
How it works
- Sets the value in
amount(BRL by default) and optionally customizes the title, text, and additional note. - By default,
pixKeyis required. - The file pointed to by
fileUrlis attached as a document (a boleto or PDF invoice, for example). paymentLinkenables the external button.- To charge for an order received via WhatsApp, provide
orderMessageIdwith the ID of theOrderMessagemessage from that same contact. The API retrieves the order’s items, currency, and total;amountis not required in this case. A payment method must still be provided.
Common fields
This endpoint also supports the standard fields: delay, readchat, readmessages, replyid,
mentions, track_source, track_id, and async.
curl --request POST \
--url https://api.wppfy.com/send/request-payment \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"number": "5511999999999",
"orderMessageId": "3EB0ID_DO_PEDIDO",
"pixKey": "123e4567-e89b-12d3-a456-426614174000",
"text": "Confira os dados para pagamento"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"messageid": "<string>",
"chatid": "<string>",
"sender": "<string>",
"senderName": "<string>",
"isGroup": false,
"fromMe": false,
"messageType": "<string>",
"source": "<string>",
"messageTimestamp": 0,
"status": "<string>",
"text": "",
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"convertOptions": "",
"buttonOrListid": "",
"owner": "",
"error": "",
"content": {},
"wasSentByApi": true,
"pinned": true,
"sendFunction": "<string>",
"sendPayload": {},
"fileURL": "<string>",
"callPeer": {
"jid": "<string>",
"name": "<string>",
"imagePreviewUrl": "<string>"
},
"send_folder_id": "<string>",
"track_source": "<string>",
"track_id": "<string>",
"ai_metadata": {
"agent_id": "<string>",
"turn": "<string>",
"flow_id": "<string>",
"request": {
"messages": "<array>",
"tools": "<array>",
"options": {
"model": "<string>",
"temperature": 123,
"maxTokens": 123,
"topP": 123,
"frequencyPenalty": 123,
"presencePenalty": 123
}
},
"response": {
"choices": "<array>",
"toolResults": "<array>",
"error": "<string>"
},
"outcome": {
"status": "sent",
"texts": 123,
"audio": true,
"menus": 123,
"files": 123,
"handoff": "<string>",
"lead": [
"<string>"
],
"detail": "<string>"
}
},
"sender_pn": "<string>",
"sender_lid": "<string>",
"sender_image_preview_url": "<string>",
"response": {
"status": "success",
"message": "Payment request sent successfully"
}
}{
"error": "Missing pixKey or pixCode"
}{
"error": "Invalid token"
}{
"error": "Failed to send payment request"
}Authorizations
Body
- Option 1
- Option 2
ID of the chat the message will be sent to. Can be a phone number in international format, a group ID (@g.us), a user ID (with @s.whatsapp.net or @lid).
"5511999999999"
Charge amount (in BRL by default)
199.9
ID of an OrderMessage received from the same contact. Links the charge to the actual order.
Title appearing in the flow header
"Order Details"
Message displayed in the flow body
"Order #123 ready for payment"
Message footer text
"Example Store"
Name of the main item listed in the flow
"Gold Plan Subscription"
Identifier or invoice number
"PED-123"
Static PIX key (CPF/CNPJ/phone/email/EVP)
"123e4567-e89b-12d3-a456-426614174000"
PIX key type (CPF, CNPJ, PHONE, EMAIL, EVP). Default EVP
"EVP"
Receiver name displayed in the flow (defaults to the instance profile name)
"Example Store"
External URL for checkout (only approved domains; see list above)
"https://pagamentos.exemplo.com/checkout/abc"
URL or path (base64) of the document to be attached (e.g., PDF boleto)
"https://cdn.exemplo.com/boleto-123.pdf"
Filename displayed in WhatsApp when attaching fileUrl
"boleto-123.pdf"
Boleto digitable line (automatically enables the boleto method)
"34191.79001 01043.510047 91020.150008 5 91070026000"
ID of the message to be replied to
Mentioned numbers separated by comma
Delay in milliseconds before sending (displays "typing..." in WhatsApp)
Marks the chat as read after sending the message
Marks recent messages as read after sending
Queues the sending for asynchronous processing
Tracking source (e.g., chatwoot, internal-crm)
Tracking identifier (accepts duplicate values)
Response
Payment request sent successfully
Represents a message exchanged in the system
Internal unique message ID (format r + 7 random hex characters)
Original message ID at the provider
Related conversation ID
Message sender ID
Sender's display name
Indicates whether it is a group message
Indicates whether the message was sent by the user
Message content type
Message source platform
Original message timestamp in milliseconds
Message lifecycle status.
Common examples: Queued, Canceled, Failed, Sent, Delivered, Read.
In group messages, it follows the most advanced participant: Delivered when at least one received it, Read when at least one read it, and Played when at least one listened to it.
Original message text
ID of the quoted/replied message
Message edit history
ID of the reacted message
Poll and list voting data
Conversion of message options, list, poll and buttons
ID of the selected button or list item
Message owner
Error message if sending failed
Raw message content (serialized JSON or text)
Indicates whether the message was sent via API
Message pinned in the conversation (pin and unpin also arrive in messages_update, types Pinned and Unpinned)
Function used to send the message (when sent via API)
Payload used in the send when available. Base64 media data is omitted.
Message file URL or reference
Known contact associated with a call, when available in messageType: call.
Show child attributes
Show child attributes
Folder associated with the send (when applicable)
Tracking source
Tracking ID (may repeat)
Record of an AI round. The full one (request to the model, response, and outcome) is stored once, on the contact's last message that the round replied to, even when nothing went out (error, discarded response). Each message sent by the AI carries only agent_id and turn (the id of that contact message).
Show child attributes
Show child attributes
Sender's resolved PN JID (when available)
Sender's original LID (when available)
Temporary preview URL of the sender, when known. Hydration in this version fills in messages received in groups; the field may be omitted. It does not trigger a photo query to WhatsApp during listing.
Show child attributes
Show child attributes
