Metadata
Attach your own key-value data to payments and filter by it.
Attach your own data to a payment with metadata: up to 20 keys of up to 40 characters, with string values up to 500 characters. Keys use only letters, digits, _, . and -.
PATCH /payments/{id}merges by key. Set a key to an empty string ornullto remove it, or send"metadata": nullto clear them all.- Filter lists by it, such as
GET /payments?metadata[order_id]=1042. - It comes back on the payment and in every event about it, so your webhook handler has what it needs.
Update metadata
curl -X PATCH "https://api.402pay.co/api/v1/payments/pmt_QI02vLdJGd48hBbg" \
-H "Authorization: Bearer $PAY402_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"plan": "pro",
"seats": "5",
"coupon": ""
}
}'const response = await fetch("https://api.402pay.co/api/v1/payments/pmt_QI02vLdJGd48hBbg", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.PAY402_SECRET_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
metadata: {
plan: "pro",
seats: "5",
coupon: ""
}
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://api.402pay.co/api/v1/payments/pmt_QI02vLdJGd48hBbg",
headers={
"Authorization": f"Bearer {os.environ['PAY402_SECRET_KEY']}",
},
json={
"metadata": {
"plan": "pro",
"seats": "5",
"coupon": ""
}
},
)
data = response.json()["data"]