ReturnZap GraphQL API Documentation

Welcome to the ReturnZap API documentation. Here you can find details about all available queries, mutations, and types.

API Endpoints
https://api.returnzap.com/graphql/admin
Headers
# Your authorization token must be included in all requests.
Authorization: Bearer <YOUR_TOKEN_HERE>
Version

1.0.0

Introduction

This is the API documentation for ReturnZap. Here you can explore all the available queries, mutations, and data types.

Money semantics

Which amount do I actually refund?

Return.suggestedRefund(returnItemIds:) returns several MoneySet values. Only one of them is the amount to pay out.

Field Meaning
availableForRefundSet Gross ceiling for the selected items — the most this selection can be refunded. It does not report the remaining refundable amount of the whole order. Never pay this out.
suggestedRefundSet Gross suggested refund, before outstanding handling and restocking fees.
netRefundPayableSet The payable amount. suggestedRefundSet minus the handling and restocking fees still outstanding on the return, clamped at zero.

Pass netRefundPayableSet to returnRefund(refundFullAmount:).

The fee arguments on returnRefundhandlingFee and restockingFee — are record-only. They are stored on the return for reporting and do not reduce refundFullAmount. Sending suggestedRefundSet together with a fee argument over-refunds the customer by the fee. The same applies to returnCreateStoreCredit(amount:). One mode caveat: restockingFee is only recorded when the return's restocking fee is configured once per return; in once-per-item mode the argument is ignored and Return.actualRestockingFeeCharged stays unchanged.

Record-only does not mean optional. netRefundPayableSet is computed as suggestedRefundSet minus the fees still outstanding — the suggested fee minus what has already been recorded as charged. If you deduct a fee by paying out netRefundPayableSet but never send handlingFee / restockingFee, nothing is recorded, and the next partial refund on the same return will subtract the very same fee again and short-change the customer. Always send the fee amounts the deduction represents — that is what handlingFeeSuggestedSet and restockingFeeSuggestedSet are for, and it is what the ReturnZap admin UI does on every refund.

The one exception is a clamped payout: if netRefundPayableSet comes back 0.00 while suggestedRefundSet is positive, the outstanding fees exceed this selection's gross refund, so only part of the fee is actually being withheld. Do not send the full suggested fee amounts there — the recorded fee would exceed what was withheld, the return would show no outstanding fee, and the next partial refund would pay out too much. Recorded fees are cumulative maxima (Return.actualHandlingFeeCharged / Return.actualRestockingFeeCharged), so in the clamped case send fee amounts that grow those recorded values by at most this selection's suggestedRefundSet — or resolve the fee-bearing selection last, where the clamp cannot occur.

Optional shipping reimbursement and store-credit incentives are not folded into netRefundPayableSet; add them yourself if your flow offers them. For a store-credit incentive, adding it to amount alone is not enough: also pass it as returnCreateStoreCredit(bonusCredit:). When the shop issues credit as Shopify account credit, only the bonusCredit portion is excluded from the order's refundable balance — an incentive folded silently into amount consumes that balance and can shrink a later refund on the same order.

shopMoney vs presentmentMoney

Every MoneySet is { shopMoney, presentmentMoney }, and each Money is { amount, currencyCode }. Presentment is the currency the customer paid in; shop is the store's own currency.

returnRefund validates refundFullAmount against Shopify's presentment transaction totals, so send presentmentMoney.amount with refundCurrency: presentmentMoney.currencyCode. Use shopMoney only when aggregating across orders in a single currency — never mix the two in one total.

Worked example

suggestedRefund requires returnItemIds. It returns null when the list is empty, when none of the ids resolve to a return item on this return with a Shopify line item, or when the underlying Shopify call fails. A null is never "the refund is zero" — treat it as "unknown, do not refund" and retry.

query SuggestedRefund(: ID!, : [ID]!) {
  getReturn(returnId: ) {
    id
    suggestedRefund(returnItemIds: , refundShipping: false) {
      availableForRefundSet { presentmentMoney { amount currencyCode } }
      suggestedRefundSet    { presentmentMoney { amount currencyCode } }
      netRefundPayableSet   { presentmentMoney { amount currencyCode } }
      handlingFeeSuggestedSet   { presentmentMoney { amount } }
      restockingFeeSuggestedSet { presentmentMoney { amount } }
    }
  }
}

Then feed netRefundPayableSet.presentmentMoney straight into the mutation:

mutation Refund(
  : ID!
  : [ID!]!
  : Decimal!      # netRefundPayableSet.presentmentMoney.amount
  : String!     # netRefundPayableSet.presentmentMoney.currencyCode
  # The fee args are optional in the schema, but always send both (0 if none) — see
  # above, including the clamped-payout exception when netRefundPayableSet is 0.00.
  : Decimal! # handlingFeeSuggestedSet.presentmentMoney.amount
  : Decimal! # restockingFeeSuggestedSet.presentmentMoney.amount
) {
  returnRefund(
    returnId: 
    returnItemIds: 
    refundShipping: false
    refundFullAmount: 
    refundCurrency: 
    handlingFee: 
    restockingFee: 
    notifyCustomer: true
  ) {
    error
    refund {
      shopifyRefundId
      requestedTotalRefundAmount
      requestedCurrencyCode
      presentmentTotalAmountRefunded
    }
  }
}

Reading a RefundType

  • requestedTotalRefundAmount / requestedCurrencyCode — exactly what you passed as refundFullAmount / refundCurrency, in presentment currency. Available immediately.
  • presentmentTotalAmountRefunded — the net cash Shopify refunded. This is the settlement figure, and it is populated asynchronously: Shopify can delay totalRefundedSet until the underlying transactions settle, so a completed refund can legitimately read 0.00 for minutes or longer. A nightly backfill re-fetches recent refunds still sitting at zero. Do not treat 0.00 here as "the refund failed" — check requestedTotalRefundAmount and the error field on the mutation instead.
  • shopTotalAmountRefunded and the shop* breakdown carry the same figures converted to the shop's currency, with the same delay.
  • currencyCode and totalAmountRefunded are deprecated aliases of presentmentCurrencyCode and presentmentTotalAmountRefunded.

Resolution behavior

Confirming a resolution

returnRefund and returnCreateStoreCredit commit in one transaction. The reliable immediate signals are the mutation's own payload and the return's collections:

  • returnRefund { error } — empty string on success; a locale key such as refundMutation.refundIntegrationError on failure.
  • Return.refunds — the new RefundType is present as soon as the mutation returns.
  • Return.storeCredits — likewise for store credit.

Return.resolvedStatus (RESOLVED / PARTIALLY_RESOLVED / UNRESOLVED) is recomputed in the same transaction, but the return object embedded in the mutation payload is serialized from the copy loaded before the resolution, so it can still show the pre-refund value. Re-query getReturn if you need resolvedStatus, or use refunds as the immediate signal.

Duplicate resolutions are already rejected server-side

You do not need to build your own idempotency guard against double-refunding. Every financial path takes a row lock on the return, then re-reads the items:

  • returnRefund and returnCreateStoreCredit only accept return items that are not already resolved. A retry against an already-refunded item fails with refundMutation.returnItemsNotEligibleForRefund (or returnCreateStoreCreditMutation.returnItemsNotEligibleForStoreCredit), not a second payout.
  • Crossing the paths is rejected too: crediting an item that already has a refund, or refunding an item that already has store credit, fails on the loser of the lock.

Never retry blindly on a non-empty error. refundMutation.refundIntegrationError covers both a harmless rejection (a concurrent duplicate lost the row lock — no money moved) and a reconciliation failure after Shopify already moved money, and the two are not distinguishable from the response. On any error, re-query getReturn { refunds { … } }. A matching refund present means the payout landed — do not retry. A matching refund absent is not proof that no money moved: in the reconciliation-failure case ReturnZap cannot attribute the new Shopify refund and deliberately records nothing, so the payout exists in Shopify but never appears in refunds. Before retrying, check the order's refund list in Shopify admin (or via the Shopify API); if a refund for the amount is already there, reconcile manually with ReturnZap support instead of retrying.

Refunding never restocks

Issuing a refund or store credit does not put inventory back. Restocking is a separate, explicit, irreversible call, per item:

mutation Restock(: ID!, : [ID!]!, : ID!) {
  returnDispose(
    returnId: 
    returnItemIds: 
    dispositionAction: RESTOCK
    shopifyLocationId: 
  ) {
    error
    return { id }
  }
}

Items that were rejected or marked missing at receiving cannot be restocked; the mutation restocks the remaining valid items and returns disposeMutation.itemNotRestockable alongside the payload as a partial-success caveat.

Finding a return

What returns(query:) matches

The free-text query argument on returns (and the deprecated dashboardReturns) runs a PostgreSQL full-text search over exactly these seven columns:

Matched field Exposed on Return as
customer_first_name customerFirstName
customer_last_name customerLastName
customer_email customerEmail
shopify_order_number shopifyOrderNumber
rma_number rmaNumber
tracking_number trackingNumber
shopify_order_id shopifyOrderId

Nothing else is searched — not notes, not SKUs, not product titles, not addresses. It is a PostgreSQL full-text match using the english configuration, not a substring match: partial fragments and prefixes do not hit, and all terms must match. Terms are also stemmed and stop-word filtered — inflections of the same English word share a match (returned finds returning), and a term that is an English stop word (a customer named May, for example) is dropped entirely and can make a row unfindable by that field alone. Do not treat it as exact token matching. Matching is a filter only — results are ordered by sortBy (default -returnDate), not by relevance.

Read the order number off Return.shopifyOrderNumber. Return.orderNumber still exists as a deprecated alias of the same value — new integrations should not use it.

RMA number formats

Generated RMA numbers come in two shapes, and which one a shop uses is a per-shop setting. You cannot tell them apart from a single value's shape alone.

  • Short (the default): 1.1001 — an unpadded per-order return counter and the Shopify order name with # stripped, no date.
  • Long: 0001.1001.20260613 — the counter zero-padded to four digits, the order name, and YYYYMMDD of creation.

A shop can also override the RMA number entirely when approving a return: any custom value is accepted (truncated to 45 characters), so do not build a parser that rejects values outside the two generated shapes.

The return-label barcode

The barcode printed on the RMA slip does not always encode the RMA number. It encodes whichever value the shop configured, one of four:

Setting Barcode contents
NONE No barcode is rendered at all.
SHOPIFY_ORDER_NUMBER Return.shopifyOrderNumber
SHOPIFY_ORDER_ID Return.shopifyOrderId
RMA_NUMBER Return.rmaNumber, with any apostrophes stripped

A scanner-driven lookup must therefore try the scanned string against the free-text returns(query:) search rather than assuming it is an RMA number — all three non-empty settings encode a field that search covers. Note the RMA_NUMBER caveat: the search indexes the stored rmaNumber verbatim, so for the rare RMA number containing an apostrophe the scanned barcode is not byte-identical to the stored value. Fall back to matching Return.rmaNumber client-side if a scan comes back empty.

Barcodes are Code 128, which cannot encode every character. If the configured value contains a character outside that set — possible with RMA_NUMBER when a custom RMA carries, say, an accented letter — the slip renders without a barcode rather than failing, so a non-NONE setting does not guarantee a barcode on every slip.

Enums, stages, and deprecated fields

Return.systemStage is an Int, and its order is not workflow order

systemStage is typed Int, not an enum. Its values are:

Value Meaning
1 Automatically approved
2 Pending approval
3 Approved
4 Rejected
5 Received

Do not sort or compare on this number. The numbers are storage ids, not workflow positions — internally the workflow order is a separate remapping in which pending approval comes first and automatic approval sits between approved and received. Treat systemStage as a categorical label.

systemStage is also null for a return sitting in a shop-defined custom stage. Use stageId plus the shop's stage list to resolve the label:

query Stages {
  getMyShop {
    stages { id label systemStage behavior }
  }
}

