Shopify Manual Payment XML (GraphQL)
The XML format documented here is used to record manual payments against existing orders in Shopify, via the Import Manual Payments task.
We recommend that the ZynkExternalId field be populated with the unique ID of the payment from the external system. Zynk uses this field to track payments already imported, to prevent duplicate payments being created in Shopify. The 'Prevent Reprocessing' setting is enabled by default on this task.
XML
Any fields not documented below are ignored by the task. Examples of where in the XML the fields should appear are shown in the samples below.
<?xml version="1.0" encoding="utf-8"?>
<ManualPayments>
<ManualPayment>
<ZynkExternalId>5230</ZynkExternalId>
<Order>
<Id>gid://shopify/Order/6022747717721</Id>
<Name>#1116</Name>
</Order>
<Amount>
<Amount>15.00</Amount>
<CurrencyCode>GBP</CurrencyCode>
</Amount>
<PaymentMethodName>Cash on Delivery (COD)</PaymentMethodName>
<ProcessedAt>2025-07-11T14:00:00</ProcessedAt>
</ManualPayment>
</ManualPayments>
In each of the following sections most of the XML has been omitted to make the samples easier to read. The whole structure of the ManualPayments schema is used above as a reference of where fields should be in the object model.
Manual Payment
The following information can be provided at the payment level. The order must have an outstanding balance for the payment to be accepted by Shopify.
| Shopify Field | XML Field | Type | Input | Notes |
|---|---|---|---|---|
| - | ZynkExternalId | string | Optional | Stored in Zynk's internal DB and used in conjunction with the 'Prevent Reprocessing' setting |
| id | Order/Id | string | Dependant | Required if Order/Name is not provided. Must be a GraphQL ID, e.g. gid://shopify/Order/123 |
| id | Order/Name | string | Dependant | Required if Order/Id is not provided, e.g. #1001. Only used to look up the order when Order/Id is empty |
| paymentMethodName | PaymentMethodName | string | Optional | The name of the manual payment method, e.g. Cash on Delivery (COD) |
| processedAt | ProcessedAt | datetime | Optional | When the payment was processed, e.g. 2025-07-11T14:00:00 |
On success, the order returned by Shopify is written to the success file, and the ID of the most recent transaction on the order is stored against the ZynkExternalId.
<?xml version="1.0" encoding="utf-8"?>
<ManualPayments>
<ManualPayment>
<ZynkExternalId>5230</ZynkExternalId>
<Order>
<Name>#1116</Name>
</Order>
<PaymentMethodName>Cash on Delivery (COD)</PaymentMethodName>
<ProcessedAt>2025-07-11T14:00:00</ProcessedAt>
</ManualPayment>
</ManualPayments>
Amount
The amount of the payment. If the Amount element is omitted, Shopify records a payment for the full outstanding balance of the order. Shopify only allows a partial amount to be specified on Shopify Plus stores.
| Shopify Field | XML Field | Type | Input | Notes |
|---|---|---|---|---|
| amount.amount | Amount | decimal | Optional | |
| amount.currencyCode | CurrencyCode | string | Optional | Three letter ISO currency code, e.g. GBP |