Orders & Reconciliation
A Croissant Pay order is an ordinary Shopify order with discount lines and a few identifying attributes. If you own an ERP sync, an analytics pipeline, or anything else that consumes orders, this is the page that matters.
Order Attributes
Cart attributes become order note attributes — customAttributes in the GraphQL Admin API, note_attributes in REST and webhook payloads. Attributes prefixed with an underscore are private: they travel with the order and are readable through the API, but Shopify does not display them in the admin.
| Attribute | Visible in admin | What it is for |
|---|---|---|
_croissant_pay_session_id | No | The reference to quote in any support conversation about the order. Safe to read and log |
croissant_pay_token | Yes | Croissant internal value. Present on non-Plus orders — the one Croissant attribute a merchant will notice in the admin |
croissant_pay_checkout_id | Yes | Croissant internal value |
_croissant_pay_subtotal | No | Croissant internal value |
croissant_checkout_tokens | Yes | Croissant internal value |
On Shopify Plus, the order also carries a croissant/croissant_pay_session metafield. Read it if you need the session reference on a Plus store.
query CroissantOrder($id: ID!) {
order(id: $id) {
name
customAttributes { key value }
metafield(namespace: "croissant", key: "croissant_pay_session") {
value
}
}
}How a Croissant Order Looks Downstream
This is the part that surprises integrators. Croissant Pay is not a Shopify payment method, so the value the shopper redeemed appears as discounts, not tender:
- Order totals are genuinely reduced. A fully covered order can be a $0 order in Shopify, with the redeemed value split across up to four discount lines.
- The card charge is not a Shopify transaction. It happens outside Shopify, and Croissant settles with you separately, so Shopify's payments and payouts data will not show it.
- Discount-heavy reporting will look distorted. Anything that reads Shopify discount totals as margin given away, or treats a $0 order as a test order, needs to special-case these. Filter on the Croissant discount titles or the session attribute.
- Returns and refunds behave normally in Shopify — Croissant reverses the credit and card portions on its side in proportion.
If you are wiring Croissant volume into finance or BI, reconcile against Croissant's settlement rather than Shopify order revenue. The integration model you are on determines the commercial side of that.
Order Events
The app subscribes to these on install and reports them to Croissant automatically. There is nothing to build and no endpoint to expose.
| Shopify event | What Croissant does |
|---|---|
checkouts/create | Recognizes a checkout that used Croissant |
orders/create | Recognizes the resulting order |
orders/paid | The shopper's card is charged and their credit balance is drawn down |
orders/cancelled | The card hold is released and credit is returned |
refunds/create | The shopper is refunded to their original payment method and their credit is restored |
returns/process | Same, applied to the returned portion |
What Data Croissant Receives
Useful when a security or privacy reviewer asks. There are three separate channels.
| Channel | What is sent |
|---|---|
| Storefront and checkout blocks | Cart contents (product, quantity, price), your store domain, and the checkout URL. No shopper personal data — the shopper signs in and enters payment details on Croissant's own hosted page, never in your storefront |
| Analytics | Croissant button impression and click events, carrying the store domain and where the button was shown. No shopper identifiers |
| Admin API and webhooks | Standard Shopify order, checkout, refund, and return payloads, which do include customer details, under the scopes below |
The scopes shown at install are read_customers, read_orders, read_all_orders, read_products, read_returns, read_gift_cards, write_gift_cards, read_customer_events, write_discounts, and write_pixels. write_discounts creates the five automatic discounts; write_pixels registers the analytics pixel. Croissant also handles Shopify's GDPR compliance webhooks for customer data requests, customer redaction, and shop redaction.
Reporting
The Croissant app includes a Reporting page in your Shopify admin, scoped to your store:
- Order KPIs over a selectable period, across confirmed and pending Croissant Pay volume.
- Daily order value in and out over 7, 30, 60, or 90 days, split into confirmed and pending.
- An order ledger, filterable by confirmed, pending, or cancelled, and paginated.
- A capital summary — retainer balances, credit used, credit remaining, and payments — for merchants on a Croissant-funded model.
Next: Testing & Troubleshooting → verify an install end to end