Match Return.stageId against id in that list. Note the type mismatch: Stage.systemStage on that list is the SystemStage enum (AUTOMATICALLY_APPROVED, PENDING_APPROVAL, APPROVED, REJECTED, RECEIVED), while Return.systemStage is the Int above — the table maps between them. A custom stage has systemStage: null but may still behave like a system stage: Stage.behavior carries the effective SystemStage enum for a custom stage configured to act like one (for example a shop's own "received" stage), and is the field to read when you care about semantics rather than identity. Return.stageLabel is a snapshot of the stage's label taken when the return entered the stage: if the merchant later renames the stage, stageLabel keeps the old text while stages[].label reflects the rename. Map stageId against the stage list when you need the current display name. statusId and statusLabel are older aliases of stageId and stageLabel.

Return.availableActions

availableActions is a list of ProcessingStatusAction tokens that partitions returns into two coarse families — draft and live. It does not check per-mutation eligibility: a fully resolved return still reports POST_ACTIVATION_ACTIONS even though a further refund would be rejected. The complete set of values it can return:

Token Meaning
POST_ACTIVATION_ACTIONS The return is live (not a draft); the approve / receive / refund / dispose family of mutations applies, subject to each mutation's own validation. This is returned alone, never alongside the draft tokens.
DISCARD Draft only — the draft can be discarded. Not offered once its Shopify return has synced.
CONVERT_SHIPPING Draft only — the shipping choice can still be converted.
RETRY Draft only — a failed activation step can be retried.
WAIVE_BALANCE Draft only — an outstanding exchange balance can be waived.
RESEND_BALANCE_INVOICE Draft only — the balance invoice can be re-sent.

A draft never reports POST_ACTIVATION_ACTIONS: the post-activation mutations exclude drafts and would report the return as not found.

Disposition enums

returnDispose takes two mutually exclusive enums. Prefer dispositionAction — it is the business-level intent, and ReturnZap maps it to what Shopify records.

DispositionAction (pass one of these):

Value Recorded in Shopify as
RESTOCK RESTOCKED — the only value that returns inventory to stock
REFURBISH PROCESSING_REQUIRED
RECYCLE NOT_RESTOCKED
DESTROY NOT_RESTOCKED
DONATE NOT_RESTOCKED
LIQUIDATE NOT_RESTOCKED
RESELL NOT_RESTOCKED

DispositionType is the raw Shopify-level value (MISSING, PROCESSING_REQUIRED, NOT_RESTOCKED, RESTOCKED) and is accepted for backwards compatibility. Supply one of the two arguments: supplying neither fails with disposeMutation.invalidDispositionType, and if both are supplied dispositionAction wins and dispositionType is silently ignored — do not send both. shopifyLocationId is required, and every id in returnItemIds must belong to the given return. Disposition is irreversible.

Migrating off deprecated fields

dashboardReturnsreturns. Same arguments, same DashboardResponse. The old name was a misnomer: it returns a filtered, paginated list of returns, not dashboard aggregates. Rename the field and nothing else.

archiveReturnsreturnUpdateStatus. The arguments differ:

archiveReturns returnUpdateStatus
returnIds: [ID]! — no length limit returnIds: [ID]! — capped at 10 ids per call; may be empty when filters is supplied
archive: Boolean! isArchived: Boolean! (renamed)
filters: FiltersInput — archive everything matching a filter instead of an explicit id list
returns success returns success and affectedReturnIds

Passing neither filters nor a non-empty returnIds is an error, and ids for returns outside your shop are silently not matched — so read affectedReturnIds rather than assuming every id you sent was archived. The two argument styles are mutually exclusive in effect: whenever returnIds is non-empty, filters is ignored entirely — to archive by filter, send returnIds: []. Batches larger than ten ids are rejected; chunk them or switch to filter mode.

The two are not behaviourally identical: archiveReturns skips draft returns, returnUpdateStatus does not. If your id list or filter can include drafts, a straight rename will start archiving them. Filter drafts out of returnIds yourself — adding filters alongside a non-empty id list does nothing — or use filter mode with filters: { processingStatus: [...] } and an empty returnIds.

Other deprecated fields worth migrating while you are here: suggestionRefundsuggestedRefund, handlingFeeChargedoriginalHandlingFeeCharged / actualHandlingFeeCharged, restockingFeeChargedoriginalRestockingFeeCharged / actualRestockingFeeCharged, shippedTowarehouseName, appliedRulesappliedRulesDetailed, next/previousnextReturn/previousReturn.

Webhooks

The event catalog

There are exactly two events:

Event Fires when
return_created A return becomes live.
return_updated A live return changes one of the fields carried in the payload below.

Deliveries are queued on transaction commit, and events are coalesced per return per transaction: several saves of the same return in one business operation produce one delivery, and if both events are pending for the same return, only return_created is sent. Do not expect one delivery per field change. A change that only touches fields outside the payload usually delivers nothing; return_date is the exception and can fire return_updated without appearing in the body.

Drafts never deliver. A return in a draft state is skipped entirely; it sends return_created when it is activated, not when the draft row appeared.

Two other cases are silent. Unarchiving a return does not send return_updated (archiving does). Pre-fulfillment and manual withdrawals never send webhooks.

Webhooks are a plan feature. If the shop's subscription does not include webhooks, nothing is delivered, and no error is surfaced to the API caller.

The delivered request

Every delivery is an HTTP POST with Content-Type: application/json and a body of this shape. Note the keys are snake_case, unlike the GraphQL API's camelCase:

{
  "event": "return_created",
  "content": {
    "shop":   { "id": "42", "uuid": "…", "url": "example.myshopify.com" },
    "return": { "id": "12345", "uuid": "…", "rma_number": "1.1001", "…": "…" }
  },
  "trace_id": "…",
  "call_id": "…",
  "webhook_url": "https://example.com/hooks/returnzap",
  "webhook_id": "…"
}

content.return is a snake_cased projection of the GraphQL Return type — a fixed subset, not the whole type. It carries the identity and status fields (id, uuid, rma_number, customer_email, customer_first_name, customer_last_name, shopify_order_id, shopify_order_number, rma_form_url, stage_id, stage_label, system_stage, created_at, is_archived, approval_required, rejected_at, rejection_reason, gift_return, gift_return_email_address, no_shipping_required, exchange_balance_due, return_item_types, return_type_labels), the shipping fields (tracking_number, shipping_method, shipment_carrier_name, shipment_service_name), the customer_address / destination_address / gift_return_address objects, a shipment object holding tracking_url, an exchange_items array, and an items array. Each item carries its own identifiers, quantities, reason and condition, pre_tax_price_set / post_tax_price_set money sets, its exchange_item, and the shopper's answers.

Ids arrive as strings, including content.shop.id and content.return.id.

The same field semantics documented elsewhere in these docs apply here — in particular system_stage is a categorical Int whose order is not workflow order, and stage_label is a snapshot taken when the return entered the stage.

The four top-level fields outside content are added by the delivery layer:

Field Meaning
trace_id Identifies the originating business operation. Stable across retries — quote it to support.
call_id Unique per delivery attempt. A retry carries a new one, so it is not a deduplication key.
webhook_url The endpoint this delivery was addressed to.
webhook_id The endpoint's id.

Treat deliveries as best-effort and possibly duplicated, and possibly out of order. Each body is a snapshot: upsert on content.return.id (or uuid). Do not drop a delivery because event plus return id already arrived — later updates reuse that pair. call_id changes on every attempt, and trace_id names the originating operation (callers can reuse X-Trace-Id), so neither identifies one delivery.

Verifying the signature

Every delivery carries X-ReturnZap-Signature: the lowercase hex HMAC-SHA256 of the raw request body, keyed by the endpoint's signing secret (UTF-8). There is no timestamp, no version prefix, and no other component in the header value.

The body is serialized once as compact, key-sorted JSON and those exact bytes are both signed and sent, so verify against the raw bytes you received — parsing the JSON and re-serializing it will not reproduce the signature reliably.

import hashlib
            import hmac
            
            
            def verify(raw_body: bytes, signature_header: str, secret: str) -> bool:
                expected = hmac.new(secret.encode("utf-8"), raw_body, hashlib.sha256).hexdigest()
                return hmac.compare_digest(expected, signature_header or "")
            
const crypto = require('node:crypto')
            
            function verify(rawBody, signatureHeader, secret) {
              const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex')
              const a = Buffer.from(expected, 'utf8')
              const b = Buffer.from(signatureHeader || '', 'utf8')
              return a.length === b.length && crypto.timingSafeEqual(a, b)
            }
            

Most web frameworks hand you a parsed body by default. Capture the raw body explicitly (express.raw({ type: 'application/json' }), Django's request.body before any parsing, and so on) and compare in constant time, as above.

The signing secret is generated when the endpoint is created and shown once. Rotating it takes effect immediately — the previous secret stops validating on the next delivery. Copy the new secret and deploy it; there is no overlap window, so deliveries between rotate and deploy fail signature checks. If the endpoint is also configured with HTTP Basic Auth, deliveries additionally carry a standard Authorization: Basic header; the signature is unaffected.

This signing scheme is not final. The Warehouse partner API uses a newer, timestamped scheme, and whether the two converge is an open question. Keep your verification logic in one place so it can be updated.

Retries

Each attempt has a 10-second timeout. If the endpoint answers with a 4xx or 5xx status, the delivery is retried up to 5 times with exponential backoff from a 30-second base: 30s, 60s, 120s, 240s, 480s — six attempts in total, spanning roughly 15 minutes. Retries repeat the same content with a fresh call_id and the original trace_id.

Two limits are worth designing around:

  • A connection failure or a timeout is not retried. Only a 4xx or 5xx status schedules a retry; if your endpoint is unreachable or too slow to answer within 10 seconds, that delivery is dropped. Answer 2xx immediately and do the work asynchronously.
  • After the final retry the delivery is abandoned — there is no dead-letter queue and no self-serve replay. Webhooks are a latency optimization, not a system of record: reconcile against the API periodically rather than assuming every event arrived.

Configuring an endpoint

There are two kinds of endpoint, and both deliver identically:

  • Customer-managed. Configured in HQ under Settings → Integrations: URL, which of the two events to send, an enable/disable toggle, optional Basic Auth credentials, and the signing secret with a rotate action. Requires the HQ Can Modify Settings permission — without it the controls are hidden. At most one per shop — a database constraint enforces it. Clearing the URL deletes the endpoint.
  • Support-managed. Additional endpoints ReturnZap support configures on request, one per distinct URL, not visible or editable in HQ.

A delivery goes to every enabled endpoint whose event list includes the event, so a shop with both kinds receives the event on both.

API tokens

Creating a token

Merchants issue their own tokens — no support ticket needed. In HQ, go to Settings → Integrations → API tokens and choose Create token. The only input is an optional label (it defaults to API Token); use it to name the integration the token belongs to.

The plaintext token is displayed once, immediately after minting, and is never retrievable afterwards. Copy it straight into your secret store. It looks like rz_prod_ followed by 32 hex characters.

The card also supports editing a token's label and revoking a token. Revocation takes effect on the token's next request and cannot be undone — issue a new token and migrate rather than expecting to restore one. The token list shows each token's label, last four characters, creation date, who created it, and when it was last used.

Minting requires the API access plan feature and the HQ Can Modify Settings permission. Losing the feature automatically revokes every active token from this card — they disappear from the list and cannot be restored.

Using a token

Send it as a bearer token on every request:

POST /graphql/admin HTTP/1.1
Host: api.returnzap.com
Content-Type: application/json
Authorization: Bearer rz_prod_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Tokens minted from this card are full-access and non-expiring. There is no rotation action, no expiry to configure, and no narrower scope to request: the card issues one kind of credential. (Narrower scopes and expiry exist inside the system for other credential types — do not build an integration that expects to obtain them here.)

Two consequences of "full access" are worth stating plainly:

  • A token carries shop-wide authority over return data. Per-user permission checks do not apply to token-authenticated requests, so there is no way to hand out a read-only or returns-only token from here. Keep it server-side, in a secret manager — never ship it to a browser, a mobile app, or a shared CI log. The one thing a token deliberately cannot do is manage credentials: minting, relabelling, revoking, and rotating tokens require a signed-in HQ user, so a leaked token cannot mint itself a successor.
  • A token is bound to the shop it was minted for. To integrate with several shops, mint a token per shop.

The last used column is stamped at most once every five minutes, so it is a liveness hint, not an audit log. Do not use it to prove a token was or was not used at a given moment.

The separate Merchant MCP credential on the same settings page is a different flow with its own lifecycle; it does not authenticate against this API.

Deprecation policy and changelog

How a deprecation is signalled

A deprecated query, mutation, or field carries a deprecationReason. That reason is visible through GraphQL introspection and rendered in these docs, so your tooling can detect deprecations without reading release notes. Treat it as explanatory metadata — it often names a replacement, but it may be empty or say only that the member is unused. There is no other signal: no response header, no sunset date embedded in the schema.

Deprecation alone changes nothing at runtime. The field keeps working, unchanged, for the whole window below.

The windows

  • 90 days of sunset from the deprecation date. During this period the deprecated member continues to behave exactly as before. This is the window to migrate in.
  • Removable at 180 days, and only then. A deprecated member is removed no earlier than 180 days after its deprecation date, and only once measured usage has reached zero — a field still carrying live traffic stays past 180 days rather than breaking callers.
  • Every removal is announced in the changelog below before it ships. A member disappearing without a changelog entry is a bug; report it.

Migrate within the sunset window rather than at the deadline, and read "Enums, stages, and deprecated fields" first: some replacements are not behaviour-identical to the member they replace (archiveReturnsreturnUpdateStatus differs on draft returns, for one), so a blind rename can change what your integration does.

Changelog

Newest first. This log begins in August 2026, seeded with the most recent notable schema changes; it is not a complete history of the API.

Date Change
2026-08-12 Added SuggestedRefundType.netRefundPayableSet — the refund amount to actually pay out, suggestedRefundSet minus outstanding handling and restocking fees. See "Money semantics".
2025-11-03 Deprecated the dashboardReturns query → use returns. Same arguments, same response type.
2024-10-24 Deprecated the archiveReturns mutation → use returnUpdateStatus. Arguments differ, and the two treat draft returns differently.

Queries

dashboardReturns

Use 'returns' instead. This query was misnamed - it returns a filterable list of returns, not dashboard data.
Response

Returns a DashboardResponse

Arguments
Name Description
query - String Default = ""
stages - [Int]
status - ArchiveFilter
returnDate - DateFilterRange
orderDate - DateFilterRange
stageUpdatedDate - DateFilterRange
perPage - Int Default = 25
currentPage - Int Default = 0
sortBy - String Default = "-returnDate"
resolvedStatus - [ResolvedStatus]
returnItemTypes - [String]
draftProcessingState - [DraftReturnState]
warehouseIds - [Int] No filtering if not passed in or empty list. Use 0 to designate default, or no warehouse.
requestType - [String]

Example

Query
query dashboardReturns(
  $query: String,
  $stages: [Int],
  $status: ArchiveFilter,
  $returnDate: DateFilterRange,
  $orderDate: DateFilterRange,
  $stageUpdatedDate: DateFilterRange,
  $perPage: Int,
  $currentPage: Int,
  $sortBy: String,
  $resolvedStatus: [ResolvedStatus],
  $returnItemTypes: [String],
  $draftProcessingState: [DraftReturnState],
  $warehouseIds: [Int],
  $requestType: [String]
) {
  dashboardReturns(
    query: $query,
    stages: $stages,
    status: $status,
    returnDate: $returnDate,
    orderDate: $orderDate,
    stageUpdatedDate: $stageUpdatedDate,
    perPage: $perPage,
    currentPage: $currentPage,
    sortBy: $sortBy,
    resolvedStatus: $resolvedStatus,
    returnItemTypes: $returnItemTypes,
    draftProcessingState: $draftProcessingState,
    warehouseIds: $warehouseIds,
    requestType: $requestType
  ) {
    id
    returns {
      ...ReturnFragment
    }
    totalCount
  }
}
Variables
{
  "query": "",
  "stages": [987],
  "status": "ACTIVE",
  "returnDate": DateFilterRange,
  "orderDate": DateFilterRange,
  "stageUpdatedDate": DateFilterRange,
  "perPage": 25,
  "currentPage": 0,
  "sortBy": "-returnDate",
  "resolvedStatus": ["RESOLVED"],
  "returnItemTypes": ["abc123"],
  "draftProcessingState": ["CREATED"],
  "warehouseIds": [987],
  "requestType": ["xyz789"]
}
Response
{
  "data": {
    "dashboardReturns": {
      "id": 4,
      "returns": [Return],
      "totalCount": 123
    }
  }
}

getMyShop

Response

Returns an AuthenticatedShop

Example

Query
query getMyShop {
  getMyShop {
    uuid
    url
    primaryDomain
    timezone
    name
    isTestShop
    isUitestShop
    onboardingCompletedAt
    needsToEnableExchangeTestDrive
    userPermissionsEnabled
    notifyOnlyIfApprovalIsRequired
    instructions
    portalTheme
    portalLanguage
    portalFrenchUseAlternative
    portalGermanUseAlternative
    portalItalianUseAlternative
    portalCustomizations
    shouldDisplayFeesInPortal
    refundPortalDisplayOrder
    creditPortalDisplayOrder
    exchangePortalDisplayOrder
    showPortalSummary
    portalExchangeSelectionMethod
    portalVisualExchangeType
    portalVisualExchangeIncludeCollections
    portalVisualExchangeExcludeCollections
    exchangeUpsellEnabled
    exchangeUpsellDiscountPercentage
    minFilesPerReturn
    maxFilesPerReturn
    isShippingLabelUploadAllowed
    barcodeValue
    enableCustomRmaNumber
    shipFree
    shipPay
    shipSelf
    shipStore
    isShippingByReturnzapAvailable
    useShippingByReturnzap
    prepaidShippingFee
    paidShippingFee
    selfShippingFee
    storeShippingFee
    storeReturnInstructions
    isDefaultFeeEqualsShippingCost
    shippingRateSelectLowestRate
    shippingRateShowUpToPercentage
    customerLabelFlatFee
    customerPaidShippingMode
    isNoShippingReturnEnabled
    displayGreenReturnsUpfront
    isQrCodeEnabled
    isCartonizationEnabled
    isWarehouseManagementEnabled
    withdrawalEnabled
    customerCancelEnabled
    withdrawalDaysSinceDelivery
    withdrawalDaysSinceFulfillment
    withdrawalHandlingMode
    preFulfillmentManualReviewAfterMinutes
    cartonizationLengthUnit
    restockingFeeDefinedAsPercentage
    defaultRefundFee
    defaultExchangeFee
    defaultStoreCreditFee
    currency
    internationalCustomsContentValueSource
    intlCommercialInvoiceAttachment
    klaviyoApiKey
    gorgiasSubdomain
    useApprovals
    requireApprovalForAllReturns
    useShopAddressForPosReturns
    useBillingAddressFallback
    allowGiftReturns
    giftReturnsExchangeEnabled
    giftReturnsStoreCreditEnabled
    preventReturnsFromDifferentFulfillments
    delayedShopifyReturnCreationEnabled
    createReturnOnResolve
    returnTypeComparisonFlowEnabled
    isRefundIntegrationEnabled
    isRestockIntegrationEnabled
    returnItemExpirationDays
    isReturnItemExpirationEnabled
    returnItemExpirationEnabledAt
    expirationPreventionAction
    expirationPeriodType
    isExchangeIntegrationEnabled
    exchangeMethod
    isInlineExchangeEnabled
    isFullCatalogExchangeEnabled
    useConsolidatedOrderExchanges
    discountSameProductExchangesToBeEqual
    exchangeNormalizeCrossProductEqualPrices
    isExchangeDifferentialPricingEnabled
    exchangeRoundToZeroIfLteTo
    exchangeDaysToReserveStock
    allowOutOfStockExchanges
    exchangeCheckInventoryAtFulfillmentLocation
    carryDiscountForwardType
    useExchangeShipmentOrders
    exchangeShipmentOrderSuffix
    exchangeShippingLineTitle
    autoProcessExchangesOnCreation
    isStoreCreditIntegrationEnabled
    isStoreCreditIncentiveEnabled
    storeCreditIncentivePercentage
    minStoreCreditIncentiveAmount
    maxStoreCreditIncentiveAmount
    isStoreCreditIncentiveRoundToNearest
    resolvePartialExchangeRefundsToStoreCredit
    storeCreditExpireDays
    giftCardPrefix
    id
    useNewAnalyticsUi
    useAsyncReturnProcessing
    parentUrl
    shopifyAdminUrl
    primaryFieldBehavior
    secondaryFieldBehavior
    reauthenticateUrl
    hasTestModeReturns
    hasReturnWithdrawals
    defaultPortalUrl
    adminAppUrl
    enableRefund
    refundDays
    refundDaysType
    refundCommentsEnabled
    refundCommentsRequired
    refundRequireDeliveryBeforeReturn
    enableExchange
    exchangeDays
    exchangeDaysType
    exchangeCommentsEnabled
    exchangeCommentsRequired
    exchangeRequireDeliveryBeforeReturn
    exchangeExcludeTags
    enableStoreCredit
    storeCreditDays
    storeCreditDaysType
    storeCreditCommentsEnabled
    storeCreditCommentsRequired
    storeCreditRequireDeliveryBeforeReturn
    automatedStoreCreditType
    notificationEmailAddress
    notificationEmailAttachRma
    customerEmailDisplayFromName
    customerEmailReplyToAddress
    defaultAddress {
      ...AddressFragment
    }
    defaultWeight
    defaultWeightUnit
    international
    internationalOriginCountry
    internationalCustomsSigner
    internationalNonDeliveryOption
    internationalExemptionCode
    internationalDefaultHarmonizedSystemCode
    shippoApiKey
    stripePublishableKey
    stripeSecretKey
    subscriptionPlan {
      ...ShopSubscriptionPlanFragment
    }
    features
    installedAt
    returnReasons {
      ...ReturnReasonFragment
    }
    stages {
      ...StageFragment
    }
    notifications {
      ...NotificationFragment
    }
    rules {
      ...RuleFragment
    }
    packages {
      ...PackageTypeFragment
    }
    dynamicTranslations {
      ...DynamicTranslationFragment
    }
    returnIntegration
    missingScopes
    returnProtectionMissingScopes
    sendcloudAccounts {
      ...SendcloudAccountFragment
    }
    shopifyLocations {
      ...ShopifyLocationFragment
    }
    easyPostAccount {
      ...EasyPostAccountTypeFragment
    }
    shippoAccount {
      ...ShippoAccountTypeFragment
    }
    shipstationAccount {
      ...ShipStationAccountTypeFragment
    }
    zendeskAccount {
      ...ZendeskAccountTypeFragment
    }
    refField1Source
    refField2Source
    storeCreditIncentiveType
    restockingFeeType
    webhookUrl
    webhookEvents
    questions {
      ...QuestionFragment
    }
    stageShipmentStatuses {
      ...StageShipmentStatusTypeFragment
    }
    defaultWarehouseForPosReturns
    defaultRestockLocationId
    portalConfig {
      ...PortalConfigTypeFragment
    }
    authorizationPdfLogo {
      ...ImageFragment
    }
    hasLabelIntegration
    canUseStoreShippingMode
    autoRechargeStatus
    featureFlags {
      ...GrapheneFeatureFlagValueFragment
    }
    configurationGoals {
      ...ConfigurationGoalsFragment
    }
    logo
    logoUploadUrl {
      ...SignedUrlFragment
    }
    easypostApiKey
    onboardingComplete
    installDate
    exchangeIntegration
    storeCreditIntegration
  }
}
Response
{
  "data": {
    "getMyShop": {
      "uuid": "abc123",
      "url": "abc123",
      "primaryDomain": "xyz789",
      "timezone": "xyz789",
      "name": "xyz789",
      "isTestShop": true,
      "isUitestShop": true,
      "onboardingCompletedAt": "2007-12-03T10:15:30Z",
      "needsToEnableExchangeTestDrive": false,
      "userPermissionsEnabled": false,
      "notifyOnlyIfApprovalIsRequired": true,
      "instructions": "xyz789",
      "portalTheme": "xyz789",
      "portalLanguage": "abc123",
      "portalFrenchUseAlternative": false,
      "portalGermanUseAlternative": true,
      "portalItalianUseAlternative": false,
      "portalCustomizations": JSONString,
      "shouldDisplayFeesInPortal": true,
      "refundPortalDisplayOrder": 987,
      "creditPortalDisplayOrder": 123,
      "exchangePortalDisplayOrder": 987,
      "showPortalSummary": false,
      "portalExchangeSelectionMethod": "SEARCH",
      "portalVisualExchangeType": "NONE",
      "portalVisualExchangeIncludeCollections": [
        "xyz789"
      ],
      "portalVisualExchangeExcludeCollections": [
        "xyz789"
      ],
      "exchangeUpsellEnabled": false,
      "exchangeUpsellDiscountPercentage": Decimal,
      "minFilesPerReturn": 987,
      "maxFilesPerReturn": 123,
      "isShippingLabelUploadAllowed": true,
      "barcodeValue": "NONE",
      "enableCustomRmaNumber": true,
      "shipFree": true,
      "shipPay": true,
      "shipSelf": true,
      "shipStore": true,
      "isShippingByReturnzapAvailable": true,
      "useShippingByReturnzap": true,
      "prepaidShippingFee": Decimal,
      "paidShippingFee": Decimal,
      "selfShippingFee": Decimal,
      "storeShippingFee": Decimal,
      "storeReturnInstructions": "abc123",
      "isDefaultFeeEqualsShippingCost": true,
      "shippingRateSelectLowestRate": false,
      "shippingRateShowUpToPercentage": Decimal,
      "customerLabelFlatFee": Decimal,
      "customerPaidShippingMode": "RETURNZAP",
      "isNoShippingReturnEnabled": true,
      "displayGreenReturnsUpfront": false,
      "isQrCodeEnabled": true,
      "isCartonizationEnabled": true,
      "isWarehouseManagementEnabled": true,
      "withdrawalEnabled": true,
      "customerCancelEnabled": false,
      "withdrawalDaysSinceDelivery": 987,
      "withdrawalDaysSinceFulfillment": 123,
      "withdrawalHandlingMode": "AUTOMATIC",
      "preFulfillmentManualReviewAfterMinutes": 987,
      "cartonizationLengthUnit": "INCHES",
      "restockingFeeDefinedAsPercentage": false,
      "defaultRefundFee": Decimal,
      "defaultExchangeFee": Decimal,
      "defaultStoreCreditFee": Decimal,
      "currency": "abc123",
      "internationalCustomsContentValueSource": "SELL_PRICE",
      "intlCommercialInvoiceAttachment": "DISABLED",
      "klaviyoApiKey": "abc123",
      "gorgiasSubdomain": "abc123",
      "useApprovals": false,
      "requireApprovalForAllReturns": false,
      "useShopAddressForPosReturns": false,
      "useBillingAddressFallback": true,
      "allowGiftReturns": true,
      "giftReturnsExchangeEnabled": false,
      "giftReturnsStoreCreditEnabled": true,
      "preventReturnsFromDifferentFulfillments": true,
      "delayedShopifyReturnCreationEnabled": true,
      "createReturnOnResolve": false,
      "returnTypeComparisonFlowEnabled": true,
      "isRefundIntegrationEnabled": false,
      "isRestockIntegrationEnabled": true,
      "returnItemExpirationDays": 123,
      "isReturnItemExpirationEnabled": true,
      "returnItemExpirationEnabledAt": "2007-12-03T10:15:30Z",
      "expirationPreventionAction": "RETURN_PROCESSED",
      "expirationPeriodType": "RETURN_CREATED_DATE",
      "isExchangeIntegrationEnabled": false,
      "exchangeMethod": "COMMENTS",
      "isInlineExchangeEnabled": true,
      "isFullCatalogExchangeEnabled": false,
      "useConsolidatedOrderExchanges": false,
      "discountSameProductExchangesToBeEqual": true,
      "exchangeNormalizeCrossProductEqualPrices": true,
      "isExchangeDifferentialPricingEnabled": false,
      "exchangeRoundToZeroIfLteTo": Decimal,
      "exchangeDaysToReserveStock": 123,
      "allowOutOfStockExchanges": false,
      "exchangeCheckInventoryAtFulfillmentLocation": false,
      "carryDiscountForwardType": "NONE",
      "useExchangeShipmentOrders": true,
      "exchangeShipmentOrderSuffix": "xyz789",
      "exchangeShippingLineTitle": "xyz789",
      "autoProcessExchangesOnCreation": true,
      "isStoreCreditIntegrationEnabled": false,
      "isStoreCreditIncentiveEnabled": false,
      "storeCreditIncentivePercentage": 987.65,
      "minStoreCreditIncentiveAmount": Decimal,
      "maxStoreCreditIncentiveAmount": Decimal,
      "isStoreCreditIncentiveRoundToNearest": true,
      "resolvePartialExchangeRefundsToStoreCredit": true,
      "storeCreditExpireDays": 987,
      "giftCardPrefix": "abc123",
      "id": 4,
      "useNewAnalyticsUi": false,
      "useAsyncReturnProcessing": true,
      "parentUrl": "abc123",
      "shopifyAdminUrl": "xyz789",
      "primaryFieldBehavior": "EMAIL_ADDRESS",
      "secondaryFieldBehavior": "SHOPIFY_ORDER_NUMBER",
      "reauthenticateUrl": "xyz789",
      "hasTestModeReturns": true,
      "hasReturnWithdrawals": true,
      "defaultPortalUrl": "xyz789",
      "adminAppUrl": "abc123",
      "enableRefund": true,
      "refundDays": 123,
      "refundDaysType": "SINCE_DELIVERY",
      "refundCommentsEnabled": true,
      "refundCommentsRequired": false,
      "refundRequireDeliveryBeforeReturn": true,
      "enableExchange": true,
      "exchangeDays": 123,
      "exchangeDaysType": "SINCE_DELIVERY",
      "exchangeCommentsEnabled": false,
      "exchangeCommentsRequired": false,
      "exchangeRequireDeliveryBeforeReturn": false,
      "exchangeExcludeTags": ["abc123"],
      "enableStoreCredit": false,
      "storeCreditDays": 987,
      "storeCreditDaysType": "SINCE_DELIVERY",
      "storeCreditCommentsEnabled": false,
      "storeCreditCommentsRequired": true,
      "storeCreditRequireDeliveryBeforeReturn": false,
      "automatedStoreCreditType": "DISCOUNT_CODE",
      "notificationEmailAddress": "abc123",
      "notificationEmailAttachRma": false,
      "customerEmailDisplayFromName": "xyz789",
      "customerEmailReplyToAddress": "abc123",
      "defaultAddress": Address,
      "defaultWeight": Decimal,
      "defaultWeightUnit": "abc123",
      "international": false,
      "internationalOriginCountry": "xyz789",
      "internationalCustomsSigner": "xyz789",
      "internationalNonDeliveryOption": "abc123",
      "internationalExemptionCode": "xyz789",
      "internationalDefaultHarmonizedSystemCode": "xyz789",
      "shippoApiKey": "abc123",
      "stripePublishableKey": "xyz789",
      "stripeSecretKey": "xyz789",
      "subscriptionPlan": ShopSubscriptionPlan,
      "features": ["abc123"],
      "installedAt": "2007-12-03T10:15:30Z",
      "returnReasons": [ReturnReason],
      "stages": [Stage],
      "notifications": [Notification],
      "rules": [Rule],
      "packages": [PackageType],
      "dynamicTranslations": [DynamicTranslation],
      "returnIntegration": false,
      "missingScopes": ["abc123"],
      "returnProtectionMissingScopes": [
        "xyz789"
      ],
      "sendcloudAccounts": [SendcloudAccount],
      "shopifyLocations": [ShopifyLocation],
      "easyPostAccount": EasyPostAccountType,
      "shippoAccount": ShippoAccountType,
      "shipstationAccount": ShipStationAccountType,
      "zendeskAccount": ZendeskAccountType,
      "refField1Source": "BLANK",
      "refField2Source": "BLANK",
      "storeCreditIncentiveType": "ONCE_PER_ITEM",
      "restockingFeeType": "ONCE_PER_RETURN",
      "webhookUrl": "abc123",
      "webhookEvents": ["RETURN_CREATED"],
      "questions": [Question],
      "stageShipmentStatuses": [StageShipmentStatusType],
      "defaultWarehouseForPosReturns": 4,
      "defaultRestockLocationId": "xyz789",
      "portalConfig": PortalConfigType,
      "authorizationPdfLogo": Image,
      "hasLabelIntegration": true,
      "canUseStoreShippingMode": false,
      "autoRechargeStatus": "HEALTHY",
      "featureFlags": [GrapheneFeatureFlagValue],
      "configurationGoals": ConfigurationGoals,
      "logo": "xyz789",
      "logoUploadUrl": SignedUrl,
      "easypostApiKey": "abc123",
      "onboardingComplete": false,
      "installDate": "2007-12-03T10:15:30Z",
      "exchangeIntegration": false,
      "storeCreditIntegration": false
    }
  }
}

getPaymentMethod

Description

Get a specific payment method by ID

Response

Returns a ShopPaymentMethod

Arguments
Name Description
paymentMethodId - ID!

Example

Query
query getPaymentMethod($paymentMethodId: ID!) {
  getPaymentMethod(paymentMethodId: $paymentMethodId) {
    id
    createdAt
    stripePaymentMethodId
    paymentMethodType
    brand
    lastFour
    expMonth
    expYear
    bankName
    isActive
    isDefault
    failedChargeAttempts
    status
    isExpired
    isChargeExhausted
  }
}
Variables
{"paymentMethodId": 4}
Response
{
  "data": {
    "getPaymentMethod": {
      "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
      "createdAt": "2007-12-03T10:15:30Z",
      "stripePaymentMethodId": "xyz789",
      "paymentMethodType": "CARD",
      "brand": "xyz789",
      "lastFour": "xyz789",
      "expMonth": 987,
      "expYear": 123,
      "bankName": "abc123",
      "isActive": false,
      "isDefault": false,
      "failedChargeAttempts": 123,
      "status": "PENDING",
      "isExpired": false,
      "isChargeExhausted": true
    }
  }
}

getReturn

Response

Returns a Return

Arguments
Name Description
returnId - ID!

Example

Query
query getReturn($returnId: ID!) {
  getReturn(returnId: $returnId) {
    id
    uuid
    adminReturn
    testMode
    returnIntegration
    usesConsolidatedOrderExchanges
    traceId
    draftProcessingState
    customerFirstName
    customerLastName
    customerEmail
    rmaNumber
    stageLabel
    stageUpdatedDate
    approvalRequired
    approvedAt
    rejectedAt
    rejectionReason
    notes
    allowResubmission
    receivedAt
    financialTerminalAt
    isArchived
    expiredAt
    shippingMethod
    giftReturn
    giftReturnEmailAddress
    trackingNumber
    deliveryDate
    deliveryStatus
    labelCurrency
    shopCurrency
    noShippingRequired
    feesSentThroughReturnIntegration
    defaultRefundFee
    defaultStoreCreditFee
    originalHandlingFeeCharged
    actualHandlingFeeCharged
    restockingFeeType
    originalRestockingFeeCharged
    actualRestockingFeeCharged
    shopifyReturnId
    shopifyReturnName
    shopifyReturnSyncError
    shopifyOrderId
    shopifyOrderDate
    exchangeBalanceDue
    exchangeBalancePaidAt
    estimatedBalance
    isDraft
    shopifyOrderNumber
    shopifyOrderUrl
    shopifyCustomerUrl
    customerAddress {
      ...ReturnAddressTypeFragment
    }
    destinationAddress {
      ...ReturnAddressTypeFragment
    }
    giftReturnAddress {
      ...ReturnAddressTypeFragment
    }
    rmaFormUrl
    stageId
    systemStage
    statusId
    statusLabel
    labelUrl
    qrCodeUrl
    qrCodeDownloadUrl
    returnStatusPageUrl
    labelCost
    totalWeightGrams
    createdAt
    refunds {
      ...RefundTypeFragment
    }
    logs {
      ...ReturnLogFragment
    }
    next
    previous
    nextReturn {
      ...ReturnFragment
    }
    previousReturn {
      ...ReturnFragment
    }
    exchangeOrders {
      ...ExchangeOrderFragment
    }
    shipment {
      ...ShipmentFragment
    }
    appliedRules
    appliedRulesDetailed {
      ...AppliedRuleTypeFragment
    }
    suggestionRefund {
      ...SuggestionRefundTypeFragment
    }
    suggestedRefund {
      ...SuggestedRefundTypeFragment
    }
    hasValidCustomerPaymentPending
    warehouseName
    shippedTo
    warehouse {
      ...WarehouseTypeFragment
    }
    storeCredits {
      ...StoreCreditTypeFragment
    }
    externalShippingLabelUrl
    items {
      ...ReturnItemFragment
    }
    exchangeItems {
      ...ExchangeItemFragment
    }
    handlingFeeCharged
    restockingFeeCharged
    shopifyOrderFulfillments {
      ...ShopifyFulfillmentTypeFragment
    }
    shopifyOrderTotalQuantityOrdered
    shopifyOrderTotalQuantityReturnItems
    shopifyOrderTotalPrice
    shopifyOrderSubtotalPrice
    shopifyOrderTags
    shopifyOrderCustomerTags
    shopifyReturnSyncStatus
    availableActions
    customerNumberOfOrders
    customerNumberOfReturns
    shipmentCarrierName
    shipmentServiceName
    pendingLabelRate {
      ...PendingLabelRateFragment
    }
    receipts {
      ...ReceiptFragment
    }
    hasReturnProtection
    requestType
    withdrawalSubtype
    withdrawalReceivedAt
    withdrawalManualResolutionReason
    resolvedAt
    withdrawalCancellationState
    withdrawalCancellationErrorReason
    withdrawalRefundDueAt
    originCountryCode
    orderId
    orderNumber
    orderDate
    returnDate
    isActive
    unitQuantity
    returnValueAmount
    resolvedStatus
    returnItemTypes
    returnTypeLabels
  }
}
Variables
{"returnId": 4}
Response
{
  "data": {
    "getReturn": {
      "id": 4,
      "uuid": "abc123",
      "adminReturn": false,
      "testMode": true,
      "returnIntegration": false,
      "usesConsolidatedOrderExchanges": false,
      "traceId": "abc123",
      "draftProcessingState": "CREATED",
      "customerFirstName": "xyz789",
      "customerLastName": "xyz789",
      "customerEmail": "abc123",
      "rmaNumber": "xyz789",
      "stageLabel": "abc123",
      "stageUpdatedDate": "2007-12-03T10:15:30Z",
      "approvalRequired": true,
      "approvedAt": "2007-12-03T10:15:30Z",
      "rejectedAt": "2007-12-03T10:15:30Z",
      "rejectionReason": "xyz789",
      "notes": "abc123",
      "allowResubmission": true,
      "receivedAt": "2007-12-03T10:15:30Z",
      "financialTerminalAt": "2007-12-03T10:15:30Z",
      "isArchived": true,
      "expiredAt": "2007-12-03T10:15:30Z",
      "shippingMethod": "FREE",
      "giftReturn": true,
      "giftReturnEmailAddress": "abc123",
      "trackingNumber": "abc123",
      "deliveryDate": "2007-12-03T10:15:30Z",
      "deliveryStatus": "abc123",
      "labelCurrency": "xyz789",
      "shopCurrency": "xyz789",
      "noShippingRequired": false,
      "feesSentThroughReturnIntegration": true,
      "defaultRefundFee": Decimal,
      "defaultStoreCreditFee": Decimal,
      "originalHandlingFeeCharged": Decimal,
      "actualHandlingFeeCharged": Decimal,
      "restockingFeeType": "ONCE_PER_RETURN",
      "originalRestockingFeeCharged": Decimal,
      "actualRestockingFeeCharged": Decimal,
      "shopifyReturnId": "xyz789",
      "shopifyReturnName": "xyz789",
      "shopifyReturnSyncError": "UNKNOWN_ERROR",
      "shopifyOrderId": "xyz789",
      "shopifyOrderDate": "2007-12-03T10:15:30Z",
      "exchangeBalanceDue": Decimal,
      "exchangeBalancePaidAt": "2007-12-03T10:15:30Z",
      "estimatedBalance": Decimal,
      "isDraft": false,
      "shopifyOrderNumber": "xyz789",
      "shopifyOrderUrl": "abc123",
      "shopifyCustomerUrl": "abc123",
      "customerAddress": ReturnAddressType,
      "destinationAddress": ReturnAddressType,
      "giftReturnAddress": ReturnAddressType,
      "rmaFormUrl": "xyz789",
      "stageId": 4,
      "systemStage": 123,
      "statusId": "abc123",
      "statusLabel": "abc123",
      "labelUrl": "abc123",
      "qrCodeUrl": "xyz789",
      "qrCodeDownloadUrl": "abc123",
      "returnStatusPageUrl": "xyz789",
      "labelCost": Decimal,
      "totalWeightGrams": Decimal,
      "createdAt": "2007-12-03T10:15:30Z",
      "refunds": [RefundType],
      "logs": [ReturnLog],
      "next": "xyz789",
      "previous": "xyz789",
      "nextReturn": Return,
      "previousReturn": Return,
      "exchangeOrders": [ExchangeOrder],
      "shipment": Shipment,
      "appliedRules": ["xyz789"],
      "appliedRulesDetailed": [AppliedRuleType],
      "suggestionRefund": SuggestionRefundType,
      "suggestedRefund": SuggestedRefundType,
      "hasValidCustomerPaymentPending": false,
      "warehouseName": "abc123",
      "shippedTo": "xyz789",
      "warehouse": WarehouseType,
      "storeCredits": [StoreCreditType],
      "externalShippingLabelUrl": "xyz789",
      "items": [ReturnItem],
      "exchangeItems": [ExchangeItem],
      "handlingFeeCharged": Decimal,
      "restockingFeeCharged": Decimal,
      "shopifyOrderFulfillments": [
        ShopifyFulfillmentType
      ],
      "shopifyOrderTotalQuantityOrdered": 123,
      "shopifyOrderTotalQuantityReturnItems": 123,
      "shopifyOrderTotalPrice": Decimal,
      "shopifyOrderSubtotalPrice": Decimal,
      "shopifyOrderTags": ["xyz789"],
      "shopifyOrderCustomerTags": [
        "abc123"
      ],
      "shopifyReturnSyncStatus": "UNSYNCABLE",
      "availableActions": ["DISCARD"],
      "customerNumberOfOrders": 123,
      "customerNumberOfReturns": 123,
      "shipmentCarrierName": "xyz789",
      "shipmentServiceName": "xyz789",
      "pendingLabelRate": PendingLabelRate,
      "receipts": [Receipt],
      "hasReturnProtection": true,
      "requestType": "xyz789",
      "withdrawalSubtype": "xyz789",
      "withdrawalReceivedAt": "2007-12-03T10:15:30Z",
      "withdrawalManualResolutionReason": "INTERCEPTED_OR_CANCELLED_OUTSIDE_RETURNZAP",
      "resolvedAt": "2007-12-03T10:15:30Z",
      "withdrawalCancellationState": "abc123",
      "withdrawalCancellationErrorReason": "abc123",
      "withdrawalRefundDueAt": "2007-12-03T10:15:30Z",
      "originCountryCode": "xyz789",
      "orderId": "abc123",
      "orderNumber": "abc123",
      "orderDate": "2007-12-03T10:15:30Z",
      "returnDate": "2007-12-03T10:15:30Z",
      "isActive": false,
      "unitQuantity": 987,
      "returnValueAmount": Decimal,
      "resolvedStatus": "RESOLVED",
      "returnItemTypes": ["xyz789"],
      "returnTypeLabels": ["abc123"]
    }
  }
}

returns

Response

Returns a DashboardResponse

Arguments
Name Description
query - String Default = ""
stages - [Int]
status - ArchiveFilter
returnDate - DateFilterRange
orderDate - DateFilterRange
stageUpdatedDate - DateFilterRange
perPage - Int Default = 25
currentPage - Int Default = 0
sortBy - String Default = "-returnDate"
resolvedStatus - [ResolvedStatus]
returnItemTypes - [String]
draftProcessingState - [DraftReturnState]
warehouseIds - [Int] No filtering if not passed in or empty list. Use 0 to designate default, or no warehouse.
requestType - [String]

Example

Query
query returns(
  $query: String,
  $stages: [Int],
  $status: ArchiveFilter,
  $returnDate: DateFilterRange,
  $orderDate: DateFilterRange,
  $stageUpdatedDate: DateFilterRange,
  $perPage: Int,
  $currentPage: Int,
  $sortBy: String,
  $resolvedStatus: [ResolvedStatus],
  $returnItemTypes: [String],
  $draftProcessingState: [DraftReturnState],
  $warehouseIds: [Int],
  $requestType: [String]
) {
  returns(
    query: $query,
    stages: $stages,
    status: $status,
    returnDate: $returnDate,
    orderDate: $orderDate,
    stageUpdatedDate: $stageUpdatedDate,
    perPage: $perPage,
    currentPage: $currentPage,
    sortBy: $sortBy,
    resolvedStatus: $resolvedStatus,
    returnItemTypes: $returnItemTypes,
    draftProcessingState: $draftProcessingState,
    warehouseIds: $warehouseIds,
    requestType: $requestType
  ) {
    id
    returns {
      ...ReturnFragment
    }
    totalCount
  }
}
Variables
{
  "query": "",
  "stages": [123],
  "status": "ACTIVE",
  "returnDate": DateFilterRange,
  "orderDate": DateFilterRange,
  "stageUpdatedDate": DateFilterRange,
  "perPage": 25,
  "currentPage": 0,
  "sortBy": "-returnDate",
  "resolvedStatus": ["RESOLVED"],
  "returnItemTypes": ["abc123"],
  "draftProcessingState": ["CREATED"],
  "warehouseIds": [123],
  "requestType": ["xyz789"]
}
Response
{
  "data": {
    "returns": {
      "id": "4",
      "returns": [Return],
      "totalCount": 987
    }
  }
}

shopifyUser

Response

Returns a ShopifyUser

Arguments
Name Description
id - ID!

Example

Query
query shopifyUser($id: ID!) {
  shopifyUser(id: $id) {
    id
    uuid
    accountOwner
    preferredLocale
    hqPreferences
    isAdmin
    canManageUsers
    canModifySettings
    canProcessReturns
    shopifyId
    email
    firstName
    lastName
    locale
    isActive
    chatHash
    shouldUpdate
    isDeleted
    shopifyRoles
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "shopifyUser": {
      "id": 4,
      "uuid": "abc123",
      "accountOwner": true,
      "preferredLocale": "xyz789",
      "hqPreferences": JSONString,
      "isAdmin": true,
      "canManageUsers": true,
      "canModifySettings": true,
      "canProcessReturns": true,
      "shopifyId": "abc123",
      "email": "xyz789",
      "firstName": "abc123",
      "lastName": "abc123",
      "locale": "abc123",
      "isActive": false,
      "chatHash": "xyz789",
      "shouldUpdate": false,
      "isDeleted": false,
      "shopifyRoles": "xyz789"
    }
  }
}

Mutations

adminMarkReceived

Description

Preferred admin alias for returnReceived. Internally projects through the WMS Receipt lifecycle service so Receipt is the source of truth for receiving.

Response

Returns a ReceivedReturn

Arguments
Name Description
items - [ReceivedReturnItemInput!] Per-item receiving data with status, condition, and rejection reason
media - [WarehouseMediaInput!] Return-level warehouse media attached to the resulting Receipt
missingReturnItemIds - [ID] Legacy: List of return items that should be marked as missing
notes - [WarehouseNoteInput!] Return-level warehouse notes attached to the resulting Receipt
resolvedReturnItemIds - [ID] List of return items that should be marked as manually resolved
returnId - ID!

Example

Query
mutation adminMarkReceived(
  $items: [ReceivedReturnItemInput!],
  $media: [WarehouseMediaInput!],
  $missingReturnItemIds: [ID],
  $notes: [WarehouseNoteInput!],
  $resolvedReturnItemIds: [ID],
  $returnId: ID!
) {
  adminMarkReceived(
    items: $items,
    media: $media,
    missingReturnItemIds: $missingReturnItemIds,
    notes: $notes,
    resolvedReturnItemIds: $resolvedReturnItemIds,
    returnId: $returnId
  ) {
    error
    return {
      ...ReturnFragment
    }
  }
}
Variables
{
  "items": [ReceivedReturnItemInput],
  "media": [WarehouseMediaInput],
  "missingReturnItemIds": [4],
  "notes": [WarehouseNoteInput],
  "resolvedReturnItemIds": ["4"],
  "returnId": "4"
}
Response
{
  "data": {
    "adminMarkReceived": {
      "error": "xyz789",
      "return": Return
    }
  }
}

archiveReturns

Use updateReturn or returnUpdateStatus mutations instead
Response

Returns an ArchiveReturns

Arguments
Name Description
archive - Boolean!
returnIds - [ID]!

Example

Query
mutation archiveReturns(
  $archive: Boolean!,
  $returnIds: [ID]!
) {
  archiveReturns(
    archive: $archive,
    returnIds: $returnIds
  ) {
    success
  }
}
Variables
{"archive": true, "returnIds": [4]}
Response
{"data": {"archiveReturns": {"success": true}}}

exchangeOrderBulkComplete

Use releaseExchangeItems instead
Description

Complete a list of exchange orders in Shopify and update the exchange order status in RZ

Response

Returns a ReleaseExchangeItemsMutation

Arguments
Name Description
exchangeItemIds - [ID!]
exchangeOrderIds - [ID!]
returnId - ID
returnItemIds - [ID!]

Example

Query
mutation exchangeOrderBulkComplete(
  $exchangeItemIds: [ID!],
  $exchangeOrderIds: [ID!],
  $returnId: ID,
  $returnItemIds: [ID!]
) {
  exchangeOrderBulkComplete(
    exchangeItemIds: $exchangeItemIds,
    exchangeOrderIds: $exchangeOrderIds,
    returnId: $returnId,
    returnItemIds: $returnItemIds
  ) {
    errors
    caveats
    exchangeOrders {
      ...ExchangeOrderFragment
    }
    exchangeItems {
      ...ExchangeItemFragment
    }
    return_ {
      ...ReturnFragment
    }
  }
}
Variables
{
  "exchangeItemIds": [4],
  "exchangeOrderIds": ["4"],
  "returnId": 4,
  "returnItemIds": [4]
}
Response
{
  "data": {
    "exchangeOrderBulkComplete": {
      "errors": ["xyz789"],
      "caveats": ["abc123"],
      "exchangeOrders": [ExchangeOrder],
      "exchangeItems": [ExchangeItem],
      "return_": Return
    }
  }
}

generatePortalImageUploadUrl

Response

Returns an GeneratePortalImageUploadURL

Arguments
Name Description
contentType - String!
filename - String!
imageType - String!

Example

Query
mutation generatePortalImageUploadUrl(
  $contentType: String!,
  $filename: String!,
  $imageType: String!
) {
  generatePortalImageUploadUrl(
    contentType: $contentType,
    filename: $filename,
    imageType: $imageType
  ) {
    errors {
      ...GQLErrorTypeFragment
    }
    uploadUrl {
      ...SignedUrlFragment
    }
    imagePath
  }
}
Variables
{
  "contentType": "xyz789",
  "filename": "xyz789",
  "imageType": "xyz789"
}
Response
{
  "data": {
    "generatePortalImageUploadUrl": {
      "errors": [GQLErrorType],
      "uploadUrl": SignedUrl,
      "imagePath": "xyz789"
    }
  }
}

generateUploadUrl

Use generate_shipping_label_upload_url instead
Response

Returns an GenerateShippingLabelUploadURL

Arguments
Name Description
contentType - String!
fileName - String!

Example

Query
mutation generateUploadUrl(
  $contentType: String!,
  $fileName: String!
) {
  generateUploadUrl(
    contentType: $contentType,
    fileName: $fileName
  ) {
    error
    url {
      ...SignedUrlFragment
    }
  }
}
Variables
{
  "contentType": "xyz789",
  "fileName": "abc123"
}
Response
{
  "data": {
    "generateUploadUrl": {
      "error": "abc123",
      "url": SignedUrl
    }
  }
}

questionCreate

Response

Returns a CreateOrUpdateQuestion

Arguments
Name Description
question - QuestionInput!

Example

Query
mutation questionCreate($question: QuestionInput!) {
  questionCreate(question: $question) {
    question {
      ...QuestionFragment
    }
  }
}
Variables
{"question": QuestionInput}
Response
{"data": {"questionCreate": {"question": Question}}}

questionDelete

Response

Returns a DeleteQuestion

Arguments
Name Description
questionId - ID!

Example

Query
mutation questionDelete($questionId: ID!) {
  questionDelete(questionId: $questionId) {
    success
  }
}
Variables
{"questionId": "4"}
Response
{"data": {"questionDelete": {"success": false}}}

questionUpdate

Response

Returns a CreateOrUpdateQuestion

Arguments
Name Description
question - QuestionInput!

Example

Query
mutation questionUpdate($question: QuestionInput!) {
  questionUpdate(question: $question) {
    question {
      ...QuestionFragment
    }
  }
}
Variables
{"question": QuestionInput}
Response
{"data": {"questionUpdate": {"question": Question}}}

releaseExchangeItems

Description

Release exchange items to be fulfilled.

Response

Returns a ReleaseExchangeItemsMutation

Arguments
Name Description
exchangeItemIds - [ID!]
exchangeOrderIds - [ID!]
returnId - ID
returnItemIds - [ID!]

Example

Query
mutation releaseExchangeItems(
  $exchangeItemIds: [ID!],
  $exchangeOrderIds: [ID!],
  $returnId: ID,
  $returnItemIds: [ID!]
) {
  releaseExchangeItems(
    exchangeItemIds: $exchangeItemIds,
    exchangeOrderIds: $exchangeOrderIds,
    returnId: $returnId,
    returnItemIds: $returnItemIds
  ) {
    errors
    caveats
    exchangeOrders {
      ...ExchangeOrderFragment
    }
    exchangeItems {
      ...ExchangeItemFragment
    }
    return_ {
      ...ReturnFragment
    }
  }
}
Variables
{
  "exchangeItemIds": ["4"],
  "exchangeOrderIds": ["4"],
  "returnId": "4",
  "returnItemIds": ["4"]
}
Response
{
  "data": {
    "releaseExchangeItems": {
      "errors": ["abc123"],
      "caveats": ["abc123"],
      "exchangeOrders": [ExchangeOrder],
      "exchangeItems": [ExchangeItem],
      "return_": Return
    }
  }
}

returnApprove

Response

Returns an ApproveReturn

Arguments
Name Description
customRmaNumber - String
externalShippingLabelUrl - String
noShippingRequired - Boolean Default = null
returnId - ID!

Example

Query
mutation returnApprove(
  $customRmaNumber: String,
  $externalShippingLabelUrl: String,
  $noShippingRequired: Boolean,
  $returnId: ID!
) {
  returnApprove(
    customRmaNumber: $customRmaNumber,
    externalShippingLabelUrl: $externalShippingLabelUrl,
    noShippingRequired: $noShippingRequired,
    returnId: $returnId
  ) {
    error
    errorText
    return {
      ...ReturnFragment
    }
  }
}
Variables
{
  "customRmaNumber": "abc123",
  "externalShippingLabelUrl": "abc123",
  "noShippingRequired": null,
  "returnId": "4"
}
Response
{
  "data": {
    "returnApprove": {
      "error": "xyz789",
      "errorText": "xyz789",
      "return": Return
    }
  }
}

returnCreateStoreCredit

Response

Returns a CreateReturnStoreCreditMutation

Arguments
Name Description
amount - Decimal! Exact store-credit amount issued to the customer; fees are not deducted automatically
bonusCredit - Decimal Bonus credit amount to issue separately via storeCreditAccountCredit
handlingFee - Decimal Total handling fee to record; does not reduce amount
notifyCustomer - Boolean
refundShipping - Boolean!
restockingFee - Decimal Total restocking fee to record; does not reduce amount
returnItemIds - [ID!]!

Example

Query
mutation returnCreateStoreCredit(
  $amount: Decimal!,
  $bonusCredit: Decimal,
  $handlingFee: Decimal,
  $notifyCustomer: Boolean,
  $refundShipping: Boolean!,
  $restockingFee: Decimal,
  $returnItemIds: [ID!]!
) {
  returnCreateStoreCredit(
    amount: $amount,
    bonusCredit: $bonusCredit,
    handlingFee: $handlingFee,
    notifyCustomer: $notifyCustomer,
    refundShipping: $refundShipping,
    restockingFee: $restockingFee,
    returnItemIds: $returnItemIds
  ) {
    error
    errorText
    caveatError
    caveatErrorContext
    return {
      ...ReturnFragment
    }
    storeCredit {
      ...StoreCreditTypeFragment
    }
  }
}
Variables
{
  "amount": Decimal,
  "bonusCredit": Decimal,
  "handlingFee": Decimal,
  "notifyCustomer": false,
  "refundShipping": false,
  "restockingFee": Decimal,
  "returnItemIds": ["4"]
}
Response
{
  "data": {
    "returnCreateStoreCredit": {
      "error": "xyz789",
      "errorText": "xyz789",
      "caveatError": "xyz789",
      "caveatErrorContext": JSONString,
      "return": Return,
      "storeCredit": StoreCreditType
    }
  }
}

returnDispose

Description

Dispose a return items in Shopify. This will create disposition for each return item in Shopify. Used for restocking items and for marking items as missing in Return. This action is irreversible, once a return item is disposed it cannot be undone.

Response

Returns a DisposeReturn

Arguments
Name Description
dispositionAction - DispositionAction
dispositionType - DispositionType
items - [DisposeReturnItemMediaInput!] Per-item media/note evidence persisted on the resulting Disposition.
returnId - ID!
returnItemIds - [ID!]!
shopifyLocationId - ID!

Example

Query
mutation returnDispose(
  $dispositionAction: DispositionAction,
  $dispositionType: DispositionType,
  $items: [DisposeReturnItemMediaInput!],
  $returnId: ID!,
  $returnItemIds: [ID!]!,
  $shopifyLocationId: ID!
) {
  returnDispose(
    dispositionAction: $dispositionAction,
    dispositionType: $dispositionType,
    items: $items,
    returnId: $returnId,
    returnItemIds: $returnItemIds,
    shopifyLocationId: $shopifyLocationId
  ) {
    error
    return {
      ...ReturnFragment
    }
  }
}
Variables
{
  "dispositionAction": "RESTOCK",
  "dispositionType": "MISSING",
  "items": [DisposeReturnItemMediaInput],
  "returnId": 4,
  "returnItemIds": [4],
  "shopifyLocationId": "4"
}
Response
{
  "data": {
    "returnDispose": {
      "error": "abc123",
      "return": Return
    }
  }
}

returnItemMissingUpdate

Description

Used to update the line items of return isMissing field to true or false

Response

Returns an UpdateMissingReturnItems

Arguments
Name Description
isMissing - Boolean! Missing or not, this applies to all the return items
returnId - ID!
returnItemIds - [ID]! List of return items that should be updated

Example

Query
mutation returnItemMissingUpdate(
  $isMissing: Boolean!,
  $returnId: ID!,
  $returnItemIds: [ID]!
) {
  returnItemMissingUpdate(
    isMissing: $isMissing,
    returnId: $returnId,
    returnItemIds: $returnItemIds
  ) {
    error
    return {
      ...ReturnFragment
    }
  }
}
Variables
{
  "isMissing": false,
  "returnId": "4",
  "returnItemIds": [4]
}
Response
{
  "data": {
    "returnItemMissingUpdate": {
      "error": "abc123",
      "return": Return
    }
  }
}

returnRefund

Response

Returns a RefundReturn

Arguments
Name Description
handlingFee - Decimal Total handling fee to record; does not reduce refundFullAmount
notifyCustomer - Boolean!
refundCurrency - String!
refundFullAmount - Decimal! Exact amount refunded to the customer; fees are not deducted automatically
refundShipping - Boolean!
restockingFee - Decimal Total restocking fee to record; does not reduce refundFullAmount
returnId - ID!
returnItemIds - [ID!]!

Example

Query
mutation returnRefund(
  $handlingFee: Decimal,
  $notifyCustomer: Boolean!,
  $refundCurrency: String!,
  $refundFullAmount: Decimal!,
  $refundShipping: Boolean!,
  $restockingFee: Decimal,
  $returnId: ID!,
  $returnItemIds: [ID!]!
) {
  returnRefund(
    handlingFee: $handlingFee,
    notifyCustomer: $notifyCustomer,
    refundCurrency: $refundCurrency,
    refundFullAmount: $refundFullAmount,
    refundShipping: $refundShipping,
    restockingFee: $restockingFee,
    returnId: $returnId,
    returnItemIds: $returnItemIds
  ) {
    error
    return {
      ...ReturnFragment
    }
    refund {
      ...RefundTypeFragment
    }
  }
}
Variables
{
  "handlingFee": Decimal,
  "notifyCustomer": true,
  "refundCurrency": "abc123",
  "refundFullAmount": Decimal,
  "refundShipping": true,
  "restockingFee": Decimal,
  "returnId": 4,
  "returnItemIds": ["4"]
}
Response
{
  "data": {
    "returnRefund": {
      "error": "xyz789",
      "return": Return,
      "refund": RefundType
    }
  }
}

returnReject

Response

Returns a RejectReturn

Arguments
Name Description
allowResubmission - Boolean Default = false
rejectionReason - String
returnId - ID!

Example

Query
mutation returnReject(
  $allowResubmission: Boolean,
  $rejectionReason: String,
  $returnId: ID!
) {
  returnReject(
    allowResubmission: $allowResubmission,
    rejectionReason: $rejectionReason,
    returnId: $returnId
  ) {
    error
    return {
      ...ReturnFragment
    }
  }
}
Variables
{
  "allowResubmission": false,
  "rejectionReason": "abc123",
  "returnId": "4"
}
Response
{
  "data": {
    "returnReject": {
      "error": "xyz789",
      "return": Return
    }
  }
}

returnUpdateStatus

Response

Returns a ReturnUpdateStatus

Arguments
Name Description
filters - FiltersInput
isArchived - Boolean!
returnIds - [ID]! Specific return IDs to update. If empty, filters are used to resolve returns.

Example

Query
mutation returnUpdateStatus(
  $filters: FiltersInput,
  $isArchived: Boolean!,
  $returnIds: [ID]!
) {
  returnUpdateStatus(
    filters: $filters,
    isArchived: $isArchived,
    returnIds: $returnIds
  ) {
    success
    affectedReturnIds
  }
}
Variables
{
  "filters": FiltersInput,
  "isArchived": true,
  "returnIds": ["4"]
}
Response
{"data": {"returnUpdateStatus": {"success": false, "affectedReturnIds": [123]}}}

setReturnNotes

Response

Returns a SetReturnNotes

Arguments
Name Description
notes - String
returnId - ID!

Example

Query
mutation setReturnNotes(
  $notes: String,
  $returnId: ID!
) {
  setReturnNotes(
    notes: $notes,
    returnId: $returnId
  ) {
    error
    return {
      ...ReturnFragment
    }
  }
}
Variables
{"notes": "abc123", "returnId": 4}
Response
{
  "data": {
    "setReturnNotes": {
      "error": "abc123",
      "return": Return
    }
  }
}

taxNumbersDelete

Response

Returns a DeleteTaxNumbers

Arguments
Name Description
ids - [ID]!

Example

Query
mutation taxNumbersDelete($ids: [ID]!) {
  taxNumbersDelete(ids: $ids) {
    errors {
      ...GQLErrorTypeFragment
    }
  }
}
Variables
{"ids": [4]}
Response
{"data": {"taxNumbersDelete": {"errors": [GQLErrorType]}}}

taxNumbersPut

Response

Returns a PutTaxNumbers

Arguments
Name Description
taxNumbers - [TaxNumberInput]!

Example

Query
mutation taxNumbersPut($taxNumbers: [TaxNumberInput]!) {
  taxNumbersPut(taxNumbers: $taxNumbers) {
    errors {
      ...GQLErrorTypeFragment
    }
    taxNumbers {
      ...TaxNumberOutputFragment
    }
  }
}
Variables
{"taxNumbers": [TaxNumberInput]}
Response
{
  "data": {
    "taxNumbersPut": {
      "errors": [GQLErrorType],
      "taxNumbers": [TaxNumberOutput]
    }
  }
}

updateReturn

Response

Returns an UpdateReturn

Arguments
Name Description
isArchived - Boolean!
returnId - Int!
stageId - ID!

Example

Query
mutation updateReturn(
  $isArchived: Boolean!,
  $returnId: Int!,
  $stageId: ID!
) {
  updateReturn(
    isArchived: $isArchived,
    returnId: $returnId,
    stageId: $stageId
  ) {
    success
    ret {
      ...ReturnFragment
    }
  }
}
Variables
{
  "isArchived": false,
  "returnId": 987,
  "stageId": "4"
}
Response
{
  "data": {
    "updateReturn": {"success": true, "ret": Return}
  }
}

Types

Address

Fields
Field Name Description
id - Int
uuid - ID
name - String
company - String
addressLine1 - String
addressLine2 - String
city - String
state - String
postalCode - String
country - String
phoneNumber - String
Example
{
  "id": 123,
  "uuid": "4",
  "name": "xyz789",
  "company": "abc123",
  "addressLine1": "abc123",
  "addressLine2": "abc123",
  "city": "xyz789",
  "state": "xyz789",
  "postalCode": "xyz789",
  "country": "abc123",
  "phoneNumber": "abc123"
}

AddressType

Fields
Field Name Description
id - ID
userName - String
company - String
street1 - String
phone - String
street2 - String
country - String
city - String
zip - String
state - String
Example
{
  "id": 4,
  "userName": "xyz789",
  "company": "abc123",
  "street1": "abc123",
  "phone": "abc123",
  "street2": "xyz789",
  "country": "abc123",
  "city": "abc123",
  "zip": "abc123",
  "state": "xyz789"
}

AnswerResponseType

Fields
Field Name Description
text - String
selectedChoices - [SelectedChoiceType]
Example
{
  "text": "xyz789",
  "selectedChoices": [SelectedChoiceType]
}

AppliedRuleType

Fields
Field Name Description
isSystemRule - Boolean!
name - String!
description - String!
Example
{
  "isSystemRule": false,
  "name": "abc123",
  "description": "abc123"
}

ApproveReturn

Fields
Field Name Description
error - String
errorText - String
return - Return
Example
{
  "error": "abc123",
  "errorText": "abc123",
  "return": Return
}

ArchiveFilter

Values
Enum Value Description

ACTIVE

ARCHIVED

BOTH

Example
"ACTIVE"

ArchiveReturns

Fields
Field Name Description
success - Boolean
Example
{"success": true}

AuthenticatedShop

Description

Note, this is different from the public portal's PublicShop (returnzap.portal.graphql.types.shop) since we will expose things to an authenticated shop admin that we won't expose to the public portal APIs.

Fields
Field Name Description
uuid - String!
url - String!
primaryDomain - String!
timezone - String! IANA timezone string (e.g. America/New_York)
name - String!
isTestShop - Boolean!
isUitestShop - Boolean!
onboardingCompletedAt - DateTime
needsToEnableExchangeTestDrive - Boolean!
userPermissionsEnabled - Boolean! Enable user-level permissions (Premium feature)
notifyOnlyIfApprovalIsRequired - Boolean!
instructions - String!
portalTheme - String!
portalLanguage - String!
portalFrenchUseAlternative - Boolean! Use informal French
portalGermanUseAlternative - Boolean! Use informal German
portalItalianUseAlternative - Boolean! Use formal Italian
portalCustomizations - JSONString!
shouldDisplayFeesInPortal - Boolean!
refundPortalDisplayOrder - Int!
creditPortalDisplayOrder - Int!
exchangePortalDisplayOrder - Int!
showPortalSummary - Boolean!
portalExchangeSelectionMethod - PortalExchangeSelectionMethod
portalVisualExchangeType - PortalVisualExchangeType
portalVisualExchangeIncludeCollections - [String!]!
portalVisualExchangeExcludeCollections - [String!]!
exchangeUpsellEnabled - Boolean!
exchangeUpsellDiscountPercentage - Decimal Percentage discount for upsell exchanges
minFilesPerReturn - Int! Minimum number of files required when creating a return
maxFilesPerReturn - Int Maximum number of files allowed when creating a return
isShippingLabelUploadAllowed - Boolean!
barcodeValue - BarcodeValue
enableCustomRmaNumber - Boolean!
shipFree - Boolean!
shipPay - Boolean!
shipSelf - Boolean!
shipStore - Boolean! If True, customers can choose to return items to a store.
isShippingByReturnzapAvailable - Boolean!
useShippingByReturnzap - Boolean!
prepaidShippingFee - Decimal
paidShippingFee - Decimal
selfShippingFee - Decimal
storeShippingFee - Decimal Optional handling fee charged for return-to-store returns.
storeReturnInstructions - String! Instructions shown to customers returning items to a store.
isDefaultFeeEqualsShippingCost - Boolean!
shippingRateSelectLowestRate - Boolean!
shippingRateShowUpToPercentage - Decimal!
customerLabelFlatFee - Decimal Flat fee for customer labels. Leave empty to charge the actual label cost (plus multiplier); setting 0.00 forces a free label.
customerPaidShippingMode - CustomerPaidShippingMode! Determines which account to use for customer-paid shipping labels
isNoShippingReturnEnabled - Boolean!
displayGreenReturnsUpfront - Boolean! When enabled, shoppers see the no-shipping-required option upfront on the shipping step for returns where every item qualifies. Requires is_no_shipping_return_enabled and at least one of ship_free/ship_pay/ship_self for the fallback case.
isQrCodeEnabled - Boolean!
isCartonizationEnabled - Boolean!
isWarehouseManagementEnabled - Boolean! Enable WMS receiving tools and warehouse assignments for this shop.
withdrawalEnabled - Boolean! Enable the EU right-of-withdrawal flow for this shop. Gates HQ controls and new submissions.
customerCancelEnabled - Boolean! Let customers cancel their own return from the portal while it is unshipped and unresolved.
withdrawalDaysSinceDelivery - Int! Days after delivery a post-fulfillment withdrawal stays eligible, when Shopify exposes a delivery date.
withdrawalDaysSinceFulfillment - Int! Fallback withdrawal window in days after fulfillment, used when no delivery date is available.
withdrawalHandlingMode - ShopsShopWithdrawalHandlingModeChoices! How EU withdrawals route: automatic (normal routing) or always_manual (every request enters the manual flow).
preFulfillmentManualReviewAfterMinutes - Int Optional: route unfulfilled withdrawals at least this many minutes old to manual review instead of automatic cancellation (automatic mode only; null = no cutoff).
cartonizationLengthUnit - LengthUnit
restockingFeeDefinedAsPercentage - Boolean!
defaultRefundFee - Decimal
defaultExchangeFee - Decimal
defaultStoreCreditFee - Decimal
currency - String! The default currency code from Shopify (e.g. USD, CAD)
internationalCustomsContentValueSource - CustomsContentValueSource
intlCommercialInvoiceAttachment - CommercialInvoiceAttachment
klaviyoApiKey - String!
gorgiasSubdomain - String! The user entered subdomain that we'll use to match with Gorgias accounts once they've completed the OAuth flow.
useApprovals - Boolean!
requireApprovalForAllReturns - Boolean!
useShopAddressForPosReturns - Boolean!
useBillingAddressFallback - Boolean! When enabled, fall back to billing address if shipping address is missing when creating returns
allowGiftReturns - Boolean!
giftReturnsExchangeEnabled - Boolean!
giftReturnsStoreCreditEnabled - Boolean!
preventReturnsFromDifferentFulfillments - Boolean! Prevent items which shipped in different fulfillments from being returned together
delayedShopifyReturnCreationEnabled - Boolean! ReturnZap will not create a return directly in Shopify until the return's stage.create_shopify_return=True or an admin user tries to resolve an item.
createReturnOnResolve - Boolean! When enabled, ReturnZap will create the Shopify return when an admin resolves an item.
returnTypeComparisonFlowEnabled - Boolean! When enabled, the portal has the shopper choose their return type (exchange / refund / store credit) on a comparison screen before selecting a shipping method.
isRefundIntegrationEnabled - Boolean! Integration with Shopify Refund
isRestockIntegrationEnabled - Boolean! Has the customer enabled integration with Shopify Restock?
returnItemExpirationDays - Int! Number of days after which unresolved return items expire.
isReturnItemExpirationEnabled - Boolean!
returnItemExpirationEnabledAt - DateTime When return item expiration was enabled. Returns created before (this date - max_policy_days) won't be expired.
expirationPreventionAction - ExpirationPreventionAction
expirationPeriodType - ExpirationPeriodType
isExchangeIntegrationEnabled - Boolean! Has the customer enabled integration with Shopify Exchange?
exchangeMethod - ExchangeMethod
isInlineExchangeEnabled - Boolean! Allow the shop customer to exchange items in the portal
isFullCatalogExchangeEnabled - Boolean! Allow the shop customer to exchange any item in the catalog
useConsolidatedOrderExchanges - Boolean!
discountSameProductExchangesToBeEqual - Boolean! If customer is exchanging for another variant of the same product, discount it to the same value as the original variant
exchangeNormalizeCrossProductEqualPrices - Boolean! When enabled, advanced exchanges between DIFFERENT products will apply price normalization if current prices match (zero-balance swaps).
isExchangeDifferentialPricingEnabled - Boolean! Allow the shop customer to exchange items with different prices
exchangeRoundToZeroIfLteTo - Decimal If the balance due for an exchange is less than or equal to this value, round it to zero.
exchangeDaysToReserveStock - Int! Number of days to reserve stock for exchange
allowOutOfStockExchanges - Boolean! Allow exchanges for items that are out of stock
exchangeCheckInventoryAtFulfillmentLocation - Boolean! If enabled, exchange product lookup will exclude items with no inventory at the location the line item was fulfilled from.
carryDiscountForwardType - CarryDiscountForwardType
useExchangeShipmentOrders - Boolean! If True, we'll create a new exchange order for fulfilling replacement items and place a hold on the original order's fulfillment order.
exchangeShipmentOrderSuffix - String! By default we will add "-EX" + "" to the order name for the new exchange order, e.g. #123-EX1, #123-EX2, etc.
exchangeShippingLineTitle - String
autoProcessExchangesOnCreation - Boolean! Automatically process and reserve exchange items from stock when return is created
isStoreCreditIntegrationEnabled - Boolean! Has the customer enabled integration with Shopify Store Credit?
isStoreCreditIncentiveEnabled - Boolean!
storeCreditIncentivePercentage - Float! Percentage between 0 and 100
minStoreCreditIncentiveAmount - Decimal
maxStoreCreditIncentiveAmount - Decimal
isStoreCreditIncentiveRoundToNearest - Boolean!
resolvePartialExchangeRefundsToStoreCredit - Boolean! If True, partial refunds from exchanges are issued to store credit. If False, they are issued as refunds.
storeCreditExpireDays - Int Number of days after which store credits expire. If null, store credits do not expire.
giftCardPrefix - String
id - ID!
useNewAnalyticsUi - Boolean Analytics UI is now enabled for all shops.
useAsyncReturnProcessing - Boolean! Return processing is always asynchronous; field kept for cached pre-cutover bundles.
parentUrl - String
shopifyAdminUrl - String!
primaryFieldBehavior - PrimaryFieldBehavior!
secondaryFieldBehavior - SecondaryFieldBehavior!
reauthenticateUrl - String Allow the user to reauthenticate with Shopify
hasTestModeReturns - Boolean
hasReturnWithdrawals - Boolean
defaultPortalUrl - String!
adminAppUrl - String!
enableRefund - Boolean
refundDays - Int
refundDaysType - DaysType
refundCommentsEnabled - Boolean
refundCommentsRequired - Boolean
refundRequireDeliveryBeforeReturn - Boolean
enableExchange - Boolean
exchangeDays - Int
exchangeDaysType - DaysType
exchangeCommentsEnabled - Boolean
exchangeCommentsRequired - Boolean
exchangeRequireDeliveryBeforeReturn - Boolean
exchangeExcludeTags - [String]
enableStoreCredit - Boolean
storeCreditDays - Int
storeCreditDaysType - DaysType
storeCreditCommentsEnabled - Boolean
storeCreditCommentsRequired - Boolean
storeCreditRequireDeliveryBeforeReturn - Boolean
automatedStoreCreditType - AutomatedStoreCreditType
notificationEmailAddress - String
notificationEmailAttachRma - Boolean
customerEmailDisplayFromName - String
customerEmailReplyToAddress - String
defaultAddress - Address
defaultWeight - Decimal
defaultWeightUnit - String
international - Boolean
internationalOriginCountry - String
internationalCustomsSigner - String
internationalNonDeliveryOption - String
internationalExemptionCode - String
internationalDefaultHarmonizedSystemCode - String
shippoApiKey - String
stripePublishableKey - String
stripeSecretKey - String
subscriptionPlan - ShopSubscriptionPlan!
features - [String]
installedAt - DateTime
returnReasons - [ReturnReason]
stages - [Stage]
notifications - [Notification]
rules - [Rule]!
packages - [PackageType]!
dynamicTranslations - [DynamicTranslation]
returnIntegration - Boolean
missingScopes - [String] Missing scopes based on the enable features for the user
returnProtectionMissingScopes - [String]!
sendcloudAccounts - [SendcloudAccount]
shopifyLocations - [ShopifyLocation]
Arguments
skipCache - Boolean
easyPostAccount - EasyPostAccountType
shippoAccount - ShippoAccountType
shipstationAccount - ShipStationAccountType
zendeskAccount - ZendeskAccountType
refField1Source - RefFieldSource
refField2Source - RefFieldSource
storeCreditIncentiveType - StoreCreditIncentiveType
restockingFeeType - RestockingFeeType
webhookUrl - String
webhookEvents - [WebhookEventType]
questions - [Question]
stageShipmentStatuses - [StageShipmentStatusType]
defaultWarehouseForPosReturns - ID
defaultRestockLocationId - String! Shopify location id pre-selected when restocking. Empty means no default.
portalConfig - PortalConfigType!
authorizationPdfLogo - Image
hasLabelIntegration - Boolean!
canUseStoreShippingMode - Boolean! Whether the shop can use store mode for customer-paid shipping (requires Stripe + shipping integration)
autoRechargeStatus - AutoRechargeStatus
featureFlags - [GrapheneFeatureFlagValue]!
Arguments
keys - [String!]!
configurationGoals - ConfigurationGoals!
logo - String
logoUploadUrl - SignedUrl
Arguments
filename - String!
easypostApiKey - String Use easyPostAccount.apiKey instead
onboardingComplete - Boolean Use onboarding_completed_at instead
installDate - DateTime Use installed_at instead
exchangeIntegration - Boolean Use is_exchange_integration_enabled or check for feature instead
storeCreditIntegration - Boolean Use is_store_credit_integration_enabled or check for feature instead
Example
{
  "uuid": "xyz789",
  "url": "xyz789",
  "primaryDomain": "abc123",
  "timezone": "abc123",
  "name": "xyz789",
  "isTestShop": false,
  "isUitestShop": true,
  "onboardingCompletedAt": "2007-12-03T10:15:30Z",
  "needsToEnableExchangeTestDrive": false,
  "userPermissionsEnabled": false,
  "notifyOnlyIfApprovalIsRequired": false,
  "instructions": "xyz789",
  "portalTheme": "abc123",
  "portalLanguage": "xyz789",
  "portalFrenchUseAlternative": true,
  "portalGermanUseAlternative": true,
  "portalItalianUseAlternative": false,
  "portalCustomizations": JSONString,
  "shouldDisplayFeesInPortal": false,
  "refundPortalDisplayOrder": 123,
  "creditPortalDisplayOrder": 987,
  "exchangePortalDisplayOrder": 123,
  "showPortalSummary": true,
  "portalExchangeSelectionMethod": "SEARCH",
  "portalVisualExchangeType": "NONE",
  "portalVisualExchangeIncludeCollections": [
    "abc123"
  ],
  "portalVisualExchangeExcludeCollections": [
    "xyz789"
  ],
  "exchangeUpsellEnabled": false,
  "exchangeUpsellDiscountPercentage": Decimal,
  "minFilesPerReturn": 987,
  "maxFilesPerReturn": 987,
  "isShippingLabelUploadAllowed": false,
  "barcodeValue": "NONE",
  "enableCustomRmaNumber": true,
  "shipFree": false,
  "shipPay": true,
  "shipSelf": true,
  "shipStore": true,
  "isShippingByReturnzapAvailable": false,
  "useShippingByReturnzap": false,
  "prepaidShippingFee": Decimal,
  "paidShippingFee": Decimal,
  "selfShippingFee": Decimal,
  "storeShippingFee": Decimal,
  "storeReturnInstructions": "abc123",
  "isDefaultFeeEqualsShippingCost": false,
  "shippingRateSelectLowestRate": true,
  "shippingRateShowUpToPercentage": Decimal,
  "customerLabelFlatFee": Decimal,
  "customerPaidShippingMode": "RETURNZAP",
  "isNoShippingReturnEnabled": false,
  "displayGreenReturnsUpfront": false,
  "isQrCodeEnabled": true,
  "isCartonizationEnabled": true,
  "isWarehouseManagementEnabled": true,
  "withdrawalEnabled": true,
  "customerCancelEnabled": true,
  "withdrawalDaysSinceDelivery": 987,
  "withdrawalDaysSinceFulfillment": 987,
  "withdrawalHandlingMode": "AUTOMATIC",
  "preFulfillmentManualReviewAfterMinutes": 123,
  "cartonizationLengthUnit": "INCHES",
  "restockingFeeDefinedAsPercentage": false,
  "defaultRefundFee": Decimal,
  "defaultExchangeFee": Decimal,
  "defaultStoreCreditFee": Decimal,
  "currency": "abc123",
  "internationalCustomsContentValueSource": "SELL_PRICE",
  "intlCommercialInvoiceAttachment": "DISABLED",
  "klaviyoApiKey": "abc123",
  "gorgiasSubdomain": "abc123",
  "useApprovals": true,
  "requireApprovalForAllReturns": false,
  "useShopAddressForPosReturns": false,
  "useBillingAddressFallback": true,
  "allowGiftReturns": true,
  "giftReturnsExchangeEnabled": true,
  "giftReturnsStoreCreditEnabled": false,
  "preventReturnsFromDifferentFulfillments": true,
  "delayedShopifyReturnCreationEnabled": false,
  "createReturnOnResolve": true,
  "returnTypeComparisonFlowEnabled": false,
  "isRefundIntegrationEnabled": true,
  "isRestockIntegrationEnabled": true,
  "returnItemExpirationDays": 987,
  "isReturnItemExpirationEnabled": true,
  "returnItemExpirationEnabledAt": "2007-12-03T10:15:30Z",
  "expirationPreventionAction": "RETURN_PROCESSED",
  "expirationPeriodType": "RETURN_CREATED_DATE",
  "isExchangeIntegrationEnabled": false,
  "exchangeMethod": "COMMENTS",
  "isInlineExchangeEnabled": false,
  "isFullCatalogExchangeEnabled": false,
  "useConsolidatedOrderExchanges": true,
  "discountSameProductExchangesToBeEqual": false,
  "exchangeNormalizeCrossProductEqualPrices": false,
  "isExchangeDifferentialPricingEnabled": true,
  "exchangeRoundToZeroIfLteTo": Decimal,
  "exchangeDaysToReserveStock": 987,
  "allowOutOfStockExchanges": false,
  "exchangeCheckInventoryAtFulfillmentLocation": false,
  "carryDiscountForwardType": "NONE",
  "useExchangeShipmentOrders": true,
  "exchangeShipmentOrderSuffix": "xyz789",
  "exchangeShippingLineTitle": "abc123",
  "autoProcessExchangesOnCreation": false,
  "isStoreCreditIntegrationEnabled": true,
  "isStoreCreditIncentiveEnabled": true,
  "storeCreditIncentivePercentage": 987.65,
  "minStoreCreditIncentiveAmount": Decimal,
  "maxStoreCreditIncentiveAmount": Decimal,
  "isStoreCreditIncentiveRoundToNearest": false,
  "resolvePartialExchangeRefundsToStoreCredit": true,
  "storeCreditExpireDays": 987,
  "giftCardPrefix": "abc123",
  "id": 4,
  "useNewAnalyticsUi": true,
  "useAsyncReturnProcessing": false,
  "parentUrl": "xyz789",
  "shopifyAdminUrl": "abc123",
  "primaryFieldBehavior": "EMAIL_ADDRESS",
  "secondaryFieldBehavior": "SHOPIFY_ORDER_NUMBER",
  "reauthenticateUrl": "abc123",
  "hasTestModeReturns": false,
  "hasReturnWithdrawals": true,
  "defaultPortalUrl": "abc123",
  "adminAppUrl": "abc123",
  "enableRefund": true,
  "refundDays": 123,
  "refundDaysType": "SINCE_DELIVERY",
  "refundCommentsEnabled": false,
  "refundCommentsRequired": false,
  "refundRequireDeliveryBeforeReturn": false,
  "enableExchange": false,
  "exchangeDays": 987,
  "exchangeDaysType": "SINCE_DELIVERY",
  "exchangeCommentsEnabled": false,
  "exchangeCommentsRequired": false,
  "exchangeRequireDeliveryBeforeReturn": true,
  "exchangeExcludeTags": ["abc123"],
  "enableStoreCredit": false,
  "storeCreditDays": 987,
  "storeCreditDaysType": "SINCE_DELIVERY",
  "storeCreditCommentsEnabled": true,
  "storeCreditCommentsRequired": false,
  "storeCreditRequireDeliveryBeforeReturn": false,
  "automatedStoreCreditType": "DISCOUNT_CODE",
  "notificationEmailAddress": "xyz789",
  "notificationEmailAttachRma": true,
  "customerEmailDisplayFromName": "xyz789",
  "customerEmailReplyToAddress": "xyz789",
  "defaultAddress": Address,
  "defaultWeight": Decimal,
  "defaultWeightUnit": "abc123",
  "international": true,
  "internationalOriginCountry": "abc123",
  "internationalCustomsSigner": "xyz789",
  "internationalNonDeliveryOption": "xyz789",
  "internationalExemptionCode": "abc123",
  "internationalDefaultHarmonizedSystemCode": "xyz789",
  "shippoApiKey": "abc123",
  "stripePublishableKey": "abc123",
  "stripeSecretKey": "xyz789",
  "subscriptionPlan": ShopSubscriptionPlan,
  "features": ["abc123"],
  "installedAt": "2007-12-03T10:15:30Z",
  "returnReasons": [ReturnReason],
  "stages": [Stage],
  "notifications": [Notification],
  "rules": [Rule],
  "packages": [PackageType],
  "dynamicTranslations": [DynamicTranslation],
  "returnIntegration": true,
  "missingScopes": ["xyz789"],
  "returnProtectionMissingScopes": [
    "xyz789"
  ],
  "sendcloudAccounts": [SendcloudAccount],
  "shopifyLocations": [ShopifyLocation],
  "easyPostAccount": EasyPostAccountType,
  "shippoAccount": ShippoAccountType,
  "shipstationAccount": ShipStationAccountType,
  "zendeskAccount": ZendeskAccountType,
  "refField1Source": "BLANK",
  "refField2Source": "BLANK",
  "storeCreditIncentiveType": "ONCE_PER_ITEM",
  "restockingFeeType": "ONCE_PER_RETURN",
  "webhookUrl": "abc123",
  "webhookEvents": ["RETURN_CREATED"],
  "questions": [Question],
  "stageShipmentStatuses": [StageShipmentStatusType],
  "defaultWarehouseForPosReturns": "4",
  "defaultRestockLocationId": "abc123",
  "portalConfig": PortalConfigType,
  "authorizationPdfLogo": Image,
  "hasLabelIntegration": false,
  "canUseStoreShippingMode": true,
  "autoRechargeStatus": "HEALTHY",
  "featureFlags": [GrapheneFeatureFlagValue],
  "configurationGoals": ConfigurationGoals,
  "logo": "abc123",
  "logoUploadUrl": SignedUrl,
  "easypostApiKey": "xyz789",
  "onboardingComplete": true,
  "installDate": "2007-12-03T10:15:30Z",
  "exchangeIntegration": false,
  "storeCreditIntegration": true
}

AutoRechargeStatus

Values
Enum Value Description

HEALTHY

DEGRADED

EXHAUSTED

Example
"HEALTHY"

AutomatedStoreCreditType

Description

An enumeration.

Values
Enum Value Description

DISCOUNT_CODE

GIFT_CARD_API

SHOPIFY_ACCOUNT_CREDIT

Example
"DISCOUNT_CODE"

BarcodeValue

Description

An enumeration.

Values
Enum Value Description

NONE

SHOPIFY_ORDER_NUMBER

SHOPIFY_ORDER_ID

RMA_NUMBER

Example
"NONE"

BillingManagedBy

Values
Enum Value Description

SELF

PARENT_SHOP

EXTERNAL_AFFILIATE

Example
"SELF"

BillingPeriodType

Fields
Field Name Description
id - UUID!
startDate - Date!
endDate - Date!
totalReturns - Int!
totalLabels - Int! Number of labels generated this period
totalLabelFeeAmountDue - Decimal!
totalOverageAmountDue - Decimal!
usageOverageQuantity - Int!
usageAmountCharged - Decimal
usageDescription - String
usageChargeId - String!
usageChargedAt - DateTime
returnProtectionFeeAmountDue - Decimal
returnProtectionFeeCharged - Decimal
billingPeriodClosedAt - DateTime
tierCountWhenClosed - Int
overagePriceWhenClosed - Decimal
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "startDate": "2007-12-03",
  "endDate": "2007-12-03",
  "totalReturns": 123,
  "totalLabels": 987,
  "totalLabelFeeAmountDue": Decimal,
  "totalOverageAmountDue": Decimal,
  "usageOverageQuantity": 987,
  "usageAmountCharged": Decimal,
  "usageDescription": "xyz789",
  "usageChargeId": "abc123",
  "usageChargedAt": "2007-12-03T10:15:30Z",
  "returnProtectionFeeAmountDue": Decimal,
  "returnProtectionFeeCharged": Decimal,
  "billingPeriodClosedAt": "2007-12-03T10:15:30Z",
  "tierCountWhenClosed": 987,
  "overagePriceWhenClosed": Decimal
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

CarryDiscountForwardType

Description

An enumeration.

Values
Enum Value Description

NONE

FIXED_DISCOUNT

PERCENTAGE_DISCOUNT

Example
"NONE"

CommercialInvoiceAttachment

Description

An enumeration.

Values
Enum Value Description

DISABLED

ALWAYS

ONLY_IF_NOT_SUBMITTED_ELECTRONICALLY

Example
"DISABLED"

Condition

Fields
Field Name Description
id - ID!
uuid - String!
attr - RuleAttribute!
op - RuleOperator!
value - String!
windowDays - Int Rolling window in days for counting attributes; null means all time.
questionId - ID Use question instead.
questionChoiceIds - [ID] Use question_choices instead.
question - ID
questionType - QuestionType
questionChoices - [ID]
Example
{
  "id": 4,
  "uuid": "xyz789",
  "attr": "NONE",
  "op": "EQ",
  "value": "abc123",
  "windowDays": 987,
  "questionId": "4",
  "questionChoiceIds": [4],
  "question": 4,
  "questionType": "LONG_TEXT",
  "questionChoices": [4]
}

ConditionGroupGraphQL

Fields
Field Name Description
id - ID!
when - RuleWhen!
conditions - [Condition!]!
matchAllItems - Boolean!
Example
{
  "id": "4",
  "when": "AND",
  "conditions": [Condition],
  "matchAllItems": true
}

ConfigurationGoals

Fields
Field Name Description
eligible - Boolean!
returnFlow - Boolean!
shipping - Boolean!
rules - Boolean!
portalBranding - Boolean!
testReturn - Boolean!
canClaim - Boolean!
ended - Boolean!
creditCurrency - String!
Example
{
  "eligible": false,
  "returnFlow": true,
  "shipping": false,
  "rules": false,
  "portalBranding": true,
  "testReturn": true,
  "canClaim": false,
  "ended": false,
  "creditCurrency": "xyz789"
}

CreateOrUpdateQuestion

Fields
Field Name Description
question - Question
Example
{"question": Question}

CreateReturnStoreCreditMutation

Fields
Field Name Description
error - String
errorText - String
caveatError - String Locale key for a step that failed after Shopify already accepted part of the credit
caveatErrorContext - JSONString Values for the caveat_error message
return - Return
storeCredit - StoreCreditType
Example
{
  "error": "abc123",
  "errorText": "abc123",
  "caveatError": "abc123",
  "caveatErrorContext": JSONString,
  "return": Return,
  "storeCredit": StoreCreditType
}

CustomQuote

Fields
Field Name Description
id - Int!
subscriptionType - SubscriptionType!
tierCount - Int!
monthlyPrice - Decimal!
overagePrice - Decimal!
cappedAmount - Decimal Custom cap for usage charges. If unset, uses standard formula: overage_price * tier_count * 100.
acceptedAt - DateTime
supersededAt - DateTime
name - String!
features - [SubscriptionFeature]!
subscribeUrl - String!
Example
{
  "id": 987,
  "subscriptionType": "FREE",
  "tierCount": 987,
  "monthlyPrice": Decimal,
  "overagePrice": Decimal,
  "cappedAmount": Decimal,
  "acceptedAt": "2007-12-03T10:15:30Z",
  "supersededAt": "2007-12-03T10:15:30Z",
  "name": "xyz789",
  "features": ["ADJUST_RETURN_WINDOWS"],
  "subscribeUrl": "abc123"
}

CustomerPaidShippingMode

Description

An enumeration.

Values
Enum Value Description

RETURNZAP

STORE

Example
"RETURNZAP"

CustomsContentValueSource

Description

An enumeration.

Values
Enum Value Description

SELL_PRICE

COGS

MINIMUM_VALUE

Example
"SELL_PRICE"

DashboardResponse

Fields
Field Name Description
id - ID
returns - [Return]!
totalCount - Int
Example
{"id": 4, "returns": [Return], "totalCount": 123}

Date

Description

The Date scalar type represents a Date value as specified by iso8601.

Example
"2007-12-03"

DateFilterRange

Fields
Input Field Description
since - String If null, date filter is ignored
startDate - Date
endDate - Date
Example
{
  "since": "abc123",
  "startDate": "2007-12-03",
  "endDate": "2007-12-03"
}

DateTime

Description

The DateTime scalar type represents a DateTime value as specified by iso8601.

Example
"2007-12-03T10:15:30Z"

DaysType

Description

An enumeration.

Values
Enum Value Description

SINCE_DELIVERY

SINCE_ORDER

SINCE_FULFILLMENT

Example
"SINCE_DELIVERY"

Decimal

Description

The Decimal scalar type represents a python Decimal.

Example
Decimal

DeleteQuestion

Fields
Field Name Description
success - Boolean
Example
{"success": false}

DeleteTaxNumbers

Fields
Field Name Description
errors - [GQLErrorType]
Example
{"errors": [GQLErrorType]}

DisposeReturn

Fields
Field Name Description
error - String
return - Return
Example
{
  "error": "abc123",
  "return": Return
}

DisposeReturnItemMediaInput

Fields
Input Field Description
returnItemId - ID!
media - [WarehouseMediaInput!]
note - WarehouseNoteInput
Example
{
  "returnItemId": 4,
  "media": [WarehouseMediaInput],
  "note": WarehouseNoteInput
}

DispositionAction

Description

An enumeration.

Values
Enum Value Description

RESTOCK

RECYCLE

DESTROY

DONATE

LIQUIDATE

REFURBISH

RESELL

Example
"RESTOCK"

DispositionType

Description

An enumeration.

Values
Enum Value Description

MISSING

PROCESSING_REQUIRED

NOT_RESTOCKED

RESTOCKED

Example
"MISSING"

DraftReturnState

Description

An enumeration.

Values
Enum Value Description

CREATED

AWAITING_BALANCE_PAYMENT

AWAITING_LABEL_PAYMENT

BALANCE_PAID

LABEL_PAYMENT_RECEIVED

LABEL_FINALIZING

LABEL_PURCHASED

RMA_GENERATED

ACTIVATED

LABEL_PURCHASE_ERROR

LABEL_PAYMENT_ERROR

BALANCE_PAYMENT_SETUP_ERROR

Example
"CREATED"

DynamicTranslation

Fields
Field Name Description
uuid - ID
model - TranslatedModel
field - String
objUuid - String
key - String Unused. Will be removed after 2026-04-01.
language - String
message - String
Example
{
  "uuid": 4,
  "model": "RETURN_REASON",
  "field": "xyz789",
  "objUuid": "abc123",
  "key": "abc123",
  "language": "abc123",
  "message": "xyz789"
}

EasyPostAccountCarrierServiceType

Fields
Field Name Description
id - UUID!
carrier - EasyPostCarrierType!
code - String! Service code (name) from EasyPost API (e.g., 'Ground', 'Overnight')
name - String! Human-readable service name
description - String! Human-readable service description
isActive - Boolean! Whether this service is active and available for use
alwaysDisplay - Boolean! Always return this service rates despite cut off setting
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "carrier": EasyPostCarrierType,
  "code": "abc123",
  "name": "xyz789",
  "description": "xyz789",
  "isActive": true,
  "alwaysDisplay": false
}

EasyPostAccountType

Fields
Field Name Description
id - ID!
shop - AuthenticatedShop!
managedByReturnzap - Boolean!
apiKey - String!
useIsReturn - Boolean! Sends EasyPost's is_return flag and swaps the from/to addresses so EasyPost builds a return label. Turn OFF for cross-border lanes such as CA->US, where carriers reject the return flag.
originCountries - [String!]! 2-letter ISO 3166-1 alpha-2 country codes for origin countries. Empty means all countries.
destinationCountries - [String!]! 2-letter ISO 3166-1 alpha-2 country codes for destination countries. Empty means all countries.
services - String Use EasyPostAccountCarrierServiceType.is_active field instead.
carriers - [EasyPostCarrierType]
Example
{
  "id": "4",
  "shop": AuthenticatedShop,
  "managedByReturnzap": false,
  "apiKey": "abc123",
  "useIsReturn": true,
  "originCountries": ["xyz789"],
  "destinationCountries": ["abc123"],
  "services": "abc123",
  "carriers": [EasyPostCarrierType]
}

EasyPostCarrierType

Fields
Field Name Description
id - ID!
externalId - String!
easypostAccount - EasyPostAccountType
name - String!
active - Boolean!
services - [EasyPostAccountCarrierServiceType]
Example
{
  "id": 4,
  "externalId": "xyz789",
  "easypostAccount": EasyPostAccountType,
  "name": "xyz789",
  "active": false,
  "services": [EasyPostAccountCarrierServiceType]
}

ExchangeItem

Fields
Field Name Description
id - ID!
returnItem - ReturnItem Use returnItemId instead
variantId - String! The Shopify variant id for the item the customer wants to exchange
title - String! Exchange item title
sku - String! Exchange item sku
quantity - Int The quantity of the item to exchange
imageUrl - String! Exchange item image url
presentmentOriginalAmount - Decimal The variant unit amount without discounts applied in presentment currency
presentmentDiscountedAmount - Decimal Actual variant unit amount customer paid in presentment currency
returnItemPresentmentOriginalUnitAmount - Decimal The catalog price of the returned item at the time of purchasing in presentment currency
presentmentNormalizationAdjustmentAmount - Decimal Price normalization adjustment amount in presentment currency.
presentmentCurrency - String!
releasedAt - DateTime
removedAt - DateTime Date removed from consolidated order exchange
expiredAt - DateTime
returnItemId - String The id of the return item this is exchanging for
exchangeOrderId - String The id of the exchange order
variantList - [String]
returnItemIsMissing - Boolean Whether the return item is missing
returnItemIsRejected - Boolean Whether the return item is rejected
isResolved - Boolean Whether the exchange item has been resolved
status - ExchangeOrderStatus Status of the exchange order
draftOrderId - String The id of the draft order in Shopify
draftOrderNumber - String The number of the draft order in Shopify
draftOrderLink - String URL Link to the draft order in Shopify
completedOrderId - String The id of the completed order in Shopify
completedOrderNumber - String The number of the completed order in Shopify
completedOrderLink - String URL Link to the completed order in Shopify
consolidatedOrderLink - String URL Link to the original order in Shopify
statusLabel - String Status label for the exchange order Use status instead
completeOrderLink - String URL Link to the completed order in Shopify
exchangeVariantId - String The Shopify variant id for the item the customer wants to receive as replacement. Use variantId instead
Example
{
  "id": 4,
  "returnItem": ReturnItem,
  "variantId": "abc123",
  "title": "abc123",
  "sku": "xyz789",
  "quantity": 123,
  "imageUrl": "abc123",
  "presentmentOriginalAmount": Decimal,
  "presentmentDiscountedAmount": Decimal,
  "returnItemPresentmentOriginalUnitAmount": Decimal,
  "presentmentNormalizationAdjustmentAmount": Decimal,
  "presentmentCurrency": "abc123",
  "releasedAt": "2007-12-03T10:15:30Z",
  "removedAt": "2007-12-03T10:15:30Z",
  "expiredAt": "2007-12-03T10:15:30Z",
  "returnItemId": "xyz789",
  "exchangeOrderId": "abc123",
  "variantList": ["abc123"],
  "returnItemIsMissing": true,
  "returnItemIsRejected": false,
  "isResolved": false,
  "status": "DRAFT",
  "draftOrderId": "xyz789",
  "draftOrderNumber": "xyz789",
  "draftOrderLink": "xyz789",
  "completedOrderId": "abc123",
  "completedOrderNumber": "abc123",
  "completedOrderLink": "xyz789",
  "consolidatedOrderLink": "xyz789",
  "statusLabel": "abc123",
  "completeOrderLink": "abc123",
  "exchangeVariantId": "abc123"
}

ExchangeMethod

Description

An enumeration.

Values
Enum Value Description

COMMENTS

SIMPLE

ADVANCED

Example
"COMMENTS"

ExchangeOrder

Fields
Field Name Description
id - ID!
created - DateTime
consolidatedOrderExchange - Boolean! If True, the exchange order is part of a consolidated return. It uses the Shopify return integration instead of Draft order workflow
status - ExchangeOrderStatus Status of the exchange order
theReturn - Return
draftOrderId - String! The Shopify draft order id. Created when the customer requests an exchange
draftOrderNumber - String! The Shopify draft order number e.g #D66
shopifyExchangeShipmentOrderId - String! When we facilitate fulfillment with another order, this is the Shopify order id of that order
shopifyExchangeShipmentOrderName - String! ...and this is the Shopify order name of that order
completedOrderId - String! The Shopify completed order id. This is only set when the order is completed by the shop
completedOrderNumber - String! The Shopify completed order number e.g #1218
completedOrderAt - DateTime
invoiceSentAt - DateTime
exchangeItems - [ExchangeItem!]
statusLabel - String Status label for the exchange order
completeOrderLink - String URL Link to the completed order in Shopify
draftOrderLink - String URL Link to the draft order in Shopify
consolidatedOrderLink - String URL Link to the original order in Shopify
Example
{
  "id": 4,
  "created": "2007-12-03T10:15:30Z",
  "consolidatedOrderExchange": true,
  "status": "DRAFT",
  "theReturn": Return,
  "draftOrderId": "abc123",
  "draftOrderNumber": "abc123",
  "shopifyExchangeShipmentOrderId": "abc123",
  "shopifyExchangeShipmentOrderName": "abc123",
  "completedOrderId": "abc123",
  "completedOrderNumber": "abc123",
  "completedOrderAt": "2007-12-03T10:15:30Z",
  "invoiceSentAt": "2007-12-03T10:15:30Z",
  "exchangeItems": [ExchangeItem],
  "statusLabel": "xyz789",
  "completeOrderLink": "abc123",
  "draftOrderLink": "xyz789",
  "consolidatedOrderLink": "xyz789"
}

ExchangeOrderStatus

Description

An enumeration.

Values
Enum Value Description

DRAFT

COMPLETED

DELETED

Example
"DRAFT"

ExpirationPeriodType

Description

An enumeration.

Values
Enum Value Description

RETURN_CREATED_DATE

RETURN_WINDOW_CLOSES

Example
"RETURN_CREATED_DATE"

ExpirationPreventionAction

Description

An enumeration.

Values
Enum Value Description

RETURN_PROCESSED

RETURN_PROCESSED_OR_IN_TRANSIT

Example
"RETURN_PROCESSED"

FiltersInput

Fields
Input Field Description
query - String
stages - [Int]
status - ArchiveFilter
returnDate - DateFilterRange
orderDate - DateFilterRange
stageUpdatedDate - DateFilterRange
perPage - Int
currentPage - Int
sortBy - String
resolvedStatus - [ResolvedStatus]
returnItemTypes - [String]
processingStatus - [DraftReturnState]
warehouseIds - [Int]
requestType - [String]
Example
{
  "query": "xyz789",
  "stages": [987],
  "status": "ACTIVE",
  "returnDate": DateFilterRange,
  "orderDate": DateFilterRange,
  "stageUpdatedDate": DateFilterRange,
  "perPage": 987,
  "currentPage": 123,
  "sortBy": "abc123",
  "resolvedStatus": ["RESOLVED"],
  "returnItemTypes": ["xyz789"],
  "processingStatus": ["CREATED"],
  "warehouseIds": [987],
  "requestType": ["xyz789"]
}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

GQLErrorEnum

Description

Enum for all GQL errors Important: Prefix all errors with name of the integration (e.g. RZ_, SHOPIFY_, EASYPOST_, etc)

Values
Enum Value Description

RZ_RULES_ERROR

RZ_RETURN_ITEMS_MISSING

RZ_DUPLICATE_RMA_NUMBER

RZ_PRICE_CHECK_FAILED

RZ_PAYMENT_FAILED

RZ_ZAP_ORDER_NOT_FOUND

RZ_RANDOMNESS_ERROR

RZ_SHOP_NOT_FOUND

RZ_CONSOLIDATED_RETURN_ORDER_NOT_FOUND

RZ_RETURN_INTEGRATION_ERROR

RZ_RETURN_INTEGRATION_UNSUPPORTED_ERROR

RZ_VALIDATION_ERROR

RZ_CALCULATE_RETURN_ERROR

RZ_BUY_LABEL_ERROR

RZ_COUNTRY_NOT_FOUND

RZ_LABEL_REIMBURSEMENT_ERROR

RZ_NO_RATES_FOUND

RZ_PRODUCT_NOT_FOUND

RZ_NO_VARIANTS_IN_PRICE_RANGE

RZ_EXCHANGE_VARIANT_NOT_FOUND

RZ_RETURN_NOT_FOUND

RZ_RETURN_NOT_PROCESSING

RZ_RETURN_INVALID_STATE

RZ_RETURN_PAYMENT_CLEANUP_FAILED

RZ_RETURN_INVALID_SHIPPING_METHOD

RZ_BALANCE_AUTHENTICATION_REQUIRED

RZ_BALANCE_INVALID_TOS_VERSION

RZ_BALANCE_INVALID_PAYMENT_METHOD

RZ_BALANCE_PAYMENT_METHOD_CANNOT_BE_CHARGED

RZ_BALANCE_NO_STRIPE_CUSTOMER

RZ_BALANCE_INVALID_CURRENCY

RZ_BALANCE_AUTO_RECHARGE_CONFIG_INCOMPLETE

RZ_BALANCE_CURRENCY_MISMATCH

RZ_BALANCE_AMOUNT_MUST_BE_POSITIVE

RZ_BALANCE_INSUFFICIENT_FUNDS

RZ_BALANCE_STRIPE_PAYMENT_METHOD_INVALID

RZ_BALANCE_STRIPE_CUSTOMER_INVALID

RZ_BALANCE_PAYMENT_METHOD_NOT_FOUND

RZ_BALANCE_PAYMENT_METHOD_ALREADY_EXISTS

RZ_BALANCE_FAILED_TO_CREATE_PAYMENT_METHOD

RZ_BALANCE_INACTIVE_PAYMENT_METHOD_CANNOT_BE_DEFAULT

SHOPIFY_ITEM_ALREADY_RETURNED

SENDCLOUD_LABEL_ERROR

EASYPOST_INSUFFICIENT_FUND

EASYPOST_BUY_LABEL_ERROR

SHIPPO_LABEL_ERROR

SHIPPO_TRANSACTION_STATUS_ERROR

SHIPSTATION_CREATE_SHIPMENT_LABEL_ERROR

SEKO_BUY_LABEL_ERROR

RZ_TOO_MANY_REQUESTS

UNKNOWN_ERROR

Example
"RZ_RULES_ERROR"

GQLErrorType

Fields
Field Name Description
errorCode - GQLErrorEnum The code for the error
message - String Human readable textual error representation (do not use for machine logic)
traceId - String Trace ID for the error, you can share this with the ReturnZap customer support
debugTrace - String Debug information for the error We don't send backend debug info to frontend.
Example
{
  "errorCode": "RZ_RULES_ERROR",
  "message": "abc123",
  "traceId": "abc123",
  "debugTrace": "abc123"
}

GeneratePortalImageUploadURL

Fields
Field Name Description
errors - [GQLErrorType]
uploadUrl - SignedUrl
imagePath - String
Example
{
  "errors": [GQLErrorType],
  "uploadUrl": SignedUrl,
  "imagePath": "xyz789"
}

GenerateShippingLabelUploadURL

Fields
Field Name Description
error - String
url - SignedUrl
Example
{
  "error": "abc123",
  "url": SignedUrl
}

GrapheneFeatureFlagValue

Fields
Field Name Description
key - String!
enabled - Boolean!
Example
{"key": "xyz789", "enabled": false}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Image

Fields
Field Name Description
id - ID
url - String!
width - Int
height - Int
altText - String
maxWidth - Int
Example
{
  "id": "4",
  "url": "xyz789",
  "width": 987,
  "height": 987,
  "altText": "abc123",
  "maxWidth": 987
}

ImageUploadsSetting

Description

An enumeration.

Values
Enum Value Description

DISABLE_IMAGE_UPLOAD

OPTIONAL_IMAGE_UPLOAD

REQUIRE_IMAGE_UPLOAD

Example
"DISABLE_IMAGE_UPLOAD"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

ItemCondition

Description

An enumeration.

Values
Enum Value Description

GRADE_A

GRADE_B

GRADE_C

Example
"GRADE_A"

JSONString

Description

Allows use of a JSON String for input / output from the GraphQL schema.

Use of this type is not recommended as you lose the benefits of having a defined, static schema (one of the key benefits of GraphQL).

Example
JSONString

LengthUnit

Description

An enumeration.

Values
Enum Value Description

INCHES

CENTIMETERS

Example
"INCHES"

Money

Fields
Field Name Description
amount - Decimal!
currencyCode - String!
Example
{
  "amount": Decimal,
  "currencyCode": "xyz789"
}

MoneySet

Fields
Field Name Description
presentmentMoney - Money!
shopMoney - Money!
Example
{
  "presentmentMoney": Money,
  "shopMoney": Money
}

Notification

Fields
Field Name Description
id - ID!
emailSubject - String!
emailContent - String!
shouldAttachRmaForm - Boolean!
isActive - Boolean!
event - NotificationEvent!
uuid - ID!
stage - Stage
Example
{
  "id": "4",
  "emailSubject": "abc123",
  "emailContent": "abc123",
  "shouldAttachRmaForm": false,
  "isActive": true,
  "event": "STAGE_ENTRY",
  "uuid": "4",
  "stage": Stage
}

NotificationEvent

Description

An enumeration.

Values
Enum Value Description

STAGE_ENTRY

QR_CODE_CREATED

RETURN_RESOLVED_REFUNDED

RETURN_RESOLVED_EXCHANGED

RETURN_RESOLVED_CREDITED

RETURN_CREATED_NO_SHIPPING_REQUIRED

RETURN_EXPIRED

WITHDRAWAL_RECEIVED_PRE_FULFILLMENT

WITHDRAWAL_RECEIVED_POST_FULFILLMENT

WITHDRAWAL_RECEIVED_MANUAL

Example
"STAGE_ENTRY"

PackageType

Fields
Field Name Description
id - ID!
name - String!
type - String!
length - Decimal
width - Decimal
height - Decimal
unit - ShopsPackageUnitChoices!
weight - Decimal
weightUnit - ShopsPackageWeightUnitChoices!
uuid - ID
Example
{
  "id": 4,
  "name": "xyz789",
  "type": "abc123",
  "length": Decimal,
  "width": Decimal,
  "height": Decimal,
  "unit": "IN",
  "weight": Decimal,
  "weightUnit": "GRAMS",
  "uuid": 4
}

PaymentMethodType

Description

An enumeration.

Values
Enum Value Description

CARD

US_BANK_ACCOUNT

ACSS_DEBIT

AFFIRM

AFTERPAY_CLEARPAY

ALIPAY

ALMA

AMAZON_PAY

AU_BECS_DEBIT

BACS_DEBIT

BANCONTACT

BILLIE

BLIK

BOLETO

CARD_PRESENT

CASHAPP

CRYPTO

CUSTOMER_BALANCE

EPS

FPX

GIROPAY

GRABPAY

IDEAL

INTERAC_PRESENT

KAKAO_PAY

KLARNA

KONBINI

KR_CARD

LINK

MOBILEPAY

MULTIBANCO

NAVER_PAY

NZ_BANK_ACCOUNT

OXXO

P24

PAY_BY_BANK

PAYCO

PAYNOW

PAYPAL

PAYPAY

PIX

PROMPTPAY

REVOLUT_PAY

SAMSUNG_PAY

SATISPAY

SEPA_DEBIT

SOFORT

SWISH

TWINT

WECHAT_PAY

ZIP

Example
"CARD"

PaymentSetupStatus

Description

An enumeration.

Values
Enum Value Description

PENDING

REQUIRES_PAYMENT_METHOD

REQUIRES_CONFIRMATION

REQUIRES_ACTION

PROCESSING

CANCELED

SUCCEEDED

Example
"PENDING"

PendingLabelRate

Fields
Field Name Description
carrierName - String
serviceName - String
amount - Decimal
currency - String
Example
{
  "carrierName": "abc123",
  "serviceName": "abc123",
  "amount": Decimal,
  "currency": "xyz789"
}

PortalConfigType

Description

Portal configuration for a shop, accessible to both public and authenticated users.

Fields
Field Name Description
id - UUID!
lookupSideImageSameWidthAsLookupForm - Boolean! Make the side image have the same width as the lookup form
uuid - ID! Unused. Will be removed after 2026-04-01.
logo - Image
logoDark - Image
lookupSideImage - Image
lookupSideImageDark - Image
logoUploadUrl - SignedUrl Unused on portal. Will be removed after 2026-04-01.
Arguments
filename - String!
logoDarkUploadUrl - SignedUrl Unused on portal. Will be removed after 2026-04-01.
Arguments
filename - String!
lookupSideImageUploadUrl - SignedUrl Unused on portal. Will be removed after 2026-04-01.
Arguments
filename - String!
lookupSideImageDarkUploadUrl - SignedUrl Unused on portal. Will be removed after 2026-04-01.
Arguments
filename - String!
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "lookupSideImageSameWidthAsLookupForm": false,
  "uuid": 4,
  "logo": Image,
  "logoDark": Image,
  "lookupSideImage": Image,
  "lookupSideImageDark": Image,
  "logoUploadUrl": SignedUrl,
  "logoDarkUploadUrl": SignedUrl,
  "lookupSideImageUploadUrl": SignedUrl,
  "lookupSideImageDarkUploadUrl": SignedUrl
}

