# Resolve Partners API Reference

API Support: [accounts@resolvepay.com](mailto:accounts@resolvepay.com?subject=API)


Version: partners-v1

## Servers

Sandbox server
```
https://app-sandbox.resolvepay.com/api
```

## Security

### basicAuth

HTTP Basic Auth using `merchant_id` as username and the merchant secret key as password.

Type: http
Scheme: basic

### bearerAuth

Bearer token authentication using an OAuth access token minted for an API access key created in Merchant Dashboard.

Type: http
Scheme: bearer
Bearer Format: JWT

## Download OpenAPI description

[Resolve Partners API Reference](https://docs.resolvepay.com/_bundle/partners-api/openapi.yaml)

## Access Keys

OAuth access keys are created in Merchant Dashboard and can be exchanged for bearer tokens.

Use the `/access-keys/token` endpoint to mint a bearer token from a valid `client_id` and `client_secret`.


### Mint an access token

 - [POST /access-keys/token](https://docs.resolvepay.com/partners-api/openapi/access-keys/issueaccesskeytoken.md): Exchange an OAuth access key for a bearer token by providing its client_id and client_secret in the request body.

## Webhooks

Webhooks allow you to receive real-time notifications about events occurring for your sub-merchants. When an event occurs for any of your sub-merchants, Resolve sends an HTTP POST request to your configured webhook endpoint with details about the event.

## Webhook Event Structure

All webhook events follow a consistent structure:

```json
{
  "id": "4ecbe7f9e8c1c9092c000027",
  "object": "invoice",
  "type": "invoice.created",
  "occurred_at": "2021-05-20T09:23:53+00:00",
  "data": {
    "id": "RH5fF9aeQ",
    "merchant_id": "MER456789"
  }
}
```

The `data.id` field contains the ID of the object related to the event. You can use this ID to fetch the full object via the corresponding API endpoint.

The `data.merchant_id` field indicates the ID of the sub-merchant the event occurred for. This allows you to identify which sub-merchant's data triggered the webhook.

## Supported Event Types

### Invoice Events
- **`invoice.created`** - Triggered when a new invoice record is created.
- **`invoice.balance_updated`** - Triggered when the outstanding balance of an invoice changes (for example, when a payment or credit note is applied).

### Customer Events
- **`customer.created`** - Triggered when a new customer record is created.
- **`customer.status_updated`** - Triggered when a customer's status changes (for example, when a customer is submitted for a credit check or enrolled).
- **`customer.line_amount_updated`** - Triggered when a customer's credit limit amount is updated.
- **`customer.advance_rate_updated`** - Triggered when a customer's advance rate percentage is updated.
- **`customer.credit_decision_created`** - Triggered when a new credit decision is created for a customer.

### Payout Events
- **`payout.created`** - Triggered when a new payout record is created.
- **`payout.status_changed`** - Triggered when the status of a payout changes (for example, pending, in transit, paid).

### Merchant Events
- **`merchant.underwriting_completed`** - Triggered when underwriting reaches a terminal decision for a sub-merchant.

## Verifying Webhook Signatures

To ensure webhook requests are genuine and coming from Resolve, you should verify the webhook signature. Resolve includes a signature in the `x-webhook-signature` header of each webhook request.

### JavaScript Example

```javascript
const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const computedSignature = crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(payload))
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(computedSignature)
  );
}

// Usage in Express.js
app.post('/webhooks', express.json(), (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const isValid = verifyWebhookSignature(req.body, signature, process.env.WEBHOOK_SECRET);

  if (!isValid) {
    return res.status(401).send('Invalid signature');
  }

  // Process the webhook event
  const event = req.body;
  console.log('Received event:', event.type);

  res.status(200).send('Webhook received');
});
```

## Retry Policy

If your webhook endpoint doesn't respond successfully (non-2xx status code or connection error), Resolve will automatically retry sending the webhook notification. The retry schedule follows an exponential backoff pattern:

- **1st retry**: 30 seconds after the initial attempt
- **2nd retry**: 90 seconds after the 1st retry
- **3rd retry**: 270 seconds (4.5 minutes) after the 2nd retry
- **4th retry**: 810 seconds (13.5 minutes) after the 3rd retry
- **5th retry**: 2430 seconds (40.5 minutes) after the 4th retry

After the 5th unsuccessful attempt, Resolve will stop retrying and the webhook delivery will be marked as failed.

## Best Practices

- Always verify webhook signatures to ensure the request is from Resolve
- Respond with a `200` status code as quickly as possible to acknowledge receipt
- Process webhook events asynchronously if they require time-intensive operations
- Implement idempotency on your endpoint to handle duplicate events from retries
- Use the event `id` to track which events you've already processed


### List webhook endpoints

 - [GET /webhooks](https://docs.resolvepay.com/partners-api/openapi/webhooks/listwebhookendpoints.md): Returns a list of all configured webhook endpoints for your account.

### Create or update webhook endpoints

 - [POST /webhooks](https://docs.resolvepay.com/partners-api/openapi/webhooks/upsertwebhookendpoints.md): Create a new webhook endpoint or update an existing one. If an endpoint with the same URL already exists, it will be updated with the new event subscriptions.

### Delete webhook endpoints

 - [DELETE /webhooks](https://docs.resolvepay.com/partners-api/openapi/webhooks/deletewebhookendpoints.md): Delete a webhook endpoint and all its event subscriptions.

## Invoices

An invoice represents the business transaction between a sub-merchant and a customer. In Resolve, an invoice must be tied to both a customer and a sub-merchant. An advance can be taken on the invoice.

When creating an invoice, the `merchant_id` field is required and must reference a valid sub-merchant under your partner account.

For an advance to be taken on the invoice, a PDF of the invoice must be uploaded and the associated customer must be approved and have available credit for the amount of the invoice.


### List all invoices

 - [GET /invoices](https://docs.resolvepay.com/partners-api/openapi/invoices/listinvoices.md): Return a list of invoices across your sub-merchants.

### Create an invoice

 - [POST /invoices](https://docs.resolvepay.com/partners-api/openapi/invoices/createinvoice.md): Create a new advanced or non-advanced invoice for a sub-merchant with the desired terms. The merchant_id field is required and must reference a valid sub-merchant under your partner account.

### Fetch an invoice

 - [GET /invoices/{invoice_id}](https://docs.resolvepay.com/partners-api/openapi/invoices/fetchinvoice.md): Retrieve an existing invoice by its ID.

### Update an invoice

 - [PUT /invoices/{invoice_id}](https://docs.resolvepay.com/partners-api/openapi/invoices/updateinvoice.md): Update an invoice.

### Delete an invoice

 - [DELETE /invoices/{invoice_id}](https://docs.resolvepay.com/partners-api/openapi/invoices/deleteinvoice.md): Delete an invoice.

### Send an invoice

 - [PUT /invoices/{invoice_id}/send](https://docs.resolvepay.com/partners-api/openapi/invoices/sendinvoice.md): Send an invoice to the customer.

### Void an invoice

 - [POST /invoices/{invoice_id}/void](https://docs.resolvepay.com/partners-api/openapi/invoices/voidinvoice.md): Void an invoice.

### Cancel an invoice

 - [POST /invoices/{invoice_id}/cancel](https://docs.resolvepay.com/partners-api/openapi/invoices/cancelinvoice.md): Cancel an invoice.

## Customers

A customer represents a company that does business with your sub-merchants. For larger companies, there may be several users with access to the customer account that can make purchases with their credit line. For smaller companies, a customer may represent a single individual. Retrieve a customer to get a summary of their total credit line and available credit balance.

**Important:** The behavior of the `merchant_id` parameter depends on your partner type:

- **Single-merchant partners**: The `merchant_id` field is **required** when creating a customer, and must reference a valid sub-merchant under your partner account. The `merchant_id` field will be included in responses and can be used as a filter when listing customers. Both invoices and customers belong to the sub-merchant.
- **Marketplace partners**: The `merchant_id` field is **not accepted** when creating a customer — customers belong to the marketplace (partner) itself. The `merchant_id` field will not be present in responses or available as a filter. Invoices still belong to sub-merchants.


### List all customers

 - [GET /customers](https://docs.resolvepay.com/partners-api/openapi/customers/listcustomers.md): Return a list of customers. For single-merchant partners, this returns customers belonging to your sub-merchants. For marketplace partners, this returns customers belonging to your marketplace.

### Create a customer

 - [POST /customers](https://docs.resolvepay.com/partners-api/openapi/customers/createcustomer.md): Create a customer

### Fetch a customer

 - [GET /customers/{customer_id}](https://docs.resolvepay.com/partners-api/openapi/customers/fetchcustomer.md): Retrieve an existing customer by its ID.

A successful response to this request will be the Customer entity.
If customer enrollment is required, we will return net_terms_status='pending_enrollment' and a not null net_terms_enrollment_url.
If customer enrollment is not required (customer applied through a direct application), we will return net_terms_status='enrolled'.

### Update a customer

 - [PUT /customers/{customer_id}](https://docs.resolvepay.com/partners-api/openapi/customers/updatecustomer.md): Update a customer

### Request a credit check

 - [POST /customers/{customer_id}/credit-check](https://docs.resolvepay.com/partners-api/openapi/customers/requestcustomercreditcheck.md): You may request a credit check on a customer who hasn't previously been credit checked.
This endpoint returns no content. You'll be able to see the date you requested the credit check
(credit_check_requested_at) and credit_status updated to pending or, in the case of an instant decision,
approved or declined by fetching the Customer entity.

A hold credit status represents when a customer's credit account is overdue.
A deactivated credit status represents when a customer's credit account has been deactivated.

When a customer's credit_status is approved - the customer's net_terms_status represents the current state of a customer's enrollment in the approved net terms offer.
See #fetchCustomer for more details.

Note: Except for instant decisions, a decision should be reflected on the Customer entity within 1 business day.

## Payouts

A Payout is a transfer of money between Resolve and either a sub-merchant or the partner directly, depending on who the payout receiver is. The `merchant_id` field on a payout can represent either the partner themselves or one of their sub-merchants.


### List Payouts

 - [GET /payouts](https://docs.resolvepay.com/partners-api/openapi/payouts/listpayouts.md)

### Get a Payout

 - [GET /payouts/{payout_id}](https://docs.resolvepay.com/partners-api/openapi/payouts/getpayout.md)

## Payout Transactions

Payout Transactions are the individual transactions like customer payments, Resolve advances, forwarded payments, etc. that are rolled into a Payout for a sub-merchant or the partner. Each Payout is the sum of one or more transactions. Note that certain fields are only relevant to certain transaction types - e.g.: a Payout Transaction of type `monthly_fee` will have both `customer_id` and `invoice_id` set to `null`.


### List Payout Transactions

 - [GET /payout-transactions](https://docs.resolvepay.com/partners-api/openapi/payout-transactions/listpayouttransactions.md)

### Get a Payout Transaction

 - [GET /payout_transactions/{payout_transaction_id}](https://docs.resolvepay.com/partners-api/openapi/payout-transactions/getpayouttransaction.md)

## Payments

A payment represents a transaction where a customer pays towards their invoices with a sub-merchant. When a payment is made to Resolve, the customer's available credit balance is increased by the amount of the payment. Payments can be made via various methods including ACH, credit card, check, or wire transfer. Each payment can be applied to one or more invoices.

As a partner, you can also create forwarded payments on behalf of your sub-merchants. The payment will be forwarded from the bank account of the entity that receives payouts — if the payout receiver is the partner, the partner's bank account will be used; otherwise, the sub-merchant's bank account will be used.


### List payments

 - [GET /payments](https://docs.resolvepay.com/partners-api/openapi/payments/listpayments.md): Return a list of payments across your sub-merchants.

### Create a payment

 - [POST /payments](https://docs.resolvepay.com/partners-api/openapi/payments/createpayment.md): Create a forwarded payment for an invoice belonging to one of your sub-merchants.

The payment will be forwarded from the bank account of the entity that receives payouts. If the payout receiver is the partner, the partner's bank account will be used. If the payout receiver is the sub-merchant, the sub-merchant's bank account will be used.

The invoice must be sent, and the payment amount must not exceed the invoice's outstanding balance.

### Fetch a payment

 - [GET /payments/{payment_id}](https://docs.resolvepay.com/partners-api/openapi/payments/fetchpayment.md): Retrieve an existing payment by its ID.

## Credit Notes

Credit Notes are issued to customers of your sub-merchants to reduce the amount they owe. As a partner, you can manage credit notes across all your sub-merchants.


### List credit notes

 - [GET /credit-notes](https://docs.resolvepay.com/partners-api/openapi/credit-notes/listcreditnotes.md): Return a list of credit notes.

### Create a credit note

 - [POST /credit-notes](https://docs.resolvepay.com/partners-api/openapi/credit-notes/createcreditnote.md): Create a new credit note.

### Request to void a credit note

 - [POST /credit-notes/{credit_note_id}/void](https://docs.resolvepay.com/partners-api/openapi/credit-notes/voidcreditnote.md): Request to void an existing credit note.

### Fetch a credit note

 - [GET /credit-notes/{credit_note_id}](https://docs.resolvepay.com/partners-api/openapi/credit-notes/fetchcreditnote.md): Retrieve an existing credit note by its ID.

## Merchants

Merchant-scoped operations for managing sub-merchant resources.

The merchant document upload endpoint creates a document record and starts transfer into Resolve-managed storage for validation.


### List Merchants

 - [GET /merchants](https://docs.resolvepay.com/partners-api/openapi/merchants/listmerchants.md): Returns sub-merchants under the authenticated partner account.

### Create Merchant

 - [POST /merchants](https://docs.resolvepay.com/partners-api/openapi/merchants/createmerchant.md): Creates a sub-merchant under the authenticated partner and starts underwriting lifecycle tracking.

For the partner API contract, id is server-managed and is not accepted in the request payload.
Resolve derives/assigns the merchant identifier from merchant naming inputs (dba_name or legal_business_name) with random alphanumeric fallback for collisions.

### Get Merchant

 - [GET /merchants/{merchant_id}](https://docs.resolvepay.com/partners-api/openapi/merchants/getmerchant.md): Retrieves a single sub-merchant belonging to the authenticated partner.

### Update Merchant

 - [PUT /merchants/{merchant_id}](https://docs.resolvepay.com/partners-api/openapi/merchants/updatemerchant.md): Updates a sub-merchant belonging to the authenticated partner.

For the partner API contract, id is immutable and cannot be updated via request payload.

Post-underwriting restrictions apply for merchants with terminal underwriting outcomes.

Fields that are not updateable after underwriting is complete:
- legal_business_name
- business_address
- business_email
- business_phone
- entity_type
- formation_state
- ein
- annual_revenue
- years_in_business
- industry
- authorized_signer
- bank_account_number
- bank_routing_number
- beneficial_owners (existing owners are not editable)

Fields that are updateable after underwriting is complete:
- dba_name
- business_description
- website
- estimated_monthly_net_terms_volume
- existing_net_terms_info
- metadata
- plaid_access_token
- additional_beneficial_owners (add-only)

Document additions remain supported via the document endpoint:
- bank_statements
- financial_documents

### List Merchant Documents

 - [GET /merchants/{merchant_id}/documents](https://docs.resolvepay.com/partners-api/openapi/merchants/listmerchantdocuments.md): Returns document presence and validation lifecycle status for a specific sub-merchant.

This endpoint is metadata-only and does not return file bodies or signed retrieval URLs.

### Create a Merchant Document Upload Request

 - [POST /merchants/{merchant_id}/documents](https://docs.resolvepay.com/partners-api/openapi/merchants/createmerchantdocumentuploadrequest.md): Creates a new merchant document record for a sub-merchant and initializes document transfer to the Resolve document validation service.

The transfer method is determined by request shape:
- If download_url is provided, Resolve queues a background download job (transfer_method=download_url).
- Otherwise, Resolve returns a presigned S3 upload URL (transfer_method=presigned_upload).

The validation profile is endpoint-managed by Resolve and cannot be overridden in the request.

## Shipments

A shipment represents the fulfillment of goods or services for an invoice of a sub-merchant. Track shipments to monitor delivery status and fulfillment progress. Shipments can be fulfilled through various methods including shipping providers, self-delivery, customer pickup, or for services-only transactions.

## Supported Couriers

While any courier value can be accepted for the `shipment_courier` field, instant verification through the sync endpoint is supported for the following couriers:

### Major Carriers
- `fedex` - FedEx®
- `ups` - UPS
- `usps` - USPS
- `dhl` - DHL Express
- `dhl-api` - DHL

### Complete List of Supported Couriers

`fedex`, `ups`, `usps`, `17postservice`, `2go`, `2ebox`, `360lion`, `3jmslogistics`, `4-72`, `4px`, `shipstoresoftware-webhook`, `99minutos`, `aduiepyle`, `a1post`, `a2b-ba`, `aaa-cooper`, `abf`, `acilogistix`, `acscourier`, `acsworldwide`, `ads`, `adsone`, `aex`, `afllog-ftp`, `arihantcourier`, `air21`, `aitworldwide-sftp`, `aitworldwide-api`, `alljoy`, `amsegroup`, `ancdelivers-sftp`, `anserx`, `ao-deutschland`, `ao-courier`, `ao-courier-webhook`, `apc-overnight`, `apc-overnight-connum`, `apc`, `apg`, `ark-logistics`, `ase`, `asigna`, `asm`, `ata`, `atshealthcare`, `atshealthcare-reference`, `activos24-api`, `aderonline`, `adicional`, `aeronet`, `test-courier`, `agediss-sftp`, `agility`, `airmee-webhook`, `airpak-express`, `airspeed`, `allegro`, `alliedexpress`, `allied-express-ftp`, `alphafreight-webhook`, `always-express`, `amazon`, `awest`, `an-post`, `andreani-api`, `anicamboxexpress`, `anjun`, `anteraja`, `aoyue`, `aquiline`, `aramex`, `aramex-api`, `fastway-au-api`, `fastway-au`, `araskargo`, `arco-spedizioni`, `argents-webhook`, `arrow-api`, `arrowxl`, `asendia-de`, `asendia-hk`, `asendia`, `asendia-uk`, `asendia-usa`, `agsystems`, `associated-couriers`, `asyadexpress`, `auexpress`, `australia-post`, `australia-post-api`, `austrian-post`, `austrian-post-registered`, `averitt`, `axlehire`, `axlehire-ftp`, `bh-worldwide`, `b2ceurope`, `bdmnet`, `bjshomedelivery`, `bjshomedelivery-ftp`, `brt-it`, `brt-it-api`, `brt-it-parcelid`, `brt-it-sender-ref`, `btxglobal-ftp`, `buffalo`, `barqexp`, `barsan`, `belpost`, `ibeone`, `bert-fr`, `800bestex`, `besttransport-sftp`, `bestwayparcel`, `bettertrucks`, `bigsmart`, `biocair-ftp`, `birdsystem`, `bleckmann-sftp`, `blinklastmile`, `bluex`, `bluestar`, `bluecare`, `bluedart-api`, `bluedart`, `bneed`, `bollore-logistics-sftp`, `bollore-logistics`, `bombinoexp`, `bomi-br-api`, `bomi`, `bond`, `bondscouriers`, `borderexpress`, `borderless360-webhook`, `boxc`, `box-berry`, `boxcheck-api`, `bpost`, `bpost-api`, `bpost-international`, `braspress-web`, `braunsexpress`, `brazil-correios`, `bring`, `bringer`, `brouwer-transport`, `budbee-webhook`, `bgpost`, `burd`, `cchezvous-sftp`, `cae-delivers`, `cbl-logistica`, `cbl-logistica-api`, `cdek`, `cdek-tr`, `cdldelivers`, `cdldelivers-api`, `ceva`, `ceva-webhook`, `ceva-tracking`, `cfl-logistics`, `cgs-express`, `parcll`, `cj-malaysia-international`, `cj-gls`, `cj-korea-thai`, `cjlogistics`, `cj-hk-international`, `cjpacket`, `cj-philippines`, `ckb-webhook`, `cle-logistics`, `cn-logistics`, `cnexps`, `crlexpress`, `cse`, `ctc-express`, `tourline`, `cacesa`, `cago`, `cainiao`, `cambodia-post`, `canada-post`, `canpar`, `capital`, `cpex`, `cargopartner-api`, `carriers`, `carry-flap`, `castleparcels`, `celeritas-ftp`, `cello-square`, `champion-logistics`, `chazki`, `chienventure-webhook`, `chilexpress-webhook`, `china-ems`, `china-post`, `chitchats`, `choirexpress`, `chronopost-france-webhook`, `chronopost-france`, `chronopost-portugal`, `ec-firstclass`, `city56-webhook`, `citylinkexpress`, `clevy-links`, `clicklink-sftp`, `cloudwish-asia`, `colis-prive`, `colissimo`, `collectplus`, `collectco`, `com1express`, `comet-tech`, `con-way`, `concise-api`, `concise-webhook`, `continental`, `coordinadora`, `coordinadora-api`, `copa-courier`, `cope`, `corporatecouriers-webhook`, `correo-uy`, `correosexpress`, `correosexpress-api`, `spain-correos-es`, `correos-de-mexico`, `costmeticsnow`, `courant-plus`, `courant-plus-api`, `courierit`, `cnwglobal-api`, `courier-plus`, `courierpost`, `couriers-please`, `croshot`, `crossflight`, `cryopdp-ftp`, `cubyn`, `cuckooexpress`, `cyprus-post`, `ceskaposta`, `ceskaposta-api`, `dexpress-webhook`, `dachser-web`, `dachser`, `daiglobaltrack`, `dao365`, `dbschenker-se`, `dbschenker-api`, `dbschenker-b2b`, `dbschenker-iceland-ftp`, `dbschenker-sv`, `ddexpress`, `deliveryontime`, `dex-i`, `dhl-api`, `dhl-reference-api`, `dhl-active-tracing`, `dhl-benelux`, `dhl-sftp`, `dhl`, `dhl-pieceid`, `dhl-freight`, `dhl-pa-api`, `dhl-global-forwarding-api`, `dhl-gt-api`, `dhl-ecommerce-gc`, `dhl-ecommerce-gc-api`, `dhl-hk`, `dhl-ie-sftp`, `dhl-nl`, `dhlparcel-nl`, `dhlparcel-ru`, `dhlparcel-es`, `dhlparcel-uk`, `dhl-poland`, `dhl-es-sftp`, `dhl-es`, `dhl-supplychain-apac`, `dhl-supply-chain-au-sftp`, `dhl-supply-chain-au`, `dhl-supplychain-id`, `dhl-global-mail-asia`, `dhl-global-mail-asia-api`, `dhl-global-mail`, `dhl-global-mail-api`, `dhl-supplychain-in`, `didadi`, `dirmensajeria`, `dksh`, `dmfgroup`, `dms-matrix`, `dnj-express`, `domino`, `dpd`, `dpd-api`, `dpd-at`, `dpd-at-sftp`, `exapaq`, `dpd-de`, `dpd-hk`, `dpd-hungary-web`, `dpd-hungary-ftp`, `dpd-hungary`, `dpd-ireland`, `interlink-express`, `interlink-express-reference`, `dpd-nl-api`, `packs-api`, `dpd-nl`, `dpd-poland`, `dpd-prt`, `dpd-ro`, `dpd-ru-api`, `dpd-ru`, `dpd-sk-sftp`, `dpd-ch-sftp`, `dpd-uk`, `dpd-uk-sftp`, `dpe-express`, `dpe-za`, `dpex`, `szdpex`, `dsv-za-sftp`, `dsv`, `dsv-reference`, `dsv-are-webhook`, `dtd`, `dtdc-au`, `dtdc-express`, `dtdc`, `dx`, `dx-sftp`, `dx-b2b-connum`, `dx-freight`, `daeshin`, `daiichi`, `danniao`, `danske-fragt`, `dashlink-webhook`, `dawnwing`, `dayross`, `dylt`, `dayton-freight`, `dealer-send`, `delhivery-webhook`, `delhivery`, `deliveryourparcel-za`, `deliver-it`, `smartkargo`, `deliveright-webhook`, `deliverr-sftp`, `delnext`, `deltec-courier`, `godependable`, `designertransport-webhook`, `destiny-ftp`, `destiny`, `destiny-webhook`, `detrack`, `detrack-webhook`, `dhl-germany`, `deutsch-post`, `dialogo-logistica-api`, `dialogo-logistica`, `diamondcouriers`, `dimerco`, `directcouriers`, `directcouriers-ftp`, `directfreight-au-ref`, `directlog`, `direx`, `discountpost`, `emega`, `dobropost`, `doordash-webhook`, `doora`, `dynamic-logistics`, `ecms`, `ecoscooting`, `ecexpress`, `efs`, `elta-courier`, `empsexpress`, `ems`, `eu-fleet-solutions`, `myhermes-uk`, `myhermes-uk-api`, `ewe`, `expressone`, `expressone-sv`, `earlybird`, `eastwestcourier-ftp`, `easy-mail`, `easyroutes`, `easyparcel`, `ecargo-asia`, `echo`, `ecofreight`, `ecom-express`, `ekart`, `ekol-api`, `elite-co`, `emirates-post`, `endeavour-delivery`, `energologistic`, `envialia`, `envialia-reference`, `equick-cn`, `eshipping`, `zes-express`, `estafeta`, `estafeta-api`, `estes`, `efwnow-api`, `etomars`, `edf-ftp`, `eurodis`, `europaket-api`, `exelot-ftp`, `expeditors`, `expeditors-api-ref`, `expresssale`, `fan`, `far-international`, `fdsexpress`, `fercam`, `fmx`, `frontdoorcorp`, `fujexp`, `fargood`, `fnf-za`, `fastdespatch`, `fastbox`, `fastrak-th`, `fastship`, `fasttrack`, `aramex-au-api`, `fastway-ireland`, `fastway-nz`, `fastway-za`, `faxecargo`, `fetchr`, `fiege`, `fiege-nl`, `first-flight`, `first-logistics-api`, `firstmile`, `fitzmark-api`, `flashexpress`, `flashexpress-webhook`, `flashexpress-ph-api`, `fleetopticsinc`, `flightlg`, `flipxp`, `fliway-sftp`, `fliway-api`, `flytexpress`, `fonsen`, `forwardair`, `fragilepak-sftp`, `freightquote`, `freterapido`, `fukuyama-sftp`, `fulfilla`, `fulfillmen`, `furdeco`, `gwlogis-api`, `gac-webhook`, `gangbao`, `gba`, `gbs-broker`, `gcx`, `gdex`, `gdpharm-webhook`, `gdpharm`, `gemworldwide`, `geodis-api`, `geodis-sftp`, `geodis-calberson-fr`, `geswl`, `gio-ecourier-api`, `gio-ecourier`, `gls`, `gls-croatia`, `gls-cz`, `gls-slovakia`, `gls-hun-api`, `gls-hun`, `gls-italy-ftp`, `gls-italy`, `dicom`, `gls-netherlands`, `gls-netherlands-webhook`, `gls-netherlands-sftp`, `gls-romania`, `gls-slovenia`, `gls-spain`, `gls-spain-api`, `gls-us`, `gols`, `gps`, `gsi-express`, `gso`, `gtagsm`, `gati-kwe`, `gati-kwe-api`, `gw-world`, `geis`, `gel-express`, `taxydromiki`, `geodis-usa-api`, `gpost`, `ghn`, `goglobalpost`, `globaltranz`, `globavend`, `globegistics`, `glovo`, `general-overnight`, `general-overnight-ftp`, `gopeople`, `gorush`, `gobolt`, `gojavas`, `gojek-webhook`, `grab-webhook`, `grandslamexpress`, `greyhound`, `mazet`, `grupoampm`, `andreani`, `hct-logistics`, `hfd`, `hkd`, `hrparcel`, `hermes-it`, `hsdexpress`, `hsm-global`, `htdkgroup-webhook`, `yycom`, `hubbed`, `hx-express`, `hdb`, `hdb-box`, `hanjin`, `hellenic-post`, `hellmann`, `helthjem`, `helthjem-api`, `heppner-fr`, `heppner`, `hermes-2mann-handling`, `hermes-de`, `hermes-de-ftp`, `hermes-uk-sftp`, `hermes`, `heroexpress`, `hipshipper`, `holisol`, `home-delivery-solutions`, `homelogistics`, `hong-kong-post`, `houndexpress`, `hrvatska-posta`, `hh-exp`, `huantong`, `hunter-express-sftp`, `hunter-express`, `huodull`, `ibventure-webhook`, `icscourier`, `idexpress`, `iml`, `imxmail`, `indopaket`, `intersmarttrans`, `intex-de`, `iordirect`, `postur-is`, `ilyanglogis`, `inpost-uk`, `inpost-paczkomaty`, `intime-ftp`, `india-post`, `india-post-int`, `inexpost`, `nox-nachtexpress`, `nox-nachtexpress-ftp`, `descartes`, `inntralog-sftp`, `instabox-webhook`, `integra2-ftp`, `intel-valley`, `intelcom-ca`, `intelipost`, `international-seur`, `international-seur-api`, `intexpress`, `interparcel-au`, `interparcel-nz`, `interparcel-uk`, `israel-post`, `israel-post-domestic`, `italy-sda`, `ivoy-webhook`, `jtcargo`, `jtexpress`, `jtexpress-ph`, `jtexpress-sg-api`, `simplypost`, `jtexpress-vn`, `j-net`, `jamef-web`, `jcex`, `jd-worldwide`, `jinsung`, `jne`, `jne-api`, `bh-posta`, `js-express`, `jx`, `jam-express`, `janco`, `janio`, `japan-post`, `javit`, `jawar`, `jayonexpress`, `jersey-post`, `jet-ship`, `ltianexp`, `jocom`, `joom-logistics`, `joyingbox`, `jumppoint-api`, `jumppoint`, `k1-express`, `kec`, `abxexpress-my`, `kgmhub`, `kurasi`, `kwe-global`, `kangaroo-my`, `kargomkolay`, `kedaex`, `kerryttc-vn`, `tgx`, `kerry-express-tw-api`, `kerry-logistics`, `kerry-express-th-webhook`, `kerrytj`, `kerry-ecommerce`, `kng`, `logisystems-sftp`, `kinisi`, `kiwi-express-webhook`, `kolay-gelsin`, `komon-express`, `kpost`, `korea-post`, `kronos-webhook`, `kronos`, `ky-express`, `kn`, `kdexp`, `lbcexpress-ftp`, `lbcexpress-api`, `lctbr-api`, `lht-express`, `liccardi-express`, `liefergrun`, `lmparcel`, `ltl`, `la-poste-colissimo`, `lalamove-api`, `lalamove`, `lalamove-plus-api`, `landmark-global-ftp`, `landmark-global`, `lao-post`, `lasership-api`, `lasership`, `latvijas-pasts`, `leader`, `legion-express`, `leman`, `lexship`, `lietuvos-pastas`, `line`, `linkbridge`, `lion-parcel`, `livrapide`, `locus-webhook`, `loggi`, `logisters`, `lwe-hk`, `logoix`, `logwin-logistics`, `logysto`, `lonestar`, `loomis-express`, `lotte`, `luwjistik`, `m-xpress`, `mx-cargo`, `m24logistics-webhook`, `m3logistics`, `mbw`, `collivery`, `metabrasil-webhook`, `misumi-cn`, `mng-kargo`, `mnx`, `mrw-spain`, `mrw`, `mrw-ftp`, `mudita`, `madrooex`, `maergo`, `magyar-posta-api`, `mail-box-etc`, `mailamericas`, `mailplus`, `mailplus-jp`, `mainfreight`, `mainway`, `malaysia-post-posdaftar`, `malaysia-post`, `malca-amit-api`, `malca-amit`, `marken`, `matdespatch`, `matkahuolto`, `medafrica`, `meest`, `fetchr-webhook`, `mensajerosurbanos-api`, `mwd-api`, `mwd`, `aeroflash`, `mexico-redpack`, `mexico-senda-express`, `mhi`, `mikropakket`, `mikropakket-be`, `milkman`, `mobi-br`, `mobiletyreshop-webhook`, `mondialrelay`, `mondialrelay-fr`, `mondialrelay-es`, `moova-webhook`, `moovin`, `morelink`, `morning-express`, `morninglobal`, `mothership-api`, `movianto`, `multientregapanama`, `mydynalogic`, `nmtransfer`, `nacex`, `nacex-spain-reference`, `nacex-spain`, `nox-night-time-express`, `ntilogistics-ftp`, `ntl`, `nytlogistics`, `new-zealand-post`, `naeko-ftp`, `nanjingwoyuan`, `naqel-express`, `national-sameday`, `nationex`, `nationex-ftp`, `nationwide-my`, `navlungo`, `netlogixgroup`, `newzealand-couriers`, `neweggexpress`, `newgistics`, `newgisticsapi`, `nhans-solutions`, `ntlogistics-vn`, `nipost`, `nightline`, `nim-express`, `nimbuspost`, `ninjavan`, `ninjavan-id`, `ninjavan-my`, `ninjavan-thai`, `ninjavan-vn`, `ninjavan-webhook`, `nippon-express-ftp`, `nippon-express`, `norsk-global`, `northline`, `nova-poshta`, `nova-poshtaint`, `nova-poshta-api`, `novofarma-webhook`, `oca-ar`, `ocs`, `ocs-worldwide`, `omlogistics-api`, `osm-worldwide-sftp`, `osm-worldwide`, `otschile`, `oakh`, `obibox`, `okayparcel`, `old-dominion`, `shopolive`, `omniparcel`, `omnirps-webhook`, `omniva-api`, `omniva`, `onway-webhook`, `ontrac`, `ontrac-api`, `oneworldexpress`, `oneclick`, `optimacourier`, `orangeconnex`, `orangeconnex-ftp`, `orangedsinc`, `orangedsinc-ftp`, `overseas-hr`, `ozeparts-shipping`, `p2p-delivery-api`, `trakpak`, `packfleet`, `palexpress`, `parcelone`, `pfcexpress`, `pflogistics`, `pflogistics-ftp`, `phse-api`, `pickupp-mys`, `pickupp-sgp`, `piggyship`, `pil-logistics`, `pittohio`, `taqbin-taiwan`, `mglobal`, `pts`, `ptt-kargo`, `ptt-posta`, `paack-webhook`, `pack-up`, `packaly`, `packeta`, `packlink`, `packs`, `paikeda`, `pakajo`, `palletways`, `pan-asia`, `pandago-api`, `pandago-ph-api`, `pandion`, `pandulogistics`, `panther`, `panther-order-number`, `panther-reference`, `panther-reference-api`, `papa-webhook`, `paper-express`, `paquetexpress`, `parcalogistics-webhook`, `parcalogistics-api`, `pdn-api`, `portless-api`, `parcel-force`, `parcelpost-sg`, `parcelright`, `parceltopost`, `parcel2go`, `parcelpal-webhook`, `parcelpoint`, `parcelinklogistics`, `parcelled-in`, `parcelstars-webhook`, `parcelstars`, `parknparcel`, `passportshipping`, `patheon`, `ppbyb`, `payo`, `payo-webhook`, `pgeon-api`, `pickrr`, `pickup`, `pidge`, `pilot-freight`, `pitney-bowes`, `planzer`, `plycongroup`, `poczta-polska`, `polarspeed`, `pony-express`, `porterex-webhook`, `portugal-ctt`, `portugal-seur`, `pos-indonesia`, `postone`, `post-serbia`, `post-slovenia`, `post56`, `postnl`, `postnl-international`, `postnl-3s`, `danmark-post`, `postnord`, `sweden-posten`, `postplus`, `postaplus`, `poste-italiane`, `poste-italiane-paccocelere`, `posten-norge`, `posti`, `posti-api`, `posta-romana`, `pressiode`, `procarrier`, `promeddelivery`, `productcaregroup-sftp`, `professional-couriers`, `ppl-api`, `ppl`, `purolator`, `purolator-api`, `purolator-international`, `qtrack`, `quantium`, `qintl-api`, `airterra`, `quiqup`, `quiqup-webhook`, `qwintry`, `qxpress`, `raf`, `ramgroup-za`, `ets-express`, `rl-carriers`, `rpd2man`, `rpm`, `rpxlogistics`, `rpxonline`, `rxo-api`, `rzyexpress`, `raben-group`, `raiderex`, `ransa-webhook`, `rcl`, `redjepakketje`, `redur-es`, `relaiscolis`, `rendr-webhook`, `returnmates-webhook`, `rhenus-group`, `rhenus-uk-api`, `rhenus-uk`, `rincos`, `air-canada-global`, `air-canada`, `rixonhk-api`, `roadbull`, `roadrunner-freight`, `roche-internal-sftp`, `rocketparcel`, `routific-webhook`, `royal-mail`, `royal-mail-ftp`, `royal-mail-webhook`, `royalshipments`, `russian-post`, `ruston`, `sailpost`, `sap-express`, `sekologistics`, `seko-sftp`, `showl`, `sf-express-api`, `sf-express`, `sf-express-cn`, `sfb2c`, `sfc`, `sfcservice`, `sglink`, `hotsin-cargo`, `shipa`, `shipter`, `shipxpres`, `shreenandancourier`, `shreetirupati`, `signia-ftp`, `signialogistics-sftp`, `skybox`, `smartcat`, `smsa-express`, `smsa-express-webhook`, `speedex`, `spflylogistica-webhook`, `spoton`, `sprint-pack`, `srekorea`, `srt-transport`, `starken`, `stepforwardfs`, `sto`, `stone3pl`, `szendex`, `safexpress`, `sagawa-api`, `sagawa`, `saia-freight`, `sassy-api`, `saudi-post`, `sberlogistics-ru`, `scotty`, `scudex-express`, `secretlab-webhook`, `seino`, `seino-api`, `sendeo-kargo`, `sending`, `sendit`, `sendle`, `sendy`, `nowlog-api`, `servip-webhook`, `servientrega`, `setel`, `shadowfax`, `dajin`, `ydex`, `kwt`, `sherpa`, `sherpa-webhook`, `ship-it-asia`, `shipentegra`, `shipgate`, `shipglobal-us`, `shipx`, `shipx-api`, `shippie`, `shippify`, `shippit`, `shiprocket`, `spx`, `spx-th`, `shopfans`, `shreeanjanicourier`, `shree-maruti`, `shunbang-express`, `shyplite`, `simpletire-webhook`, `simsglobal`, `singlobal-express`, `singapore-post`, `singapore-speedpost`, `sinotrans`, `siodemka`, `skelton-sftp`, `skyking`, `skyexpress-international`, `skyexpressinternational`, `skynet`, `skynetworldwide`, `skynetworldwide-uae`, `sky-postal`, `skynet-za`, `skynetworldwide-uk`, `sk-posta`, `smooth`, `sntglobal-api`, `sonictl`, `thenile-webhook`, `sapo`, `sefl`, `smtl`, `spanish-seur`, `spanish-seur-ftp`, `spanish-seur-api`, `specialisedfreight-za`, `spectran`, `spedisci`, `speedee`, `speedcouriers-gr`, `speedx`, `speedy`, `speedaf`, `spreetail-api`, `spring-gds`, `stallionexpress`, `star-track-courier`, `star-track-express`, `star-track`, `star-track-webhook`, `starlinks-api`, `statovernight`, `stop-start-api`, `streck-transport`, `sypost`, `superpackline`, `surat-kargo`, `sutton`, `swiship`, `swiship-jp`, `swiss-post`, `swiss-post-ftp`, `swiss-universal-express`, `loginext-webhook`, `t-cat`, `t-cat-api`, `taqbin-hk`, `tasco-my-webhook`, `tck-express`, `tcs-api`, `tcs`, `thedeliverygroup`, `tdn`, `tfm`, `tforce-finalmile`, `tigfreight`, `tipsa`, `tnt`, `tnt-au`, `tntbrasil-web`, `tnt-fr`, `tnt-fr-reference`, `tnt-it`, `tnt-reference`, `tnt-uk`, `tnt-uk-reference`, `tnt-click`, `tarrive`, `thaiparcels`, `trumpcard`, `tvsscs-webhook`, `typ`, `global-express`, `taiwan-post`, `tamergroup-webhook`, `tazmanian-freight`, `teamexpressllc`, `toll-priority`, `team-global-express-webhook`, `teleport-webhook`, `sic-teliway`, `testing-courier`, `thabit-logistics`, `thailand-post`, `thecourierguy`, `customco-api`, `pallet-network`, `thijs-nl`, `thunderexpress`, `tiki`, `tipsa-api`, `tipsa-ref`, `toll-ipec`, `toll-nz`, `tolos`, `tomydoor`, `tonami-ftp`, `esdex`, `topyou`, `tophatterexpress`, `toshi-webhook`, `total-express-api`, `total-express`, `tourline-reference`, `trackon`, `trans-kargo`, `trans2u`, `transmission-nl`, `transvirtual`, `transpak`, `tanet`, `trunkrs-webhook`, `trunkrs`, `trusk`, `tuffnells`, `tuffnells-reference`, `tusklogistics`, `u-envios`, `ubi-logistics`, `ucs`, `uk-mail`, `ucfs-api`, `usf-reddaway`, `uber-webhook`, `ukrposhta`, `uds`, `urb-it`, `courex`, `urbify`, `urgent-cargus`, `virtransport`, `viwo`, `vox`, `value-webhook`, `veho-webhook`, `venipak`, `vesyl`, `vesyl-api`, `viaeurope`, `viaxpress`, `vtfe`, `vnpost`, `vnpost-api`, `viettelpost`, `virtransport-sftp`, `wooyoung-logistics-sftp`, `wspexpress`, `wahana`, `wanbexpress`, `weworldexpress`, `wedo`, `wepost`, `weship-api`, `weship`, `weaship`, `welivery`, `shipwestgate`, `whistl`, `wineshipping`, `wineshipping-webhook`, `wise-express`, `wiseloads`, `wishpost`, `wizmo`, `worldcourier`, `worldnet`, `xdp-uk`, `xdp-uk-reference`, `xgs`, `xl-express`, `xpo-logistics`, `xpo-fr-api`, `xq-express`, `xde-webhook`, `xindus`, `xyy`, `xpedigo`, `xpert-delivery`, `xpost`, `xpressbees`, `xpressen-dk`, `yamato-tw-api`, `ydh-express`, `yrc`, `yto`, `yyexpress`, `yakit`, `taqbin-jp`, `taqbin-sg-api`, `taqbin-sg`, `yanwen`, `yifan`, `elian-post`, `yodel-api`, `yodeldirect`, `yodel`, `yodel-international`, `youparcel`, `yunexpress`, `yunant`, `yundaex`, `yunhuipost`, `yurtici-kargo`, `yusen-sftp`, `yusen`, `zjs-express`, `zto-domestic`, `zto-express`, `zyou`, `cndexpress`, `zajil-express`, `sfplus-webhook`, `zeek`, `zeleris`, `ziingfinalmile`, `zinc`, `zoom-red`, `zoom2u-webhook`, `zuelligpharma-sftp`, `acommerce`, `alphafast`, `cpacket`, `chronodiali-webhook`, `cnwangtong`, `delivere`, `e-courier-webhook`, `ecoutier`, `eparcel-kr`, `epostglobal`, `eshipper`, `etotal`, `etower`, `fairsenden-api`, `forrun`, `gojek`, `hepsijet`, `i-dika`, `i-parcel`, `icumulus-webhook`, `icumulus`, `idexpress-id`, `imile-api`, `ithinklogistics`, `liefery`, `mysendle-api`, `pack-man`, `shopline`, `solistica-api`, `swe`, `trans-o-flex-sftp`, `transligue-web`, `uparcel`, `uship`, `uc56`, `wndirect`, `xmszm`, `ceska-posta`, `winit`, `jd-express`, `jusdasr`, `be`, `padtf`, `pchome-api`, `6ls`, `yingnuo-logistics`, `jindouyun`, `sdh-scm`

**Note:** Using unsupported courier values will still work but verification may be delayed or require manual processing.


### List Shipments

 - [GET /shipments](https://docs.resolvepay.com/partners-api/openapi/shipments/listshipments.md): Return a list of shipments across your sub-merchants.

### Create a Shipment

 - [POST /shipments](https://docs.resolvepay.com/partners-api/openapi/shipments/createshipment.md): Create a shipment for an invoice belonging to one of your sub-merchants.

### Get a Shipment

 - [GET /shipments/{shipment_id}](https://docs.resolvepay.com/partners-api/openapi/shipments/getshipment.md): Retrieve an existing shipment by its ID.

### Update a Shipment

 - [PUT /shipments/{shipment_id}](https://docs.resolvepay.com/partners-api/openapi/shipments/updateshipment.md): Update an existing shipment belonging to one of your sub-merchants.

### Delete a Shipment

 - [DELETE /shipments/{shipment_id}](https://docs.resolvepay.com/partners-api/openapi/shipments/deleteshipment.md): Delete a shipment belonging to one of your sub-merchants.

### Sync Shipment Tracking

 - [POST /shipments/{shipment_id}/sync](https://docs.resolvepay.com/partners-api/openapi/shipments/syncshipmenttracking.md): Synchronizes shipment tracking information by fetching real-time data from the courier using the existing tracking number. This endpoint retrieves the latest tracking updates directly from the shipping provider and performs instant verification of the shipment status, ensuring that the shipment data is current and accurate.

