Skip to main content
The Order API places a full SignSealShip order — e-signing, online notarization, shipping, in any combination — for a document your client has already completed. You send the PDF (or a fill-online token) plus the services; SignSealShip prices the order server-side from the B2B price book with your subscription tier’s discount applied automatically, and returns an itemized quote. There is no client-sent amount anywhere in the API. Payment goes through Stripe hosted checkout: mint the checkout URL at create time with 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.
All four routes require your key (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 document part (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
Line 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 esign line. E-signature retail is folded into WorkflowFee.
  • 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 Discount line.
  • New types may be added over time; render unknown types as display-only rows.
Errors: 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.
The response carries everything the create response does — 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.
Errors: 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
Errors: 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.