PortalExchangeSelectionMethod

Description

An enumeration.

Values
Enum Value Description

SEARCH

VISUAL

SEARCH_AND_VISUAL

Example
"SEARCH"

PortalVisualExchangeType

Description

An enumeration.

Values
Enum Value Description

NONE

SAME_COLLECTIONS

SAME_TAGS

SPECIFIC_COLLECTIONS

SAME_PRODUCT_TYPE

Example
"NONE"

PrimaryFieldBehavior

Description

An enumeration.

Values
Enum Value Description

EMAIL_ADDRESS

EMAIL_OR_PHONE

SHOPIFY_ORDER_NUMBER

Example
"EMAIL_ADDRESS"

ProcessingStatusAction

Description

An enumeration.

Values
Enum Value Description

DISCARD

CONVERT_SHIPPING

RETRY

WAIVE_BALANCE

RESEND_BALANCE_INVOICE

POST_ACTIVATION_ACTIONS

Example
"DISCARD"

PutTaxNumbers

Fields
Field Name Description
errors - [GQLErrorType]
taxNumbers - [TaxNumberOutput]
Example
{
  "errors": [GQLErrorType],
  "taxNumbers": [TaxNumberOutput]
}

Question

Fields
Field Name Description
id - UUID!
questionType - QuestionType
order - Int!
text - String!
isRequired - Boolean!
flow - QuestionFlow
dependentOnReturnReason - Boolean! Only show after a return reason is selected
dependentOnQuestion - Question
choices - [QuestionChoice]
dependentOnReturnReasons - [ReturnReason]
dependentOnQuestionChoices - [QuestionChoice]
isActive - Boolean
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "questionType": "LONG_TEXT",
  "order": 123,
  "text": "abc123",
  "isRequired": false,
  "flow": "STANDARD",
  "dependentOnReturnReason": true,
  "dependentOnQuestion": Question,
  "choices": [QuestionChoice],
  "dependentOnReturnReasons": [ReturnReason],
  "dependentOnQuestionChoices": [QuestionChoice],
  "isActive": false
}

