Update a payment
Change a payment's metadata.
Changes a payment's metadata. Checkout sets everything else, so it can't change.
Path
idstring RequiredThe payment's ID, such aspmt_QI02vLdJGd48hBbg.
Body
metadataobjectMerged by key. An empty string ornullremoves a key, andnullclears them all.
Errors
- 400
invalid_requestA field other thanmetadatawas sent, a key or value breaks the rules, or the result would hold more than 20 keys. - 404
not_foundNo payment with that ID belongs to your business.
Any request can also fail on its key or its body. See errors.
Request
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": {
"shipped": "true"
}
}'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: {
shipped: "true"
}
}),
});
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": {
"shipped": "true"
}
},
)
data = response.json()["data"]Response200 OK
{
"data": {
"id": "pmt_QI02vLdJGd48hBbg",
"kind": "payment",
"status": "succeeded",
"amount": "49.00",
"currency": "USD",
"fee_payer": "business",
"customer_fee": "0.00",
"amount_received": "49.00",
"reporting": {
"currency": "USD",
"amount": "49.00",
"fee": "0.00",
"transaction_fee": "0.25",
"customer_fee": "0.00",
"net": "48.75"
},
"fee_rate_bps": 0,
"method": {
"rail": "crypto",
"asset": "USDC",
"network": "ethereum",
"amount": "49.00",
"expected_amount": "49.00",
"overpaid_amount": null,
"from_address": "0x136e44a2738dea5217e8d6745463d2a9a84d1421",
"tx_hash": "0xc16a611d90302ba917593ed9743f5e734a556e8d2f35bb0d60a2ca02ac99bb20",
"explorer_url": "https://etherscan.io/tx/0xc16a611d90302ba917593ed9743f5e734a556e8d2f35bb0d60a2ca02ac99bb20"
},
"settlement": {
"destination": "wallet",
"asset": "USDC",
"network": "ethereum",
"amount": "49.00",
"wallet_id": "wal_1fIGZOrILmsCO0jw",
"address": "0x9a3c416D4A81669C01f4515bBDEB93C45d3813fe",
"tx_hash": "0xc16a611d90302ba917593ed9743f5e734a556e8d2f35bb0d60a2ca02ac99bb20",
"explorer_url": "https://etherscan.io/tx/0xc16a611d90302ba917593ed9743f5e734a556e8d2f35bb0d60a2ca02ac99bb20"
},
"customer_id": "cst_gWFWcc7Ga0Pv7LSC",
"link_id": null,
"url": "https://checkout.402pay.co/checkout/2jrsrcxv7k",
"reference": "order_1042",
"metadata": {
"order_id": "1042",
"shipped": "true"
},
"success_url": "https://example.com/thanks",
"cancel_url": "https://example.com/cart",
"expires_at": "2026-09-27T21:22:47.038Z",
"canceled_at": null,
"checkout_id": "chk_C5yhPQvPqpYgdDgj",
"description": "Pro plan, monthly",
"country": "US",
"failure_code": null,
"failure_message": null,
"confirmed_at": "2026-09-26T21:23:10.247Z",
"created_at": "2026-09-26T21:22:47.038Z",
"updated_at": "2026-09-26T21:23:10.247Z",
"events": [
{
"type": "created",
"created_at": "2026-09-26T21:22:47.038Z",
"data": null
},
{
"type": "method_selected",
"created_at": "2026-09-26T21:22:47.047Z",
"data": {
"rail": "crypto",
"asset": "USDC",
"network": "ethereum"
}
},
{
"type": "detected",
"created_at": "2026-09-26T21:23:07.047Z",
"data": {
"amount": "49.00",
"network": "ethereum",
"tx_hash": "0xc16a611d90302ba917593ed9743f5e734a556e8d2f35bb0d60a2ca02ac99bb20"
}
},
{
"type": "confirmation",
"created_at": "2026-09-26T21:23:08.647Z",
"data": {
"current": 1,
"required": 2
}
},
{
"type": "confirmation",
"created_at": "2026-09-26T21:23:10.247Z",
"data": {
"current": 2,
"required": 2
}
},
{
"type": "succeeded",
"created_at": "2026-09-26T21:23:10.247Z",
"data": null
}
]
}
}