curl --request POST \
--url https://api.abacatepay.com/v2/webhooks/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Webhook de Pagamentos",
"endpoint": "https://meusite.com/webhooks/abacatepay",
"secret": "meu-secret-seguro",
"events": [
"checkout.completed",
"subscription.renewed"
]
}
'import requests
url = "https://api.abacatepay.com/v2/webhooks/create"
payload = {
"name": "Webhook de Pagamentos",
"endpoint": "https://meusite.com/webhooks/abacatepay",
"secret": "meu-secret-seguro",
"events": ["checkout.completed", "subscription.renewed"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Webhook de Pagamentos',
endpoint: 'https://meusite.com/webhooks/abacatepay',
secret: 'meu-secret-seguro',
events: ['checkout.completed', 'subscription.renewed']
})
};
fetch('https://api.abacatepay.com/v2/webhooks/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.abacatepay.com/v2/webhooks/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Webhook de Pagamentos',
'endpoint' => 'https://meusite.com/webhooks/abacatepay',
'secret' => 'meu-secret-seguro',
'events' => [
'checkout.completed',
'subscription.renewed'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.abacatepay.com/v2/webhooks/create"
payload := strings.NewReader("{\n \"name\": \"Webhook de Pagamentos\",\n \"endpoint\": \"https://meusite.com/webhooks/abacatepay\",\n \"secret\": \"meu-secret-seguro\",\n \"events\": [\n \"checkout.completed\",\n \"subscription.renewed\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.abacatepay.com/v2/webhooks/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Webhook de Pagamentos\",\n \"endpoint\": \"https://meusite.com/webhooks/abacatepay\",\n \"secret\": \"meu-secret-seguro\",\n \"events\": [\n \"checkout.completed\",\n \"subscription.renewed\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.abacatepay.com/v2/webhooks/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Webhook de Pagamentos\",\n \"endpoint\": \"https://meusite.com/webhooks/abacatepay\",\n \"secret\": \"meu-secret-seguro\",\n \"events\": [\n \"checkout.completed\",\n \"subscription.renewed\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "webh_abc123xyz",
"name": "Webhook de Pagamentos",
"endpoint": "https://meusite.com/webhooks/abacatepay",
"events": [
"checkout.completed",
"subscription.renewed"
],
"devMode": false,
"v2": true,
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-01T00:00:00.000Z"
},
"error": null,
"success": true
}{
"error": "Token de autenticação inválido ou ausente."
}Criar um webhook
Cria um novo webhook para receber notificações automáticas de eventos da sua loja.
O endpoint deve ser uma URL HTTPS válida e não pode apontar para endereços locais ou IPs privados.
Alternativa: Você também pode criar e gerenciar seus webhooks pelo Dashboard da AbacatePay.
curl --request POST \
--url https://api.abacatepay.com/v2/webhooks/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Webhook de Pagamentos",
"endpoint": "https://meusite.com/webhooks/abacatepay",
"secret": "meu-secret-seguro",
"events": [
"checkout.completed",
"subscription.renewed"
]
}
'import requests
url = "https://api.abacatepay.com/v2/webhooks/create"
payload = {
"name": "Webhook de Pagamentos",
"endpoint": "https://meusite.com/webhooks/abacatepay",
"secret": "meu-secret-seguro",
"events": ["checkout.completed", "subscription.renewed"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Webhook de Pagamentos',
endpoint: 'https://meusite.com/webhooks/abacatepay',
secret: 'meu-secret-seguro',
events: ['checkout.completed', 'subscription.renewed']
})
};
fetch('https://api.abacatepay.com/v2/webhooks/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.abacatepay.com/v2/webhooks/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Webhook de Pagamentos',
'endpoint' => 'https://meusite.com/webhooks/abacatepay',
'secret' => 'meu-secret-seguro',
'events' => [
'checkout.completed',
'subscription.renewed'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.abacatepay.com/v2/webhooks/create"
payload := strings.NewReader("{\n \"name\": \"Webhook de Pagamentos\",\n \"endpoint\": \"https://meusite.com/webhooks/abacatepay\",\n \"secret\": \"meu-secret-seguro\",\n \"events\": [\n \"checkout.completed\",\n \"subscription.renewed\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.abacatepay.com/v2/webhooks/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Webhook de Pagamentos\",\n \"endpoint\": \"https://meusite.com/webhooks/abacatepay\",\n \"secret\": \"meu-secret-seguro\",\n \"events\": [\n \"checkout.completed\",\n \"subscription.renewed\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.abacatepay.com/v2/webhooks/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Webhook de Pagamentos\",\n \"endpoint\": \"https://meusite.com/webhooks/abacatepay\",\n \"secret\": \"meu-secret-seguro\",\n \"events\": [\n \"checkout.completed\",\n \"subscription.renewed\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "webh_abc123xyz",
"name": "Webhook de Pagamentos",
"endpoint": "https://meusite.com/webhooks/abacatepay",
"events": [
"checkout.completed",
"subscription.renewed"
],
"devMode": false,
"v2": true,
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-01T00:00:00.000Z"
},
"error": null,
"success": true
}{
"error": "Token de autenticação inválido ou ausente."
}WEBHOOK:CREATE.Authorizations
Todas as requisições devem incluir sua chave de API no header Authorization usando o formato Bearer <abacatepay-api-key>. Sem esse header a requisição será rejeitada.
Saiba mais sobre como criar e usar chaves de API na documentação de autenticação.
Body
Dados para criação de um webhook.
Nome identificador do webhook
"Webhook de Pagamentos"
URL HTTPS que receberá as notificações de eventos
"https://meusite.com/webhooks/abacatepay"
Sua chave usada para autenticar nosso webhook
"meu-secret-seguro"
Lista de eventos que este webhook deve receber
checkout.completed, checkout.refunded, checkout.disputed, checkout.lost, transparent.completed, transparent.refunded, transparent.disputed, transparent.lost, subscription.completed, subscription.trial_started, subscription.cancelled, subscription.renewed, payout.completed, payout.failed, transfer.completed, transfer.failed [
"checkout.completed",
"subscription.renewed"
]
Was this page helpful?