QuestionChoice

Fields
Field Name Description
id - UUID!
question - Question!
order - Int!
text - String!
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "question": Question,
  "order": 987,
  "text": "xyz789"
}

QuestionChoiceInput

Fields
Input Field Description
id - ID
order - Int!
text - String!
Example
{"id": 4, "order": 123, "text": "abc123"}

QuestionFlow

Values
Enum Value Description

STANDARD

WITHDRAWAL

Example
"STANDARD"

QuestionInput

Fields
Input Field Description
id - ID
order - Int!
questionType - QuestionType!
text - String!
isRequired - Boolean!
flow - QuestionFlow
isActive - Boolean!
deleted - Boolean
choices - [QuestionChoiceInput]
dependentOnReturnReasons - [ID]
dependentOnQuestion - ID
dependentOnQuestionChoices - [ID]
Example
{
  "id": 4,
  "order": 123,
  "questionType": "LONG_TEXT",
  "text": "xyz789",
  "isRequired": true,
  "flow": "STANDARD",
  "isActive": true,
  "deleted": true,
  "choices": [QuestionChoiceInput],
  "dependentOnReturnReasons": ["4"],
  "dependentOnQuestion": "4",
  "dependentOnQuestionChoices": [4]
}

QuestionType

Values
Enum Value Description

