{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-api-reference/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"API Reference","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"api-reference","__idx":0},"children":["API Reference"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Resolve provides two APIs for integration:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/merchant-api/openapi"},"children":["Merchant API"]}]}," — Direct merchant integrations for customers, invoices, payouts, and more."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/partners-api/openapi"},"children":["Partners API"]}]}," — Platform and marketplace integrations for managing sub-merchants."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"getting-started","__idx":1},"children":["Getting Started"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Resolve offers both server-side and client-side integrations. This documentation covers the server-side APIs. Refer to our ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.resolvepay.com/docs/"},"children":["e-commerce plugin guides"]}," for details on client-side checkout solutions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is a sandbox API available for testing, which leverages the same data store as your sandbox dashboard. Testing on sandbox won't affect your live data or create money movements."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Base URL"},"children":["Base URL"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://app.resolvepay.com/api/"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sandbox"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://app-sandbox.resolvepay.com/api/"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication","__idx":2},"children":["Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before using the API, ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://resolvepay.com/contact-sales"},"children":["reach out"]}," and get your Resolve account created. This account enables access to the credentials that are necessary for API access."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Resolve supports two authentication methods for the Merchant API and Partners API:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://en.wikipedia.org/wiki/Basic_access_authentication"},"children":["HTTP Basic Auth"]},", where the username is your merchant ID and the password is your secret API key."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://datatracker.ietf.org/doc/html/rfc6749#section-4.4"},"children":["OAuth 2.0 Client Credentials"]},", using an OAuth access key created in Merchant Dashboard to mint a bearer token."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authentication method availability depends on your merchant configuration in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Settings > Integrations > Direct API"]},"."," ","Basic Auth requests require Basic Auth to be enabled. OAuth requests require OAuth to be enabled."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Basic Auth example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl https://app.resolvepay.com/api/customers \\\n  -u <merchant_id>:<secret_key>\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["OAuth bearer token example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl https://app.resolvepay.com/api/customers \\\n  -H \"Authorization: Bearer <access_token>\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For setup and usage guides, see:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/guides/direct-api-access-and-authentication"},"children":["Direct API Access and Authentication"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/guides/mint-an-access-token"},"children":["Mint an Access Token with an OAuth Access Key"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"pagination","__idx":3},"children":["Pagination"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All top-level API resources have support for bulk fetches via \"list\" API methods. These list API methods share a common structure, taking at least two parameters: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["page"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["count"]}," - represents total amount of records, satisfying the request query."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["page"]}," - a multiplier value, which gets applied to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}," and shows what position records are being returned from. For example, if ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit = 20"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["page = 5"]},", then maximum ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["20"]}," records will be returned from position ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["5 * 20 = 100"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}," - maximum amount of records, which can be returned."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["results"]}," - array of records being returned. If no records satisfy request condition, the array will be empty."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"rate-limits","__idx":4},"children":["Rate Limits"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To ensure platform reliability and fair use, Resolve implements rate limits for the REST API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Resolve APIs use the Sliding Window algorithm to monitor and control request rates with a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["100 requests/minute"]}," limit. The API will return a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429 Too Many Requests"]}," status if the amount of requests exceeds rate limits."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All responses from Resolve APIs will include the following headers:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Ratelimit-Limit"]},": The maximum amount of requests permitted within a 60-second period."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Ratelimit-Remaining"]},": The remaining requests within the current period."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Ratelimit-Reset"]},": A UNIX timestamp indicating when the rate limit period will reset."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"best-practices","__idx":5},"children":["Best Practices"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use caching when necessary for data that is routinely requested by your application."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Utilize the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Ratelimit-Limit"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Ratelimit-Remaining"]}," response headers in your application to avoid surpassing rate limits."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your application should avoid making additional API requests if your requests return with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429"]}," status code."]}]}]},"headings":[{"value":"API Reference","id":"api-reference","depth":1},{"value":"Getting Started","id":"getting-started","depth":2},{"value":"Authentication","id":"authentication","depth":2},{"value":"Pagination","id":"pagination","depth":2},{"value":"Rate Limits","id":"rate-limits","depth":2},{"value":"Best Practices","id":"best-practices","depth":3}],"frontmatter":{"seo":{"title":"API Reference"}},"lastModified":"2026-03-18T19:36:56.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/api-reference","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}