# Resolve API Reference

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

Legacy (v2) API documentation: [https://app.resolvepay.com/docs/api/v2](https://app.resolvepay.com/docs/api/v2)


Version: V5

## Servers

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

## Security

### basicAuth

[object Object]

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 API Reference](https://docs.resolvepay.com/_bundle/merchant-api/@v5/openapi.yaml)

## Introduction

## Access Keys

 - [POST /access-keys/token](https://docs.resolvepay.com/merchant-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

 - [Webhook Event Structure](https://docs.resolvepay.com/merchant-api/openapi/webhooks/webhook-event-structure.md): ## Webhook Event Structure All webhook events follow a consistent structure: ```json { "id": "4ecbe7f9e8c1c9092c000027", "object": "invoice", "type": "invoice.created", "occurred_at": "2021-0
 - [Supported Event Types](https://docs.resolvepay.com/merchant-api/openapi/webhooks/supported-event-types.md): ## Supported Event Types
 - [Invoice Events](https://docs.resolvepay.com/merchant-api/openapi/webhooks/invoice-events.md): ### 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
 - [Customer Events](https://docs.resolvepay.com/merchant-api/openapi/webhooks/customer-events.md): ### 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 custom
 - [Order Events](https://docs.resolvepay.com/merchant-api/openapi/webhooks/order-events.md): ### Order Events - **`order.created`** - Triggered when a new order record is created. - **`order.updated`** - Triggered when an order is updated.
 - [Payment Events](https://docs.resolvepay.com/merchant-api/openapi/webhooks/payment-events.md): ### Payment Events - **`payment.created`** - Triggered when a new payment record is created. - **`payment.status_changed`** - Triggered when the status of a payment changes.
 - [Payout Events](https://docs.resolvepay.com/merchant-api/openapi/webhooks/payout-events.md): ### 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 transi
 - [Verifying Webhook Signatures](https://docs.resolvepay.com/merchant-api/openapi/webhooks/verifying-webhook-signatures.md): ## 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` heade
 - [JavaScript Example](https://docs.resolvepay.com/merchant-api/openapi/webhooks/javascript-example.md): ### JavaScript Example ```javascript const crypto = require('crypto'); function verifyWebhookSignature(payload, signature, secret) { const computedSignature = crypto .createHmac('sha256', secr
 - [Retry Policy](https://docs.resolvepay.com/merchant-api/openapi/webhooks/retry-policy.md): ## 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 f
 - [Best Practices](https://docs.resolvepay.com/merchant-api/openapi/webhooks/best-practices.md): ## 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 asy
 - [GET /webhooks](https://docs.resolvepay.com/merchant-api/openapi/webhooks/listwebhookendpoints.md): Returns a list of all configured webhook endpoints for the merchant account.
 - [POST /webhooks](https://docs.resolvepay.com/merchant-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 /webhooks](https://docs.resolvepay.com/merchant-api/openapi/webhooks/deletewebhookendpoints.md): Delete a webhook endpoint and all its event subscriptions.
## Invoices

 - [GET /invoices](https://docs.resolvepay.com/merchant-api/openapi/invoices/listinvoices.md): Return a list of invoices.
 - [POST /invoices](https://docs.resolvepay.com/merchant-api/openapi/invoices/createinvoice.md): Create a new advanced or non-advanced invoice with the desired terms.
 - [GET /invoices/{invoice_id}](https://docs.resolvepay.com/merchant-api/openapi/invoices/fetchinvoice.md): Retrieve an existing invoice by its ID.
 - [PUT /invoices/{invoice_id}](https://docs.resolvepay.com/merchant-api/openapi/invoices/updateinvoice.md): Update an invoice.
 - [DELETE /invoices/{invoice_id}](https://docs.resolvepay.com/merchant-api/openapi/invoices/deleteinvoice.md): Delete an invoice.
 - [PUT /invoices/{invoice_id}/send](https://docs.resolvepay.com/merchant-api/openapi/invoices/sendinvoice.md): Send an invoice to the customer.
 - [POST /invoices/{invoice_id}/void](https://docs.resolvepay.com/merchant-api/openapi/invoices/voidinvoice.md): Void an invoice.
 - [POST /invoices/{invoice_id}/cancel](https://docs.resolvepay.com/merchant-api/openapi/invoices/cancelinvoice.md): Cancel an invoice.
## Customers

 - [GET /customers](https://docs.resolvepay.com/merchant-api/openapi/customers/listcustomers.md): Return a list of customers.
 - [POST /customers](https://docs.resolvepay.com/merchant-api/openapi/customers/createcustomer.md): Create a customer.
 - [GET /customers/{customer_id}](https://docs.resolvepay.com/merchant-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'` a
 - [PUT /customers/{customer_id}](https://docs.resolvepay.com/merchant-api/openapi/customers/updatecustomer.md): Update a customer.
 - [POST /customers/{customer_id}/credit-check](https://docs.resolvepay.com/merchant-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_r
 - [POST /customers/{customer_id}/enroll](https://docs.resolvepay.com/merchant-api/openapi/customers/enroll-a-customer.md): <div style="border-sizing: border-box; padding: 10px; background-color: rgba(212, 31, 28, 0.07); color: rgb(212, 31, 28);"> This legacy enrollment endpoint is no longer supported. Every call returns <
## Charges

 - [GET /charges](https://docs.resolvepay.com/merchant-api/openapi/charges/listcharges.md): Return a paginated list of charges.
 - [GET /charges/{charge_id}](https://docs.resolvepay.com/merchant-api/openapi/charges/fetchcharge.md): Retrieve an existing charge by its ID.
 - [PUT /charges/{charge_id}](https://docs.resolvepay.com/merchant-api/openapi/charges/updatecharge.md): Update a charge.
 - [POST /charges/{charge_id}/capture](https://docs.resolvepay.com/merchant-api/openapi/charges/capturecharge.md): Capture an authorized charge.
 - [POST /charges/{charge_id}/cancel](https://docs.resolvepay.com/merchant-api/openapi/charges/cancelcharge.md): Cancel an existing charge.
## Orders

 - [GET /orders](https://docs.resolvepay.com/merchant-api/openapi/orders/listorders.md): Return a paginated list of orders.
 - [POST /orders](https://docs.resolvepay.com/merchant-api/openapi/orders/createorder.md): Authorize a new order for a customer.
 - [GET /orders/{order_id}](https://docs.resolvepay.com/merchant-api/openapi/orders/fetchorder.md): Retrieve an existing order by its ID.
 - [PUT /orders/{order_id}](https://docs.resolvepay.com/merchant-api/openapi/orders/updateorder.md): Update an authorized order's amount, order number, PO number, line items, or metadata. At least one field must be provided.
 - [POST /orders/{order_id}/capture](https://docs.resolvepay.com/merchant-api/openapi/orders/captureorder.md): Capture an authorized order. An order can be captured multiple times up to the full authorized amount.
 - [POST /orders/{order_id}/cancel](https://docs.resolvepay.com/merchant-api/openapi/orders/cancelorder.md): Cancel an authorized order, releasing any remaining authorized amount. If the order has been partially captured, only the uncaptured portion of the authorization is canceled — previously captured amou
## Payouts

 - [GET /payouts](https://docs.resolvepay.com/merchant-api/openapi/payouts/listpayouts.md)
 - [GET /payouts/{payout_id}](https://docs.resolvepay.com/merchant-api/openapi/payouts/getpayout.md)
## Payout Transactions

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

 - [GET /payments](https://docs.resolvepay.com/merchant-api/openapi/payments/listpayments.md): Return a list of payments.
 - [POST /payments](https://docs.resolvepay.com/merchant-api/openapi/payments/createpayment.md): Trigger a forward payment against an advanced invoice. Use this endpoint when the customer has already paid you outside Resolve and you want Resolve to collect its portion from the forwarded amount.
 - [GET /payments/{payment_id}](https://docs.resolvepay.com/merchant-api/openapi/payments/fetchpayment.md): Retrieve an existing payment by its ID.
## Credit Notes

 - [GET /credit-notes](https://docs.resolvepay.com/merchant-api/openapi/credit-notes/listcreditnotes.md): Return a list of credit notes.
 - [POST /credit-notes](https://docs.resolvepay.com/merchant-api/openapi/credit-notes/createcreditnote.md): Create a new credit note.
 - [POST /credit-notes/{credit_note_id}/void](https://docs.resolvepay.com/merchant-api/openapi/credit-notes/voidcreditnote.md): Request to void an existing credit note.
 - [GET /credit-notes/{credit_note_id}](https://docs.resolvepay.com/merchant-api/openapi/credit-notes/fetchcreditnote.md): Retrieve an existing credit note by its ID.
## Shipments

 - [Supported Couriers](https://docs.resolvepay.com/merchant-api/openapi/shipments/supported-couriers.md): ## 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](https://docs.resolvepay.com/merchant-api/openapi/shipments/major-carriers.md): ### Major Carriers - `fedex` - FedEx® - `ups` - UPS - `usps` - USPS - `dhl` - DHL Express - `dhl-api` - DHL
 - [Complete List of Supported Couriers](https://docs.resolvepay.com/merchant-api/openapi/shipments/complete-list-of-supported-couriers.md): ### Complete List of Supported Couriers `fedex`, `ups`, `usps`, `17postservice`, `2go`, `2ebox`, `360lion`, `3jmslogistics`, `4-72`, `4px`, `shipstoresoftware-webhook`, `99minutos`, `aduiepyle`, `a1po
 - [GET /shipments](https://docs.resolvepay.com/merchant-api/openapi/shipments/listshipments.md)
 - [POST /shipments](https://docs.resolvepay.com/merchant-api/openapi/shipments/createshipment.md)
 - [GET /shipments/{shipment_id}](https://docs.resolvepay.com/merchant-api/openapi/shipments/getshipment.md)
 - [PUT /shipments/{shipment_id}](https://docs.resolvepay.com/merchant-api/openapi/shipments/updateshipment.md)
 - [DELETE /shipments/{shipment_id}](https://docs.resolvepay.com/merchant-api/openapi/shipments/deleteshipment.md)
 - [POST /shipments/{shipment_id}/sync](https://docs.resolvepay.com/merchant-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 shippin