LONG_TEXT

CHOICE

FILE_UPLOAD

SHORT_TEXT

NUMBER

DATE

BOOLEAN

DISPLAY_CUSTOM_MESSAGE

Example
"LONG_TEXT"

Receipt

Fields
Field Name Description
id - ID!
actorDisplayName - String!
status - WmsReceiptStatusChoices!
recordedAt - DateTime! When this record was recorded
finalizedAt - DateTime
items - [ReceiptItem!]!
evidence - [WarehouseEvidence!]!
receivedAfterSettlement - Boolean!
Example
{
  "id": "4",
  "actorDisplayName": "abc123",
  "status": "DRAFT",
  "recordedAt": "2007-12-03T10:15:30Z",
  "finalizedAt": "2007-12-03T10:15:30Z",
  "items": [ReceiptItem],
  "evidence": [WarehouseEvidence],
  "receivedAfterSettlement": false
}

ReceiptItem

Fields
Field Name Description
id - ID!
receivedQuantity - Int!
acceptedQuantity - Int!
rejectedQuantity - Int!
status - WmsReceiptItemStatusChoices!
inspectionGrade - WmsReceiptItemInspectionGradeChoices
recommendedDisposition - WmsReceiptItemRecommendedDispositionChoices
damageSource - WmsReceiptItemDamageSourceChoices
productTitle - String
evidence - [WarehouseEvidence!]!
Example
{
  "id": "4",
  "receivedQuantity": 987,
  "acceptedQuantity": 987,
  "rejectedQuantity": 987,
  "status": "RECEIVED",
  "inspectionGrade": "A",
  "recommendedDisposition": "RESTOCK",
  "damageSource": "IN_TRANSIT",
  "productTitle": "xyz789",
  "evidence": [WarehouseEvidence]
}

