create_checkout=true, or later with the checkout endpoint, and hand it to whoever pays.
Order state advances only via the verified Stripe webhook. Minting a
checkout session never changes state, and neither does a payer landing on
the success page — SignSealShip marks an order paid only when Stripe’s
signed webhook confirms it. Poll
GET /api/partner/orders/{code} or subscribe to the
order webhook topics to follow along.Authorization: Bearer sss_pk_...) and share the partner-write limit of 60 requests per minute per key. See authentication.
Create an order
POST /api/partner/orders
The request is multipart/form-data. Send the document exactly one of two ways — never both:
- Upload it as the
documentpart (PDF, up to 35 MB), or - Reference a fill-online result with
fill_token, the 40-character lowercase-hex token the fill-online rail hands back after your client types through a form.
file
The client’s own completed PDF, up to 35 MB. Mutually exclusive with
fill_token.string
A 40-character lowercase-hex token from the fill-online rail, in place of a
document upload. Mutually exclusive with document.string
required
The signer / client email.
string
The signer / client name.
string
A catalog document slug (see the Forms & Documents
library). When present, the catalog row
defines the sign / notary services for the order; shipping stays additive
via
svc_ship.string
"true" to include e-signing.string
"true" to include online notarization.string
"true" to include shipping. Send the ship_* address fields with it.string
Two-letter US state where the signer is located.
string
Two-letter US state the shipment is destined for.
string
required
Must be
"true" — attests that this is the client’s own completed document
(bring-your-own-document).string
Your own matter / file number, up to 120 characters. Echoed back on
listings, the fetch endpoint, and every order webhook
event, so you can correlate without
storing order codes.
string
Recipient name, when shipping.
ship_line1, ship_line2, ship_city,
ship_state, and ship_postal complete the address the same way.string
"true" to also mint the Stripe hosted-checkout session in the same call
and return it as checkoutUrl.string
The order’s public code — the same code that opens
/orders/{orderCode}
and that rooms attach by.string
Root-relative path to the order page,
/orders/{orderCode}.string
The order’s status name (for example
"QuoteReady").string
The
external_reference you sent, or null.integer
Pre-discount total in USD cents, from the B2B price book.
integer
Your subscription-tier discount, computed and applied server-side.
integer
What checkout will charge:
subtotalCents - discountCents.array
The itemized quote.
string
The Stripe hosted-checkout URL.
null unless all three hold:
create_checkout=true was sent, payments are configured, and the order is
payable — an order that needs a manual quote (ManualQuoteRequired)
returns no checkout.201 Created
type values are the PascalCase names of the platform’s line-type enum
(WorkflowFee, NotaryFee, TechFee, RushFee, ExtraSignerFee,
ExtraSealFee, WitnessFee, ScanbackFee, StorageFee,
ShippingCarrierRate, ShippingHandlingFee, PrintMailFee, FaxFee,
ServiceAdjustment, Discount, …). Worth coding against:
- There is no
esignline. E-signature retail is folded intoWorkflowFee. - Shipping is TWO lines since live rate-shopping shipped: the carrier’s
postage passed through at the rate quoted for the destination address
(
ShippingCarrierRate), plus a disclosed handling fee (ShippingHandlingFee). Postage varies by address — it is no longer a flat amount you can predict from the request alone. - Discount codes appear as a negative-amount
Discountline. - New types may be added over time; render unknown types as display-only rows.
400 {"error": "..."} for validation failures and blocked states — a missing email or byod_confirmed, both document and fill_token (or neither), an oversized file, a bad fill_token, or an unknown doc_slug. 401 {"error": "..."} for a missing or bad key.
List your orders
GET /api/partner/orders?limit=&status=&external_reference=
Returns the orders created with your partner key, newest first.
integer
default:"20"
Page size — default 20, maximum 100.
string
Filter by order status name (for example
QuoteReady, Paid,
Completed).string
Filter to orders created with this
external_reference.array
One summary per order, newest first.
Fetch an order
GET /api/partner/orders/{code}
Partner-scoped: another partner’s order and an unknown code return the identical 404 — nothing to enumerate.
string
required
The order’s public code from the create response.
orderCode, orderUrl, status, externalReference, subtotalCents, discountCents, totalCents, lines — plus:
string
Which services the order includes, as a comma-separated flags string — e.g.
"Sign, Notarize, Ship". Possible flags: Sign, Notarize, Ship, Fax.
Parse by splitting on ", " — this is NOT an object of booleans.string
The e-sign envelope’s status once the order includes signing, or
null.string
The signer / client email.
string
ISO 8601 creation time.
404 {"error": "..."} for an unknown code or another partner’s order — indistinguishable by design.
Mint a checkout session
POST /api/partner/orders/{code}/checkout
Mint the Stripe hosted-checkout URL for a payable order — the same URL create_checkout=true returns at create time. Use it when you quoted first and collect payment later.
string
required
The order’s public code.
curl
200 OK
404 for an unknown or cross-partner code, 409 {"error": "..."} when the order is not payable in its current state (for example, awaiting a manual quote), 503 {"error": "..."} when payments are not configured, 502 {"error": "..."} when Stripe fails to create the session.
Orders created through this API emit
order.created, payment.cleared,
signature.completed, and shipment.delivered events to subscribed
webhooks, each echoing your external_reference — see
webhooks.