PeptidesPayment Docs
Payment ContainerOrder sync

Report your order id for a Payment Container order

POST/webhooks/payment-container/order-created

After a payment.container.succeeded event, create the order on your platform, then call this endpoint with your new order id. PeptidesPayment records it so later events (payment.container.refunded, payment.container.chargeback_*) echo it back for correlation.

Authentication. HMAC-SHA256 over the raw request body using your webhook signing secret. Send X-Signature: sha256=<hex> and X-Timestamp: <unix seconds>.

Idempotency. Posting the same order id twice returns 200 with status noop. Posting a different value for an order that already has one returns 409 and does not overwrite.

Header Parameters

X-Signature*string

HMAC-SHA256 of the raw request body using your shared_secret. Format: sha256=<64-hex>.

X-Timestamp*string

Unix epoch seconds at which the body was signed. Reject if skew > 5 minutes.

X-Request-Id?string

UUID v4. Optional but recommended for traceability.

Request Body

application/json

Request body

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/webhooks/payment-container/order-created" \  -H "X-Signature: string" \  -H "X-Timestamp: string" \  -H "Content-Type: application/json" \  -d '{    "merchant_id": "string",    "order_id": "string",    "external_order_id": "string",    "platform": "woocommerce"  }'
{  "order_id": "string",  "external_order_id": "string",  "status": "linked"}

Get the sales-tax / VAT rate for a ship-to address POST

Returns the **tax rate** (a fraction, e.g. `0.07` = 7%) for a ship-to address, computed with our own engine - the same combined state + county + city + district rate (statutory VAT outside the US) that the post-payment verifier uses. **How to use it** 1. Send the buyer's `shipping_address` (address only - no items or amounts). 2. We return `tax_rate`. 3. Compute `tax = round(tax_rate × taxable_base)`, where the base is the items subtotal (net of discounts) **+** shipping, only where the destination taxes freight. 4. Display the computed tax to the buyer as its own labeled line item (for example "Tax" or "VAT") in the checkout totals before payment - do not fold it silently into the grand total. The buyer must be able to see the amount they are being charged as tax. 5. Charge the buyer, then send that same tax back on the order in `merchant_supplied_totals.tax_cents`. Because the quote and the post-payment verification run the **same engine**, charging this number means **no tax-shortfall correction** is applied to your payout. A tax-free destination returns `tax_rate: 0` - collect no tax. `override_enabled` tells you whether PeptidesPayment expects to apply this tax for you: `false` means your store is configured to compute its own tax, so leave your own tax in place and ignore `tax_rate`. It is `true` for every other store (including tax-free destinations, where `tax_rate` is `0`).

Report a fulfillment change for a Payment Container order POST

When an order's shipping state changes on your platform, call this endpoint with the new status and tracking number. PeptidesPayment records the status and tracking and re-computes payout eligibility: an order becomes eligible once it is fulfilled and has no active dispute. **Authentication.** HMAC-SHA256 over the raw request body using your webhook signing secret. Send `X-Signature: sha256=<hex>` and `X-Timestamp: <unix seconds>`. **Tracking.** A tracking number is required when the status is `fulfilled` or `partially_fulfilled`; otherwise the request is rejected with 400. **Idempotency.** Posting the same status and tracking number twice returns 200 with status `noop`.