ReceivedReturn

Fields
Field Name Description
error - String
return - Return
Example
{
  "error": "abc123",
  "return": Return
}

ReceivedReturnItemInput

Fields
Input Field Description
returnItemId - ID!
receivingStatus - ReceivingStatus!
condition - ItemCondition
rejectionReason - RejectionReason
media - [WarehouseMediaInput!]
note - WarehouseNoteInput
Example
{
  "returnItemId": "4",
  "receivingStatus": "RECEIVED",
  "condition": "GRADE_A",
  "rejectionReason": "WAREHOUSE_REJECTED",
  "media": [WarehouseMediaInput],
  "note": WarehouseNoteInput
}

ReceivingStatus

Description

An enumeration.

Values
Enum Value Description

RECEIVED

MISSING

REJECTED

Example
"RECEIVED"

RefFieldSource

Description

An enumeration.

Values
Enum Value Description

BLANK

RMA_NUMBER

ORDER_NUMBER

ORDER_ID

Example
"BLANK"

RefundReturn

Fields
Field Name Description
error - String
return - Return
refund - RefundType
Example
{
  "error": "abc123",
  "return": Return,
  "refund": RefundType
}

RefundType

Fields
Field Name Description
shopifyRefundId - String! Shopify's id for the refund.
requestedTotalRefundAmount - Decimal Presentment amount ReturnZap asked Shopify to refund — the refundFullAmount passed to returnRefund. Known as soon as the refund is created.
requestedCurrencyCode - String! Presentment currency of requestedTotalRefundAmount.
presentmentTotalAmountRefunded - Decimal Net cash Shopify refunded, in presentment currency. Populated asynchronously from Shopify and can read 0.00 on a completed refund until the transactions settle; a nightly backfill heals it. Use requestedTotalRefundAmount for the amount just requested.
presentmentCurrencyCode - String! Currency the customer paid in, as reported by Shopify.
presentmentSubtotalRefundAmount - Decimal Line-item subtotal refunded, excluding tax and shipping, in presentment currency.
presentmentTaxRefundAmount - Decimal Line-item tax refunded, in presentment currency.
presentmentShippingSubtotalRefundAmount - Decimal Shipping refunded, excluding tax, in presentment currency.
presentmentShippingTaxRefundAmount - Decimal Shipping tax refunded, in presentment currency.
shopTotalAmountRefunded - Decimal Net cash Shopify refunded, converted to the shop's own currency. Same asynchronous population as presentmentTotalAmountRefunded. Use this only to aggregate across orders.
shopRefundCurrencyCode - String! The shop's own currency.
shopSubtotalRefundAmount - Decimal Line-item subtotal refunded, excluding tax and shipping, in shop currency.
shopTaxRefundAmount - Decimal Line-item tax refunded, in shop currency.
shopShippingSubtotalRefundAmount - Decimal Shipping refunded, excluding tax, in shop currency.
shopShippingTaxRefundAmount - Decimal Shipping tax refunded, in shop currency.
currencyCode - String Use presentmentCurrencyCode instead
totalAmountRefunded - Decimal Use presentmentTotalAmountRefunded instead
Example
{
  "shopifyRefundId": "abc123",
  "requestedTotalRefundAmount": Decimal,
  "requestedCurrencyCode": "xyz789",
  "presentmentTotalAmountRefunded": Decimal,
  "presentmentCurrencyCode": "abc123",
  "presentmentSubtotalRefundAmount": Decimal,
  "presentmentTaxRefundAmount": Decimal,
  "presentmentShippingSubtotalRefundAmount": Decimal,
  "presentmentShippingTaxRefundAmount": Decimal,
  "shopTotalAmountRefunded": Decimal,
  "shopRefundCurrencyCode": "abc123",
  "shopSubtotalRefundAmount": Decimal,
  "shopTaxRefundAmount": Decimal,
  "shopShippingSubtotalRefundAmount": Decimal,
  "shopShippingTaxRefundAmount": Decimal,
  "currencyCode": "abc123",
  "totalAmountRefunded": Decimal
}

RejectReturn

Fields
Field Name Description
error - String
return - Return
Example
{
  "error": "abc123",
  "return": Return
}

RejectionReason

Description

An enumeration.

Values
Enum Value Description

WAREHOUSE_REJECTED

NOT_IN_ORIGINAL_CONDITION

ITEM_DAMAGED_OR_WORN

MISSING_COMPONENTS

WRONG_ITEM_RETURNED

RETURN_WINDOW_EXPIRED

SIGNS_OF_USE

OTHER

Example
"WAREHOUSE_REJECTED"

ReleaseExchangeItemsMutation

Fields
Field Name Description
errors - [String]
caveats - [String]
exchangeOrders - [ExchangeOrder] Use exchange_items instead
exchangeItems - [ExchangeItem]
return_ - Return
Example
{
  "errors": ["abc123"],
  "caveats": ["abc123"],
  "exchangeOrders": [ExchangeOrder],
  "exchangeItems": [ExchangeItem],
  "return_": Return
}

ResolutionStatus

Description

An enumeration.

Values
Enum Value Description

AUTO

EXCHANGED

EXPIRED

MANUALLY

MISSING

REFUNDED

REJECTED

STORE_CREDIT

Example
"AUTO"

ResolvedStatus

Description

An enumeration.

Values
Enum Value Description

RESOLVED

UNRESOLVED

PARTIALLY_RESOLVED

Example
"RESOLVED"

RestockingFeeType

Description

An enumeration.

Values
Enum Value Description

ONCE_PER_RETURN

ONCE_PER_ITEM

Example
"ONCE_PER_RETURN"

Return

Fields
Field Name Description
id - ID!
uuid - String!
adminReturn - Boolean!
testMode - Boolean!
returnIntegration - Boolean!
usesConsolidatedOrderExchanges - Boolean True if there's at least one exchange that uses consolidated order exchanges.
traceId - String
draftProcessingState - DraftReturnState
customerFirstName - String!
customerLastName - String!
customerEmail - String!
rmaNumber - String!
stageLabel - String!
stageUpdatedDate - DateTime
approvalRequired - Boolean
approvedAt - DateTime
rejectedAt - DateTime
rejectionReason - String
notes - String
allowResubmission - Boolean When True, this return's items are excluded from returnable quantity enforcement in the portal.
receivedAt - DateTime
financialTerminalAt - DateTime
isArchived - Boolean
expiredAt - DateTime
shippingMethod - ShippingMethod
giftReturn - Boolean
giftReturnEmailAddress - String
trackingNumber - String!
deliveryDate - DateTime
deliveryStatus - String!
labelCurrency - String!
shopCurrency - String!
noShippingRequired - Boolean!
feesSentThroughReturnIntegration - Boolean! In issue #1545 we started sending shipping and restocking fees to Shopify when creating a return.
defaultRefundFee - Decimal
defaultStoreCreditFee - Decimal
originalHandlingFeeCharged - Decimal The handling fee charged to the customer when the return was created
actualHandlingFeeCharged - Decimal The handling fee actually charged to the customer through ReturnZap resolutions
restockingFeeType - RestockingFeeType
originalRestockingFeeCharged - Decimal The restocking fee charged to the customer when the return was created
actualRestockingFeeCharged - Decimal The restocking fee actually charged to the customer through ReturnZap resolutions
shopifyReturnId - String
shopifyReturnName - String!
shopifyReturnSyncError - ReturnSyncError
shopifyOrderId - String!
shopifyOrderDate - DateTime
exchangeBalanceDue - Decimal The balance due for the exchange
exchangeBalancePaidAt - DateTime
estimatedBalance - Decimal The estimated amount show to the customer in the portal. If positive, the shop owes the customer this amount. If negative, the customer owes the shop this amount. Added in 2025-04 and not backfilled.
isDraft - Boolean!
shopifyOrderNumber - String!
shopifyOrderUrl - String!
shopifyCustomerUrl - String!
customerAddress - ReturnAddressType
destinationAddress - ReturnAddressType
giftReturnAddress - ReturnAddressType
rmaFormUrl - String
stageId - ID
systemStage - Int
statusId - String
statusLabel - String
labelUrl - String
qrCodeUrl - String
qrCodeDownloadUrl - String
returnStatusPageUrl - String
labelCost - Decimal
totalWeightGrams - Decimal
createdAt - DateTime
refunds - [RefundType]
logs - [ReturnLog!]!
next - String Use nextReturn instead
previous - String Use previousReturn instead
nextReturn - Return
previousReturn - Return
exchangeOrders - [ExchangeOrder!]
shipment - Shipment
appliedRules - [String] Use appliedRulesDetailed instead for structured rule data
appliedRulesDetailed - [AppliedRuleType]
suggestionRefund - SuggestionRefundType Use suggestedRefund instead
Arguments
returnItemIds - [ID]!
refundShipping - Boolean
suggestedRefund - SuggestedRefundType
Arguments
returnItemIds - [ID]!
refundShipping - Boolean
hasValidCustomerPaymentPending - Boolean
warehouseName - String
shippedTo - String Use warehouseName
warehouse - WarehouseType
storeCredits - [StoreCreditType]
externalShippingLabelUrl - String
items - [ReturnItem]
exchangeItems - [ExchangeItem]
handlingFeeCharged - Decimal Use (actual|original)_handling_fee_charged instead
restockingFeeCharged - Decimal Use (actual|original)_restocking_fee_charged instead
shopifyOrderFulfillments - [ShopifyFulfillmentType]
shopifyOrderTotalQuantityOrdered - Int
shopifyOrderTotalQuantityReturnItems - Int
shopifyOrderTotalPrice - Decimal
shopifyOrderSubtotalPrice - Decimal
shopifyOrderTags - [String]
shopifyOrderCustomerTags - [String]
shopifyReturnSyncStatus - ShopifyReturnSyncStatus
availableActions - [ProcessingStatusAction!]!
customerNumberOfOrders - Int
customerNumberOfReturns - Int
shipmentCarrierName - String
shipmentServiceName - String
pendingLabelRate - PendingLabelRate
receipts - [Receipt!]!
hasReturnProtection - Boolean!
requestType - String
withdrawalSubtype - String
withdrawalReceivedAt - DateTime
withdrawalManualResolutionReason - WithdrawalManualResolutionReason
resolvedAt - DateTime
withdrawalCancellationState - String
withdrawalCancellationErrorReason - String
withdrawalRefundDueAt - DateTime
originCountryCode - String
orderId - String! Use shopifyOrderId instead
orderNumber - String! Use shopifyOrderNumber instead
orderDate - DateTime Use shopifyOrderDate instead
returnDate - DateTime Use createdAt instead
isActive - Boolean Use isArchived instead
unitQuantity - Int
returnValueAmount - Decimal Sum of items (item quantity * item discounted amount)
resolvedStatus - ResolvedStatus Status indicating the resolution state of the return items
returnItemTypes - [String] List of return item types e.g. ["REFUND", "CREDIT", "EXCHANGE"]
returnTypeLabels - [String] List of return item type labels e.g. ["Refund", "Store Credit", "Exchange"]
Example
{
  "id": "4",
  "uuid": "xyz789",
  "adminReturn": true,
  "testMode": true,
  "returnIntegration": true,
  "usesConsolidatedOrderExchanges": false,
  "traceId": "abc123",
  "draftProcessingState": "CREATED",
  "customerFirstName": "abc123",
  "customerLastName": "xyz789",
  "customerEmail": "abc123",
  "rmaNumber": "abc123",
  "stageLabel": "abc123",
  "stageUpdatedDate": "2007-12-03T10:15:30Z",
  "approvalRequired": false,
  "approvedAt": "2007-12-03T10:15:30Z",
  "rejectedAt": "2007-12-03T10:15:30Z",
  "rejectionReason": "abc123",
  "notes": "xyz789",
  "allowResubmission": false,
  "receivedAt": "2007-12-03T10:15:30Z",
  "financialTerminalAt": "2007-12-03T10:15:30Z",
  "isArchived": true,
  "expiredAt": "2007-12-03T10:15:30Z",
  "shippingMethod": "FREE",
  "giftReturn": false,
  "giftReturnEmailAddress": "xyz789",
  "trackingNumber": "xyz789",
  "deliveryDate": "2007-12-03T10:15:30Z",
  "deliveryStatus": "abc123",
  "labelCurrency": "abc123",
  "shopCurrency": "abc123",
  "noShippingRequired": false,
  "feesSentThroughReturnIntegration": true,
  "defaultRefundFee": Decimal,
  "defaultStoreCreditFee": Decimal,
  "originalHandlingFeeCharged": Decimal,
  "actualHandlingFeeCharged": Decimal,
  "restockingFeeType": "ONCE_PER_RETURN",
  "originalRestockingFeeCharged": Decimal,
  "actualRestockingFeeCharged": Decimal,
  "shopifyReturnId": "abc123",
  "shopifyReturnName": "abc123",
  "shopifyReturnSyncError": "UNKNOWN_ERROR",
  "shopifyOrderId": "xyz789",
  "shopifyOrderDate": "2007-12-03T10:15:30Z",
  "exchangeBalanceDue": Decimal,
  "exchangeBalancePaidAt": "2007-12-03T10:15:30Z",
  "estimatedBalance": Decimal,
  "isDraft": false,
  "shopifyOrderNumber": "xyz789",
  "shopifyOrderUrl": "xyz789",
  "shopifyCustomerUrl": "abc123",
  "customerAddress": ReturnAddressType,
  "destinationAddress": ReturnAddressType,
  "giftReturnAddress": ReturnAddressType,
  "rmaFormUrl": "xyz789",
  "stageId": 4,
  "systemStage": 987,
  "statusId": "xyz789",
  "statusLabel": "abc123",
  "labelUrl": "abc123",
  "qrCodeUrl": "xyz789",
  "qrCodeDownloadUrl": "xyz789",
  "returnStatusPageUrl": "xyz789",
  "labelCost": Decimal,
  "totalWeightGrams": Decimal,
  "createdAt": "2007-12-03T10:15:30Z",
  "refunds": [RefundType],
  "logs": [ReturnLog],
  "next": "abc123",
  "previous": "abc123",
  "nextReturn": Return,
  "previousReturn": Return,
  "exchangeOrders": [ExchangeOrder],
  "shipment": Shipment,
  "appliedRules": ["xyz789"],
  "appliedRulesDetailed": [AppliedRuleType],
  "suggestionRefund": SuggestionRefundType,
  "suggestedRefund": SuggestedRefundType,
  "hasValidCustomerPaymentPending": false,
  "warehouseName": "abc123",
  "shippedTo": "abc123",
  "warehouse": WarehouseType,
  "storeCredits": [StoreCreditType],
  "externalShippingLabelUrl": "abc123",
  "items": [ReturnItem],
  "exchangeItems": [ExchangeItem],
  "handlingFeeCharged": Decimal,
  "restockingFeeCharged": Decimal,
  "shopifyOrderFulfillments": [ShopifyFulfillmentType],
  "shopifyOrderTotalQuantityOrdered": 123,
  "shopifyOrderTotalQuantityReturnItems": 987,
  "shopifyOrderTotalPrice": Decimal,
  "shopifyOrderSubtotalPrice": Decimal,
  "shopifyOrderTags": ["abc123"],
  "shopifyOrderCustomerTags": ["abc123"],
  "shopifyReturnSyncStatus": "UNSYNCABLE",
  "availableActions": ["DISCARD"],
  "customerNumberOfOrders": 123,
  "customerNumberOfReturns": 123,
  "shipmentCarrierName": "xyz789",
  "shipmentServiceName": "abc123",
  "pendingLabelRate": PendingLabelRate,
  "receipts": [Receipt],
  "hasReturnProtection": false,
  "requestType": "xyz789",
  "withdrawalSubtype": "xyz789",
  "withdrawalReceivedAt": "2007-12-03T10:15:30Z",
  "withdrawalManualResolutionReason": "INTERCEPTED_OR_CANCELLED_OUTSIDE_RETURNZAP",
  "resolvedAt": "2007-12-03T10:15:30Z",
  "withdrawalCancellationState": "xyz789",
  "withdrawalCancellationErrorReason": "abc123",
  "withdrawalRefundDueAt": "2007-12-03T10:15:30Z",
  "originCountryCode": "abc123",
  "orderId": "abc123",
  "orderNumber": "abc123",
  "orderDate": "2007-12-03T10:15:30Z",
  "returnDate": "2007-12-03T10:15:30Z",
  "isActive": true,
  "unitQuantity": 987,
  "returnValueAmount": Decimal,
  "resolvedStatus": "RESOLVED",
  "returnItemTypes": ["xyz789"],
  "returnTypeLabels": ["abc123"]
}

