Changelog
This changelog spans all Orchestrapay API versions, newest first.
v202608
Pin a checkout to a specific gateway, capture a customer address, drive the form from your own button, and localize the hosted card form.
- Pin a payment intent.
POST /v202608/payment-intentsaccepts an optionalpayment_form(pf_…),orchestrator(orc_…), orconnector(con_…) reference to route the intent to a specific hosted checkout, the same way the dashboard "payment link" flow does. Each is tenant-scoped and must be live (production); the hosted/paypage renders only the pinned gateway. Everything else on the endpoint is unchanged from v202607 (nearest-lower fallback still applies to all other endpoints). - Customer
address. Thecustomerobject now takes anaddress(line1,line2,city,state,postal_code,country). Whenaddress.countryis present, the hosted card form pre-fills and hides its country field, so returning customers aren't asked again. - Localized hosted card form. The PCI card form is now available in English, French, Arabic, Italian, and Spanish, with full right-to-left layout for Arabic. Pass
localeto<PaymentForm>(@orchestrapay/react), or it follows the payment's locale. - Trigger Pay from your own UI.
<PaymentForm>exposes an imperativerefwithsubmit()— render your own "Buy now" button anywhere and callref.current.submit()to run the exact same pay action as the built-in button. - Pay a single gateway for an existing intent. Render just one gateway (e.g. a PayPal button) for a payment intent by passing an inline single-gateway
paymentForm, or by pinning the intent at creation (above) — so the same intent can be paid through different UIs on different pages. - Merchant-initiated card charges, documented. The card MIT endpoint (
POST /cards/mit) — charge a saved card off-session for recurring, installment, or unscheduled payments — is now documented in Payment Methods. - SDK.
@orchestrapay/sdkrecognisesv202608;@orchestrapay/reactaddsapiVersion="v202608", the imperativesubmit()handle, and thelocaleprop. - Canonical regional hosts. The EU and Egypt API hosts follow the
api-<region>convention:api-eu1.orchestrapay.comandapi-eg1.orchestrapay.com(US is alreadyapi-us1.orchestrapay.com). The SDK derives the host from your key automatically, and the previousapi-europe/api-egypthosts keep working, so no change is required.
v202607
Typed IDs, a redesigned Payment Intents surface, a Customers API, and structured webhooks.
- One payment id, end to end. Refunds are now created against the
payment_intent(pi_...) you already hold, instead of a separate transaction intent. Responses expose typed, region-coded ids everywhere (pi_,re_,cus_). - Payment Intents. Create now returns the hosted
url,status,amount,currency,expires_at, andresource_created. New endpoints to retrieve one, list them (cursor pagination withstatus/customer/currency/createdfilters), and cancel a pending intent. Create takes a singlereturn_url, a structuredwebhooksarray, and acustomeryou can upsert inline by your ownreference. - Customers API. Full CRUD (
POST/GET/POSTupdate/GETlist/DELETE) keyed on your merchant-issuedreference. - Payment Forms API.
GET /v202607/payment-forms(andGET /v202607/payment-forms/{payment_form}) returns the payment methods on a form, so you can render your own picker without embedding@orchestrapay/react. Each method includesname,title,category,logo_url, andfavicon_url. Omit the id to resolve the tenant's default form, falling back to its production connectors, matching the embedded form. - Webhooks are now an event envelope:
{ id, type, created_at, data }, withtypeas<object>.<event>(e.g.payment.success). Payment webhooks are intent-level:payment.successandpayment.canceledare terminal, whilepayment.attempt_failedsignals a failed attempt on a still-open intent. Subscribe per endpoint viawebhooks[].events, and authenticate with theOrchestrapay-Webhook-Secretheader. Deliveries are at-least-once with exponential-backoff retries for up to 3 days. - SDK.
@orchestrapay/sdktargets v202607 by default, withpaymentIntents(create/retrieve/list/cancel),refunds(create/retrieve/list), andcustomers(create/retrieve/update/list/del), plus typed webhook events. - Subscriptions. Full recurring-billing surface at
/v202607:plans,subscriptions(create on a savedpm_…, immediate prorated plan changes viaproration_behavior, pause/resume/reactivate,upcomingproration preview),invoices(subtotal/discount/tax/credit breakdown),coupons+promotion-codes,tax-rates, andcheckout/sessions(hosted subscribe links). Dunning retries per plan schedule with customer emails and a hosted pay/update-card page; trials save the card with a no-charge setup. Webhook events:subscription.created/updated/canceled,invoice.paid/payment_failed. All in the SDK (subscriptions,plans,invoices,coupons,promotionCodes,checkoutSessions) and documented in the Subscriptions guide. Supersedes the v202606 subscriptions preview. Pricing models:per_unit(seats),tiered(graduated/volume ladders) andmetered(usage records) on top of flat, plusproducts, add-onsubscription items, future-datedschedules, multi-currencycurrency_options,credit-notes(customer-balance adjustments), invoice PDFs, SCA-aware renewals (requires_actioninvoices with a hosted confirm flow), andbilling-portal/sessions(login-free portal links).
v202606
Subscriptions API. Adds /v202606/subscriptions (plans, subscriptions, invoices). Objects now use a typed string id (e.g. sub_…, plan_…, in_…) and an object discriminator instead of uuid. Invoice id prefix is in_.
v202502
Initial public API version (payment intents, transactions, refunds).