ReturnAddressType

Fields
Field Name Description
name - String!
company - String!
street1 - String!
street2 - String!
city - String!
state - String!
zip - String!
phone - String!
email - String!
country - String
warehouseId - ID
Example
{
  "name": "abc123",
  "company": "xyz789",
  "street1": "xyz789",
  "street2": "abc123",
  "city": "abc123",
  "state": "xyz789",
  "zip": "abc123",
  "phone": "xyz789",
  "email": "abc123",
  "country": "xyz789",
  "warehouseId": "4"
}

ReturnItem

Fields
Field Name Description
id - ID!
shopifyLineItemId - String!
shopifyVariantId - String!
sku - String!
barcode - String
productTitle - String!
variantTitle - String!
variantDisplayName - String!
quantity - Int!
value - Decimal Full unit price in shop currency
presentmentOriginalAmount - Decimal The variant unit amount without discounts applied in presentment currency
discountedAmount - Decimal Actual amount customer paid in shop currency
presentmentDiscountedAmount - Decimal Actual amount customer paid per unit in presentment currency
presentmentCurrency - String!
vendor - String! The name of the vendor who made the variant from Shopify.
isPartOfBundle - Boolean Whether this line item belongs to a Shopify bundle (lineItemGroup)
bundleTitle - String Title of the bundle this item belongs to, from Shopify lineItemGroup
bundleGroupId - String Stable Shopify lineItemGroup ID for the bundle
returnReason - String!
comment - String!
exchangeOrder - ExchangeOrder The exchange order created for this return item
isMissing - Boolean! Is missing from return package
receivingStatus - ReturnsReturnItemReceivingStatusChoices Set during receiving: received, missing, or rejected. Supersedes is_missing.
condition - ReturnsReturnItemConditionChoices Item condition assessed at receiving time (Grade A/B/C)
rejectionReason - ReturnsReturnItemRejectionReasonChoices Required when receiving_status is rejected
isResolvedManually - Boolean! Is resolved manually
skipRestock - Boolean! Flag indicating whether to temporarily skip restocking for the returned item. This item may be restocked in the future, depending on the disposition status.
restockingFee - Decimal The current shop restocking fee applied to the item
handlingFee - Decimal The current shop handling fee applied to the item
storeCreditIncentiveAmount - Decimal The current shop store credit's incentive amount applied to the item
fulfillmentLocationId - String!
fulfillmentLocationName - String!
expiredAt - DateTime
actuallyResolvedAt - DateTime Date the admin has resolved this item.
autoResolvedAt - DateTime Date the system has automatically resolved this item.
returnEligibilityExpiresAt - DateTime
variant - String Use variantTitle instead
title - String Use variantDisplayName instead
titleClean - String Use productTitle instead
returnType - ReturnType
returnTypeLabel - String
returnReasonId - Int
returnReasonLabel - String
images - [String]
files - [ReturnItemFileType]
answers - [ReturnItemAnswerType]
isRefunded - Boolean
currency - String Shop currency code e.g. USD
dispositionType - String Shopify disposition type e.g. RESTOCKED, NOT_RESTOCKED, MISSING, PROCESSING_REQUIRED
imageUrl - String
variants - [String!]!
exchangeItem - ExchangeItem
resolvedAt - DateTime
resolutionStatus - ResolutionStatus
productHsCode - String
productCountryOfOrigin - String
totalWeightGrams - Decimal
discountAllocations - [ReturnItemDiscountAllocationType]
preTaxPriceSet - MoneySet
postTaxPriceSet - MoneySet
taxRate - Decimal
restockLocationId - String
Example
{
  "id": "4",
  "shopifyLineItemId": "xyz789",
  "shopifyVariantId": "xyz789",
  "sku": "xyz789",
  "barcode": "abc123",
  "productTitle": "abc123",
  "variantTitle": "xyz789",
  "variantDisplayName": "xyz789",
  "quantity": 123,
  "value": Decimal,
  "presentmentOriginalAmount": Decimal,
  "discountedAmount": Decimal,
  "presentmentDiscountedAmount": Decimal,
  "presentmentCurrency": "xyz789",
  "vendor": "abc123",
  "isPartOfBundle": false,
  "bundleTitle": "abc123",
  "bundleGroupId": "xyz789",
  "returnReason": "abc123",
  "comment": "abc123",
  "exchangeOrder": ExchangeOrder,
  "isMissing": true,
  "receivingStatus": "RECEIVED",
  "condition": "GRADE_A",
  "rejectionReason": "WAREHOUSE_REJECTED",
  "isResolvedManually": true,
  "skipRestock": true,
  "restockingFee": Decimal,
  "handlingFee": Decimal,
  "storeCreditIncentiveAmount": Decimal,
  "fulfillmentLocationId": "abc123",
  "fulfillmentLocationName": "xyz789",
  "expiredAt": "2007-12-03T10:15:30Z",
  "actuallyResolvedAt": "2007-12-03T10:15:30Z",
  "autoResolvedAt": "2007-12-03T10:15:30Z",
  "returnEligibilityExpiresAt": "2007-12-03T10:15:30Z",
  "variant": "abc123",
  "title": "xyz789",
  "titleClean": "xyz789",
  "returnType": "REFUND",
  "returnTypeLabel": "abc123",
  "returnReasonId": 987,
  "returnReasonLabel": "abc123",
  "images": ["xyz789"],
  "files": [ReturnItemFileType],
  "answers": [ReturnItemAnswerType],
  "isRefunded": true,
  "currency": "abc123",
  "dispositionType": "xyz789",
  "imageUrl": "xyz789",
  "variants": ["xyz789"],
  "exchangeItem": ExchangeItem,
  "resolvedAt": "2007-12-03T10:15:30Z",
  "resolutionStatus": "AUTO",
  "productHsCode": "xyz789",
  "productCountryOfOrigin": "abc123",
  "totalWeightGrams": Decimal,
  "discountAllocations": [
    ReturnItemDiscountAllocationType
  ],
  "preTaxPriceSet": MoneySet,
  "postTaxPriceSet": MoneySet,
  "taxRate": Decimal,
  "restockLocationId": "xyz789"
}

ReturnItemAnswerChoiceType

Fields
Field Name Description
id - UUID!
order - Int!
questionChoiceText - String!
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "order": 123,
  "questionChoiceText": "abc123"
}

ReturnItemAnswerType

Fields
Field Name Description
id - UUID!
questionType - QuestionType
order - Int!
questionText - String!
answer - String!
questionId - String
isRequired - Boolean
response - AnswerResponseType
answerChoices - [ReturnItemAnswerChoiceType]
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "questionType": "LONG_TEXT",
  "order": 987,
  "questionText": "xyz789",
  "answer": "abc123",
  "questionId": "xyz789",
  "isRequired": false,
  "response": AnswerResponseType,
  "answerChoices": [ReturnItemAnswerChoiceType]
}

ReturnItemDiscountAllocationType

Fields
Field Name Description
id - ID!
title - String Discount application title (e.g. 'BOGO 50% Off')
code - String Discount code if applicable, null for automatic discounts
allocationMethod - ReturnsReturnItemDiscountAllocationAllocationMethodChoices How the discount is allocated: ACROSS, EACH, or ONE
amount - Decimal Raw line-item-level allocated amount in shop currency
presentmentAmount - Decimal Raw line-item-level allocated amount in presentment currency
lineItemQuantity - Int Line item quantity at time of allocation, for computing per-unit amounts
Example
{
  "id": "4",
  "title": "abc123",
  "code": "abc123",
  "allocationMethod": "ACROSS",
  "amount": Decimal,
  "presentmentAmount": Decimal,
  "lineItemQuantity": 987
}

ReturnItemFileType

Fields
Field Name Description
id - ID!
contentType - String!
url - String
Example
{
  "id": 4,
  "contentType": "abc123",
  "url": "abc123"
}

ReturnLog

Fields
Field Name Description
id - ID!
message - String!
context - ReturnLogContext!
comment - String!
type - ReturnLogType!
messageCode - String
moment - DateTime!
actorType - String!
returnItems - [ReturnItem!]!
exchangeItems - [ExchangeItem!]!
Example
{
  "id": "4",
  "message": "abc123",
  "context": ReturnLogContext,
  "comment": "xyz789",
  "type": "LEGACY",
  "messageCode": "abc123",
  "moment": "2007-12-03T10:15:30Z",
  "actorType": "abc123",
  "returnItems": [ReturnItem],
  "exchangeItems": [ExchangeItem]
}

ReturnLogContext

Fields
Field Name Description
id - ID
comment - String
userFirstName - String
userLastName - String
stageLabel - String
itemsCount - Int
externalShipmentId - String
notificationType - String
to - String
shopifyOrderName - String
shopifyOrderId - String
amount - String
failedAmount - String
currency - String
shopAmount - String
shopCurrency - String
storeCreditType - AutomatedStoreCreditType
rejectionReason - String
reason - String
receiptId - ID
Example
{
  "id": 4,
  "comment": "xyz789",
  "userFirstName": "abc123",
  "userLastName": "abc123",
  "stageLabel": "abc123",
  "itemsCount": 123,
  "externalShipmentId": "abc123",
  "notificationType": "xyz789",
  "to": "xyz789",
  "shopifyOrderName": "abc123",
  "shopifyOrderId": "abc123",
  "amount": "abc123",
  "failedAmount": "abc123",
  "currency": "xyz789",
  "shopAmount": "abc123",
  "shopCurrency": "abc123",
  "storeCreditType": "DISCOUNT_CODE",
  "rejectionReason": "abc123",
  "reason": "abc123",
  "receiptId": 4
}

ReturnLogType

Description

An enumeration.

Values
Enum Value Description

LEGACY

BASIC

ITEMS

COMMENT

EXCHANGE_ITEMS

Example
"LEGACY"

ReturnReason

Fields
Field Name Description
id - Int!
uuid - ID
reason - String!
imageUploads - ImageUploadsSetting
order - Int
Example
{
  "id": 987,
  "uuid": "4",
  "reason": "xyz789",
  "imageUploads": "DISABLE_IMAGE_UPLOAD",
  "order": 123
}

ReturnSyncError

Description

An enumeration.

Values
Enum Value Description

UNKNOWN_ERROR

RETURN_CREATED_IN_CUSTOMER_PORTAL

RETURN_CREATED_IN_SHOPIFY_WEB

CHANNEL_DOES_NOT_SUPPORT_FEES

EXCHANGE_ITEMS_WITH_DUTIES

SHOPIFY_PLUS_NEEDS_EXCHANGE_TEST_DRIVE

EXCHANGE_ITEMS_WITH_UNSUPPORTED_SOURCE_APPLICATION

EXCHANGE_ITEMS_WITH_BLOCKED_CHANNEL

EXCHANGE_VARIANT_NOT_FOUND

ADMIN_RETURNED_UNFULFILLED_ITEMS

ADMIN_RETURNED_DUPLICATE_ITEMS

RETURN_CREATED_BY_ANOTHER_APP

DUPLICATE_RETURN

CUSTOMER_RETURNED_UNFULFILLED_ITEMS

ADMIN_RETURNED_ALREADY_REFUNDED_ITEMS

INVALID_QUANTITY

Example
"UNKNOWN_ERROR"

ReturnType

Description

An enumeration.

Values
Enum Value Description

REFUND

CREDIT

EXCHANGE

Example
"REFUND"

ReturnUpdateStatus

Fields
Field Name Description
success - Boolean
affectedReturnIds - [Int]!
Example
{"success": false, "affectedReturnIds": [987]}

ReturnsReturnItemConditionChoices

Description

An enumeration.

Values
Enum Value Description

GRADE_A

Excellent

GRADE_B

Acceptable

GRADE_C

Damaged or Poor
Example
"GRADE_A"

ReturnsReturnItemDiscountAllocationAllocationMethodChoices

Description

An enumeration.

Values
Enum Value Description

ACROSS

Across

EACH

Each

ONE

One
Example
"ACROSS"

ReturnsReturnItemReceivingStatusChoices

Description

An enumeration.

Values
Enum Value Description

RECEIVED

Received

MISSING

Missing

REJECTED

Rejected
Example
"RECEIVED"

ReturnsReturnItemRejectionReasonChoices

Description

An enumeration.

Values
Enum Value Description

WAREHOUSE_REJECTED

Warehouse rejected

NOT_IN_ORIGINAL_CONDITION

Not in original condition

ITEM_DAMAGED_OR_WORN

Item damaged or worn

MISSING_COMPONENTS

Missing components or accessories

WRONG_ITEM_RETURNED

Wrong item returned

RETURN_WINDOW_EXPIRED

Return window expired

SIGNS_OF_USE

Signs of use beyond inspection

OTHER

Other
Example
"WAREHOUSE_REJECTED"

Rule

Fields
Field Name Description
id - ID
uuid - String!
isActive - Boolean
name - String!
rule - String Human readable version. Use description instead.
description - String Human readable version.
when - RuleWhen!
conditions - [Condition]! Use conditionGroups instead.
conditionGroups - [ConditionGroupGraphQL!]!
actions - [RuleActionGraphQL!]!
action - RuleAction Use actions instead.
actionOption - RuleActionOption Use actions instead.
unit - RuleUnit Use actions instead.
value - String Use actions instead.
message - String Use actions instead.
warehouseName - String Use actions instead.
warehouseId - ID Use actions instead.
destinationCountry - String Use actions instead.
question - ID Use actions instead.
questionChoices - [ID] Use actions instead.
questionId - ID Use question instead.
questionChoiceId - ID Use question_choices instead.
windowDays - Int Use value instead.
Example
{
  "id": 4,
  "uuid": "abc123",
  "isActive": false,
  "name": "abc123",
  "rule": "abc123",
  "description": "abc123",
  "when": "AND",
  "conditions": [Condition],
  "conditionGroups": [ConditionGroupGraphQL],
  "actions": [RuleActionGraphQL],
  "action": "DENY_RETURN",
  "actionOption": "ALL",
  "unit": "SHOP_DEFAULT_CURRENCY",
  "value": "xyz789",
  "message": "abc123",
  "warehouseName": "abc123",
  "warehouseId": "4",
  "destinationCountry": "abc123",
  "question": 4,
  "questionChoices": [4],
  "questionId": "4",
  "questionChoiceId": "4",
  "windowDays": 987
}

RuleAction

Description

An enumeration.

Values
Enum Value Description

DENY_RETURN

PREVENT_ITEM_RETURN

PREVENT_RETURN

DENY_SHIPPING

SHIP_TO_WAREHOUSE

ADJUST_WINDOW

ALLOW_RETURNS_UNTIL_DATE

REQUIRE_APPROVAL

DO_NOT_REQUIRE_APPROVAL

DO_NOT_REQUIRE_RETURN_SHIPPING

SET_FEE

REQUIRE_QUESTION

SHOW_QUESTION

SHOW_QUESTION_CHOICES

SET_SHIPPING_FEE

SET_BONUS_CREDIT

HIDE_ITEM

SET_PACKAGE

Example
"DENY_RETURN"

RuleActionGraphQL

Fields
Field Name Description
action - RuleAction!
actionOption - RuleActionOption
value - String
unit - RuleUnit
order - Int!
message - String!
warehouseId - ID
warehouseName - String Unused. Will be removed after 2026-04-01.
packageId - ID
destinationCountry - String
question - ID
questionChoices - [ID]
Example
{
  "action": "DENY_RETURN",
  "actionOption": "ALL",
  "value": "xyz789",
  "unit": "SHOP_DEFAULT_CURRENCY",
  "order": 123,
  "message": "xyz789",
  "warehouseId": 4,
  "warehouseName": "abc123",
  "packageId": "4",
  "destinationCountry": "xyz789",
  "question": 4,
  "questionChoices": [4]
}

RuleActionOption

Description

An enumeration.

Values
Enum Value Description

ALL

REFUND

EXCHANGE

EXCHANGE_VARIANT

EXCHANGE_CROSS_PRODUCT

EXCHANGE_OTHER_ITEMS

CREDIT

FREE

PAID

SELF

STORE

WAREHOUSE

NONE

Example
"ALL"

RuleAttribute

Description

An enumeration.

Values
Enum Value Description

NONE

CUSTOMER_EMAIL

CUSTOMER_ID

CUSTOMER_COUNTRY

CUSTOMER_TAGS

CUSTOMER_NUMBER_OF_ORDERS

CUSTOMER_NUMBER_OF_RETURNS

CUSTOMER_NUMBER_OF_GREEN_RETURNS

CUSTOMER_LTV

ORDER_NUMBER_OF_RETURNS

DISCOUNT_CODE

LINE_ITEM_CUSTOM_ATTRIBUTE

LINE_ITEM_DISCOUNT_PERCENT

LINE_ITEM_COMPARE_AT_PRICE_DISCOUNT_PERCENT

LINE_ITEM_CURRENT_VS_ORDER_PRICE_DISCOUNT_PERCENT

LINE_ITEM_DAYS_SINCE_DELIVERED_AT

ORDER_DATE

ORDER_DAYS_SINCE_ORDERED

ORDER_ID

ORDER_NUMBER

ORDER_TAGS

ORDER_TOTAL

ORDER_DISCOUNT_PERCENT

ORDER_LINE_ITEM_FULFILLMENT_LOCATION_ID

ORDER_REMAINING_VALUE

ORDER_CHANNEL_NAME

ORDER_SUB_CHANNEL_NAME

ORDER_CURRENCY

PRODUCT_COLLECTIONS

PRODUCT_ID

PRODUCT_TAGS

PRODUCT_TITLE

PRODUCT_TYPE

PRODUCT_VENDOR

RETURN_REASON

RETURN_TYPE

QUESTION_ANSWER

REQUEST_TYPE

VARIANT_ID

VARIANT_PRICE

VARIANT_SKU

VARIANT_TITLE

VARIANT_WEIGHT

RETURN_TOTAL_VALUE

RETURN_TOTAL_QUANTITY

RETURN_TOTAL_WEIGHT_IN_GRAMS

LINE_ITEM_DISCOUNT_TITLE

LINE_ITEM_IS_BUNDLE

LINE_ITEM_BUNDLE_TITLE

IS_ADMIN_RETURN

Example
"NONE"

RuleOperator

Description

An enumeration.

Values
Enum Value Description

EQ

NEQ

GT

GTE

LT

LTE

CT

NCT

BW

EW

AND

OR

Example
"EQ"

RuleUnit

Description

An enumeration.

Values
Enum Value Description

SHOP_DEFAULT_CURRENCY

DAY

PERCENT

Example
"SHOP_DEFAULT_CURRENCY"

RuleWhen

Description

An enumeration.

Values
Enum Value Description

AND

OR

Example
"AND"

SecondaryFieldBehavior

Description

An enumeration.

Values
Enum Value Description

SHOPIFY_ORDER_NUMBER

CUSTOMER_POSTAL_CODE

DO_NOT_REQUIRE

Example
"SHOPIFY_ORDER_NUMBER"

SelectedChoiceType

Fields
Field Name Description
id - String
text - String
Example
{
  "id": "abc123",
  "text": "xyz789"
}

SendcloudAccount

Fields
Field Name Description
id - ID!
uuid - ID
managedByReturnzap - Boolean!
apiKey - String!
purchaseInsurance - Boolean!
Example
{
  "id": 4,
  "uuid": "4",
  "managedByReturnzap": true,
  "apiKey": "abc123",
  "purchaseInsurance": true
}

SetReturnNotes

Fields
Field Name Description
error - String
return - Return
Example
{
  "error": "abc123",
  "return": Return
}

ShipStationAccountCarrierServiceType

Fields
Field Name Description
id - UUID!
carrier - ShipStationAccountCarrierType!
code - String! Service code from ShipStation API
name - String! Human-readable service name
description - String! Human-readable service description
isActive - Boolean! Whether this service is active and available for use
alwaysDisplay - Boolean! Always return this rate option despite cut off setting
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "carrier": ShipStationAccountCarrierType,
  "code": "abc123",
  "name": "abc123",
  "description": "xyz789",
  "isActive": false,
  "alwaysDisplay": false
}

ShipStationAccountCarrierType

Fields
Field Name Description
id - ID!
account - ShipStationAccountType
isActive - Boolean!
shipstationShippingProviderId - Int!
shipstationCarrier - String!
shipstationCarrierName - String!
services - [ShipStationAccountCarrierServiceType]
Example
{
  "id": 4,
  "account": ShipStationAccountType,
  "isActive": false,
  "shipstationShippingProviderId": 987,
  "shipstationCarrier": "abc123",
  "shipstationCarrierName": "abc123",
  "services": [ShipStationAccountCarrierServiceType]
}

ShipStationAccountType

Fields
Field Name Description
id - ID!
apiKey - String!
apiSecret - String
services - String Use ShipStationAccountCarrierServiceType.is_active field instead.
carriers - [ShipStationAccountCarrierType]
Example
{
  "id": "4",
  "apiKey": "xyz789",
  "apiSecret": "xyz789",
  "services": "abc123",
  "carriers": [ShipStationAccountCarrierType]
}

Shipment

Fields
Field Name Description
trackingCode - String
trackingUrl - String
status - String
refunded - Boolean
canBeVoided - Boolean
commercialInvoiceUrl - String
Example
{
  "trackingCode": "abc123",
  "trackingUrl": "xyz789",
  "status": "abc123",
  "refunded": false,
  "canBeVoided": false,
  "commercialInvoiceUrl": "xyz789"
}

ShipmentStatus

Description

An enumeration.

Values
Enum Value Description

UNKNOWN

PRE_TRANSIT

IN_TRANSIT

OUT_FOR_DELIVERY

DELIVERED

AVAILABLE_FOR_PICKUP

FAILURE

CANCELLED

ERROR

Example
"UNKNOWN"

ShippingMethod

Description

An enumeration.

Values
Enum Value Description

FREE

PAY

SELF

STORE

Example
"FREE"

ShippoAccountCarrierServiceType

Fields
Field Name Description
id - UUID!
carrier - ShippoAccountCarrierType!
code - String! Service token from Shippo API
name - String! Human-readable service name
description - String! Human-readable service description
isActive - Boolean! Whether this service is active and available for use
alwaysDisplay - Boolean! Always return this rate option despite cut off setting
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "carrier": ShippoAccountCarrierType,
  "code": "abc123",
  "name": "abc123",
  "description": "xyz789",
  "isActive": true,
  "alwaysDisplay": true
}

ShippoAccountCarrierType

Fields
Field Name Description
id - ID!
account - ShippoAccountType
isActive - Boolean!
shippoObjectId - String! Carrier account ID from Shippo API
shippoCarrier - String! Carrier code from Shippo API
shippoCarrierName - String!
services - [ShippoAccountCarrierServiceType]
Example
{
  "id": "4",
  "account": ShippoAccountType,
  "isActive": false,
  "shippoObjectId": "xyz789",
  "shippoCarrier": "abc123",
  "shippoCarrierName": "xyz789",
  "services": [ShippoAccountCarrierServiceType]
}

ShippoAccountType

Fields
Field Name Description
id - ID!
useIsReturn - Boolean!
services - String Use ShippoAccountCarrierServiceType.is_active field instead.
carriers - [ShippoAccountCarrierType]
Example
{
  "id": "4",
  "useIsReturn": false,
  "services": "xyz789",
  "carriers": [ShippoAccountCarrierType]
}

ShopPaymentMethod

Fields
Field Name Description
id - UUID!
createdAt - DateTime!
stripePaymentMethodId - String! Stripe payment method ID (pm_...)
paymentMethodType - PaymentMethodType
brand - String! Card brand (visa, mastercard) or bank name
lastFour - String! Last 4 digits of card or account number
expMonth - Int Expiration month for cards (1-12)
expYear - Int Expiration year for cards
bankName - String! Bank name for ACH payments
isActive - Boolean! Whether this payment method is active and can be used
isDefault - Boolean! Whether this is the default payment method for auto-recharge
failedChargeAttempts - Int! Number of consecutive failed charge attempts. Reset to 0 on success.
status - PaymentSetupStatus
isExpired - Boolean
isChargeExhausted - Boolean
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "createdAt": "2007-12-03T10:15:30Z",
  "stripePaymentMethodId": "xyz789",
  "paymentMethodType": "CARD",
  "brand": "abc123",
  "lastFour": "xyz789",
  "expMonth": 987,
  "expYear": 123,
  "bankName": "abc123",
  "isActive": false,
  "isDefault": true,
  "failedChargeAttempts": 987,
  "status": "PENDING",
  "isExpired": true,
  "isChargeExhausted": true
}

ShopSubscriptionPlan

Fields
Field Name Description
id - Int
uuid - String!
subscriptionType - SubscriptionType
price - Decimal
perLabelFee - Decimal
tiered - Boolean
tierCount - Int
overagePrice - Decimal
isCustomPlan - Boolean
name - String
features - [SubscriptionFeature]
featuresInUse - [SubscriptionFeature]
hasValidSubscriptionCharge - Boolean
forceSelectSubscriptionPlan - Boolean
freeTrialDaysRemaining - Int
billingPeriods - [BillingPeriodType]
customQuote - CustomQuote
managedBy - BillingManagedBy!
managedByLabel - String!
canChangePlan - Boolean!
returnProtectionCurrentlyEnabled - Boolean
hasReturnProtectionFeeHistory - Boolean
Example
{
  "id": 987,
  "uuid": "abc123",
  "subscriptionType": "FREE",
  "price": Decimal,
  "perLabelFee": Decimal,
  "tiered": true,
  "tierCount": 987,
  "overagePrice": Decimal,
  "isCustomPlan": false,
  "name": "xyz789",
  "features": ["ADJUST_RETURN_WINDOWS"],
  "featuresInUse": ["ADJUST_RETURN_WINDOWS"],
  "hasValidSubscriptionCharge": false,
  "forceSelectSubscriptionPlan": false,
  "freeTrialDaysRemaining": 987,
  "billingPeriods": [BillingPeriodType],
  "customQuote": CustomQuote,
  "managedBy": "SELF",
  "managedByLabel": "xyz789",
  "canChangePlan": true,
  "returnProtectionCurrentlyEnabled": false,
  "hasReturnProtectionFeeHistory": false
}

ShopifyFulfillmentType

Fields
Field Name Description
id - String
name - String
status - String
deliveredAt - DateTime
totalQuantity - Int
trackingInfo - [ShopifyTrackingInfoType]
Example
{
  "id": "abc123",
  "name": "xyz789",
  "status": "xyz789",
  "deliveredAt": "2007-12-03T10:15:30Z",
  "totalQuantity": 987,
  "trackingInfo": [ShopifyTrackingInfoType]
}

ShopifyLocation

Fields
Field Name Description
id - String Shopify location id
name - String Shopify location name
Example
{
  "id": "xyz789",
  "name": "xyz789"
}

ShopifyReturnSyncStatus

Values
Enum Value Description

UNSYNCABLE

PENDING

SYNCED

FAILED

Example
"UNSYNCABLE"

ShopifyTrackingInfoType

Fields
Field Name Description
company - String
number - String
Example
{
  "company": "xyz789",
  "number": "xyz789"
}

ShopifyUser

Fields
Field Name Description
id - ID!
uuid - String!
accountOwner - Boolean!
preferredLocale - String
hqPreferences - JSONString
isAdmin - Boolean!
canManageUsers - Boolean!
canModifySettings - Boolean!
canProcessReturns - Boolean!
shopifyId - String
email - String!
firstName - String!
lastName - String!
locale - String!
isActive - Boolean!
chatHash - String
shouldUpdate - Boolean
isDeleted - Boolean!
shopifyRoles - String Not used anymore
Example
{
  "id": 4,
  "uuid": "abc123",
  "accountOwner": true,
  "preferredLocale": "xyz789",
  "hqPreferences": JSONString,
  "isAdmin": false,
  "canManageUsers": false,
  "canModifySettings": true,
  "canProcessReturns": false,
  "shopifyId": "xyz789",
  "email": "xyz789",
  "firstName": "xyz789",
  "lastName": "abc123",
  "locale": "xyz789",
  "isActive": true,
  "chatHash": "xyz789",
  "shouldUpdate": false,
  "isDeleted": false,
  "shopifyRoles": "xyz789"
}

ShopsPackageUnitChoices

Description

An enumeration.

Values
Enum Value Description

IN

in

CM

cm
Example
"IN"

ShopsPackageWeightUnitChoices

Description

An enumeration.

Values
Enum Value Description

GRAMS

GRAMS

KILOGRAMS

KILOGRAMS

OUNCES

OUNCES

POUNDS

POUNDS
Example
"GRAMS"

ShopsShopWithdrawalHandlingModeChoices

Description

An enumeration.

Values
Enum Value Description

AUTOMATIC

Automatic

ALWAYS_MANUAL

Always manual
Example
"AUTOMATIC"

SignedUrl

Fields
Field Name Description
url - String!
fields - String!
filePath - String!
filename - String!
Example
{
  "url": "xyz789",
  "fields": "xyz789",
  "filePath": "xyz789",
  "filename": "abc123"
}

Stage

Fields
Field Name Description
id - ID!
systemStage - SystemStage
label - String!
notification - Notification
createShopifyReturn - Boolean! ReturnZap will create the Shopify return when the return's stage is changed to this one.
tags - [String!]! Tags to apply to the Shopify Order when return is moved to this stage.
order - Int! Display order for the stage in the pipeline. Lower values appear first.
uuid - ID!
behavior - SystemStage
archived - Boolean!
shipmentStatus - ShipmentStatus Use shipment_statuses instead.
shipmentStatuses - [ShipmentStatus]
Example
{
  "id": 4,
  "systemStage": "AUTOMATICALLY_APPROVED",
  "label": "xyz789",
  "notification": Notification,
  "createShopifyReturn": false,
  "tags": ["abc123"],
  "order": 123,
  "uuid": "4",
  "behavior": "AUTOMATICALLY_APPROVED",
  "archived": true,
  "shipmentStatus": "UNKNOWN",
  "shipmentStatuses": ["UNKNOWN"]
}

StageShipmentStatusType

Fields
Field Name Description
stage - Stage
shipmentStatus - ShipmentStatus
Example
{"stage": Stage, "shipmentStatus": "UNKNOWN"}

StoreCreditIncentiveType

Description

An enumeration.

Values
Enum Value Description

ONCE_PER_ITEM

ONCE_PER_LINE_ITEM

ONCE_PER_RETURN

Example
"ONCE_PER_ITEM"

StoreCreditType

Fields
Field Name Description
id - ID!
created - DateTime
storeCreditType - AutomatedStoreCreditType
shopifyId - String! Shopify id of the corresponding shopify object, dependent on store credit type
code - String!
shopAmount - Decimal!
shopCurrency - String!
presentmentAmount - Decimal
presentmentCurrency - String!
returnItems - [ReturnItem!]!
amount - Decimal Amount in shop currency (alias for shop_amount)
currency - String Currency code (alias for shop_currency)
Example
{
  "id": 4,
  "created": "2007-12-03T10:15:30Z",
  "storeCreditType": "DISCOUNT_CODE",
  "shopifyId": "abc123",
  "code": "abc123",
  "shopAmount": Decimal,
  "shopCurrency": "abc123",
  "presentmentAmount": Decimal,
  "presentmentCurrency": "xyz789",
  "returnItems": [ReturnItem],
  "amount": Decimal,
  "currency": "xyz789"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

SubscriptionFeature

Description

An enumeration.

Values
Enum Value Description

ADJUST_RETURN_WINDOWS

ADVANCED_ANALYTICS

API_ACCESS

AUTO_STAGES

BARCODES

DIRECT_CARRIER_INTEGRATION

EASYPOST

EXCHANGE_ADVANCED

EXCHANGE_DIFFERENTIAL_PRICING

EXCHANGE_FULL_CATALOG

EXCHANGE_INTEGRATION

EXCHANGE_SIMPLE

EXCHANGE_UPSELL

GIFT_RETURNS

GORGIAS

INTERNATIONAL

KLAVIYO

NATIVE_AUTOMATION

NO_SHIPPING_RETURNS

QR_CODES

QUESTIONS

REFUND_INTEGRATION

RESTOCK_INTEGRATION

RETURN_INTEGRATION

RETURN_PROTECTION

RULES

SHIPPING_INTEGRATIONS

SHOPIFY_METAFIELDS

SHOPIFY_TAGS

STORE_CREDIT_INTEGRATION

STORE_RETURNS

STRIPE

USER_PERMISSIONS

WAREHOUSES

WEBHOOKS

ZENDESK

EPHEMERAL_NO_PER_RETURN_FEES

EPHEMERAL_APPROVALS

EPHEMERAL_AUTOMATE_RETURN_SHIPPING

EPHEMERAL_SHIPPING

EPHEMERAL_FULL_REFUND_AUTOMATION

EPHEMERAL_WAREHOUSE_RECEIVING_TOOL

EPHEMERAL_CUSTOM_INTEGRATIONS

EPHEMERAL_PREMIUM_SUPPORT

EPHEMERAL_BUSINESS_REVIEW

Example
"ADJUST_RETURN_WINDOWS"

SubscriptionType

Description

An enumeration.

Values
Enum Value Description

FREE

BASIC

SIMPLE

PRO

PREMIUM

ENTERPRISE

TRIAL

Example
"FREE"

SuggestedRefundType

Fields
Field Name Description
productsSet - MoneySet
taxesSet - MoneySet
subtotalSet - MoneySet
exchangesSet - MoneySet
normalizationAdjustmentSet - MoneySet Price normalization adjustment. Positive = price increased (reduces cost), Negative = price decreased (increases cost)
shippingSet - MoneySet
availableForRefundSet - MoneySet Maximum refundable on the order; a gross ceiling, not the payable amount. Use netRefundPayableSet.
suggestedRefundSet - MoneySet Gross suggested refund before outstanding handling and restocking fees
netRefundPayableSet - MoneySet Amount payable after outstanding handling and restocking fees. Optional shipping reimbursement and store-credit incentives are not included.
handlingFeeChargedSet - MoneySet
handlingFeeSuggestedSet - MoneySet
restockingFeeChargedSet - MoneySet
restockingFeeSuggestedSet - MoneySet
storeCreditIncentiveAmountSet - MoneySet
Example
{
  "productsSet": MoneySet,
  "taxesSet": MoneySet,
  "subtotalSet": MoneySet,
  "exchangesSet": MoneySet,
  "normalizationAdjustmentSet": MoneySet,
  "shippingSet": MoneySet,
  "availableForRefundSet": MoneySet,
  "suggestedRefundSet": MoneySet,
  "netRefundPayableSet": MoneySet,
  "handlingFeeChargedSet": MoneySet,
  "handlingFeeSuggestedSet": MoneySet,
  "restockingFeeChargedSet": MoneySet,
  "restockingFeeSuggestedSet": MoneySet,
  "storeCreditIncentiveAmountSet": MoneySet
}

SuggestionRefundType

Fields
Field Name Description
taxesIncluded - Boolean Whether taxes are included in the subtotal price of the order.
currency - String Currency code e.g. USD
shopCurrency - String Shop currency code e.g. USD
discountedSubtotalAmount - Decimal The sum of all the discounted prices of the line items being refunded.
shopDiscountedSubtotalAmount - Decimal The sum of all the discounted prices of the line items being refunded in Shop currency.
totalTaxAmount - Decimal Total tax amount on original order
shopTotalTaxAmount - Decimal Total tax amount on original order in shop currency
totalTaxAmountForReturnedItems - Decimal Total tax amount for the items being returned
shopTotalTaxAmountForReturnedItems - Decimal Total tax amount for the items being returned in shop currency
shippingAmount - Decimal Shipping amount to refund for the selected line items
shopShippingAmount - Decimal Shipping shop amount to refund for the selected line items
shippingTaxAmount - Decimal Shipping tax amount to refund for the selected line items
shopTaxShippingAmount - Decimal Shipping shop tax amount to refund for the selected line items
shippingTaxAmountForReturnedItems - Decimal Shipping tax amount for the items being returned
shopShippingTaxAmountForReturnedItems - Decimal Shipping shop tax amount for the items being returned in shop currency
totalAmount - Decimal Total amount to refund for the selected line items + shipping amount
shopTotalAmount - Decimal Total shop amount to refund for the selected line items + shipping amount
suggestedAmountForReturnedItems - Decimal Suggested refund for the returned items
shopSuggestedAmountForReturnedItems - Decimal Suggested refund for the returned items in shop currency
Example
{
  "taxesIncluded": true,
  "currency": "xyz789",
  "shopCurrency": "xyz789",
  "discountedSubtotalAmount": Decimal,
  "shopDiscountedSubtotalAmount": Decimal,
  "totalTaxAmount": Decimal,
  "shopTotalTaxAmount": Decimal,
  "totalTaxAmountForReturnedItems": Decimal,
  "shopTotalTaxAmountForReturnedItems": Decimal,
  "shippingAmount": Decimal,
  "shopShippingAmount": Decimal,
  "shippingTaxAmount": Decimal,
  "shopTaxShippingAmount": Decimal,
  "shippingTaxAmountForReturnedItems": Decimal,
  "shopShippingTaxAmountForReturnedItems": Decimal,
  "totalAmount": Decimal,
  "shopTotalAmount": Decimal,
  "suggestedAmountForReturnedItems": Decimal,
  "shopSuggestedAmountForReturnedItems": Decimal
}

SystemStage

Description

An enumeration.

Values
Enum Value Description

AUTOMATICALLY_APPROVED

PENDING_APPROVAL

APPROVED

REJECTED

RECEIVED

Example
"AUTOMATICALLY_APPROVED"

TaxNumberInput

Fields
Input Field Description
id - ID
taxNumberType - TaxNumberType!
country - String!
value - String!
Example
{
  "id": "4",
  "taxNumberType": "VAT",
  "country": "xyz789",
  "value": "xyz789"
}

TaxNumberOutput

Fields
Field Name Description
id - UUID!
taxNumberType - TaxNumberType!
country - String!
value - String!
errors - [GQLErrorType]
Example
{
  "id": "ed78471e-5d76-454a-a112-cbcd761bccda",
  "taxNumberType": "VAT",
  "country": "abc123",
  "value": "xyz789",
  "errors": [GQLErrorType]
}

TaxNumberType

Description

An enumeration.

Values
Enum Value Description

VAT

EIN

GST

SSN

EORI

DUN

FED

STA

CNP

IE

INN

KPP

OGR

OKP

IOSS

FTZ

DAN

TAN

DTF

RGP

DLI

NID

PAS

MID

UKIMS

Example
"VAT"

TranslatedModel

Description

An enumeration.

Values
Enum Value Description

RETURN_REASON

SHOP

STAGE

NOTIFICATION

QUESTION

QUESTION_CHOICE

Example
"RETURN_REASON"

UUID

Description

Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects in fields, resolvers and input.

Example
"ed78471e-5d76-454a-a112-cbcd761bccda"

UpdateMissingReturnItems

Fields
Field Name Description
error - String
return - Return
Example
{
  "error": "xyz789",
  "return": Return
}

UpdateReturn

Fields
Field Name Description
success - Boolean
ret - Return
Example
{"success": false, "ret": Return}

WarehouseEvidence

Fields
Field Name Description
id - ID!
kind - WmsWarehouseEvidenceKindChoices!
text - String
visibility - WmsWarehouseEvidenceVisibilityChoices!
capturedAt - DateTime
mediaUrl - String
Example
{
  "id": "4",
  "kind": "IMAGE",
  "text": "abc123",
  "visibility": "INTERNAL",
  "capturedAt": "2007-12-03T10:15:30Z",
  "mediaUrl": "abc123"
}

WarehouseEvidenceKind

Description

An enumeration.

Values
Enum Value Description

IMAGE

VIDEO

NOTE

DOCUMENT

Example
"IMAGE"

WarehouseMediaInput

Fields
Input Field Description
kind - WarehouseEvidenceKind!
storageKey - String!
mimeType - String
sizeBytes - Int
checksum - String
capturedAt - DateTime
Example
{
  "kind": "IMAGE",
  "storageKey": "abc123",
  "mimeType": "xyz789",
  "sizeBytes": 123,
  "checksum": "abc123",
  "capturedAt": "2007-12-03T10:15:30Z"
}

WarehouseNoteInput

Fields
Input Field Description
text - String!
capturedAt - DateTime
Example
{
  "text": "abc123",
  "capturedAt": "2007-12-03T10:15:30Z"
}

WarehouseType

Fields
Field Name Description
id - ID!
name - String!
isShopifyManaged - Boolean
address - AddressType
Example
{
  "id": "4",
  "name": "abc123",
  "isShopifyManaged": true,
  "address": AddressType
}

WebhookEventType

Description

An enumeration.

Values
Enum Value Description

RETURN_CREATED

RETURN_UPDATED

Example
"RETURN_CREATED"

WithdrawalManualResolutionReason

Description

An enumeration.

Values
Enum Value Description

INTERCEPTED_OR_CANCELLED_OUTSIDE_RETURNZAP

REFUNDED_OUTSIDE_RETURNZAP

CONVERTED_TO_RETURN_OUTSIDE_RETURNZAP

OTHER

Example
"INTERCEPTED_OR_CANCELLED_OUTSIDE_RETURNZAP"

WmsReceiptItemDamageSourceChoices

Description

An enumeration.

Values
Enum Value Description

IN_TRANSIT

In transit

BY_CUSTOMER

By customer

UNKNOWN

Unknown
Example
"IN_TRANSIT"

WmsReceiptItemInspectionGradeChoices

Description

An enumeration.

Values
Enum Value Description

A

New

B

Resellable after repack

C

Damaged or used

D

Unsellable

WRONG_ITEM

Wrong item
Example
"A"

WmsReceiptItemRecommendedDispositionChoices

Description

An enumeration.

Values
Enum Value Description

RESTOCK

Restock

HOLD_FOR_CS

Hold for customer service

REPACK_REFURBISH

Repack or refurbish

DONATE_RECYCLE_DISPOSE

Donate, recycle, or dispose

RETURN_TO_VENDOR

Return to vendor
Example
"RESTOCK"

WmsReceiptItemStatusChoices

Description

An enumeration.

Values
Enum Value Description

RECEIVED

Received

REJECTED

Rejected

NOT_RECEIVED

Not received

PARTIAL

Partial

EXTRA

Extra

SUPERSEDED

Superseded
Example
"RECEIVED"

WmsReceiptStatusChoices

Description

An enumeration.

Values
Enum Value Description

DRAFT

Draft

FINALIZED

Finalized

SUPERSEDED

Superseded

VOIDED

Voided
Example
"DRAFT"

WmsWarehouseEvidenceKindChoices

Description

An enumeration.

Values
Enum Value Description

IMAGE

Image

VIDEO

Video

NOTE

Note

DOCUMENT

Document
Example
"IMAGE"

WmsWarehouseEvidenceVisibilityChoices

Description

An enumeration.

Values
Enum Value Description

INTERNAL

Internal

MERCHANT_VISIBLE

Merchant visible

CUSTOMER_VISIBLE

Customer visible
Example
"INTERNAL"

ZendeskAccountType

Fields
Field Name Description
isConnected - Boolean!
subdomain - String
authorizationToken - String
Example
{
  "isConnected": false,
  "subdomain": "abc123",
  "authorizationToken": "abc123"
}