Resolve API Reference (2021-05-01)

Download OpenAPI specification:Download

API Support: accounts@resolvepay.com

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

Introduction

The Resolve API is organized around REST principles. It uses predictable resource-oriented URLs, standard HTTP verbs and response codes, and accepts and returns JSON-encoded request and response bodies.

Getting started

Resolve offers both server-side and client-side integrations. This documentation refers to the server-side API. Refer to our e-commerce plugin guides for details on client-side checkout solutions.

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.

Environment Base URL
Production https://app.resolvepay.com/api/
Sandbox https://app-sandbox.resolvepay.com/api/

Authentication

Before using the API, reach out and get your Resolve account created. This account enables access to the credentials that are necessary for API access.

Resolve uses HTTP basic authentication where the username refers to your merchant ID, and the password refers to your secret API key.

Versioning and Upgrading

When backwards-incompatible changes are released, a new, dated version is released. The current version is 2021-05-01. You can upgrade the version of the api that your account uses within your merchant settings.

Legacy (v2) API documentation may be found here.

Pagination

All top-level API resources have support for bulk fetches via "list" API methods. For instance, you can list customers, list invoices.

These list API methods share a common structure, taking at least two parameters: limit and page.

  • count - represents total amount of records, satisfying the request query.
  • page - a multiplier value, which gets applied to the limit and shows what position records are being returned from. For example, if limit = 20 and page = 5, then maximun 20 records will be returned from position 5 * 20 = 100.
  • limit - maximun amount of records, which can be returned.
  • results - array of records being returned. If no records satisfy request condition, the array will be empty.

Rate Limits

To ensure platform reliability and fair use, Resolve implements rate limits for the REST API.

Resolve APIs use the Sliding Window algorithm to monitor and control request rates with a 100 requests/minute limit. The API will return a 429 Too Many Requests status if the amount of requests exceeds rate limits.

All responses from Resolve APIs will include the following headers:

  • X-Ratelimit-Limit: The maximum amount of requests permitted within a 60-second period.
  • X-Ratelimit-Remaining: The remaining requests within the current period.
  • X-Ratelimit-Reset: A UNIX timestamp indicating when the rate limit period will reset.

Best Practices

  • Use caching when necessary for data that is routinely requested by your application.
  • Utilize the X-Ratelimit-Limit and X-Ratelimit-Remaining response headers in your application to avoid surpassing rate limits.
  • Your application should avoid making additional API requests if your requests return with a 429 status code.

Invoices

The invoice represents the business transaction between you and your customer. In Resolve, an invoice must be tied to a customer and an advance can be taken on the invoice.

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

Return a list of invoices.

SecuritybasicAuth
Request
query Parameters
limit
integer [ 25 .. 100 ]
Default: 25

Limit the number of invoices returned.

page
string
Default: "1"

Specify the page of invoices returned.

object

Filter invoices by the specified fields.

Filter semantics: filter[field][operator]=value.

Available filter operators:

  • eq - equal (=)
  • ne - not equal (!=)
  • gt - greater than (>)
  • gte - greater than or equal (>=)
  • lt - less than (<)
  • lte - less than or equal (<=)

Filtering is allowed by the following fields:

  • number (eq)
  • order_number (eq)
  • po_number (eq)
  • customer_id (eq)
  • advance_requested (eq)
  • created_at (eq, gt, lt, gte, lte)
  • fully_paid (eq, ne)
  • fully_paid_at (eq, gt, lt, gte, lte)
  • amount_due (eq, gt, lt, gte, lte)
  • amount_balance (eq, gt, lt, gte, lte)
  • amount_pending (eq, gt, lt, gte, lte)
  • amount_refunded (eq, gt, lt, gte, lte)
  • archived (eq, ne)

Example: filter[number][eq]=100

Note: filter with the eq operator is equivalent to the following filter filter[field]=value

Responses
200

An object with an array of results containing up to the limit. If no invoices are found, the results array will be empty.

400

Bad request error

401

Unauthorized error

429

Rate limit error

get/invoices
Request samples
Response samples
application/json
{
  • "count": 1,
  • "limit": 25,
  • "page": 1,
  • "results": [
    ]
}

Create an invoice

Create a new advanced or non-advanced invoice with the desired terms.

SecuritybasicAuth
Request
Request Body schema: application/json

Invoice to add to the system.

terms
string

The terms selected for this invoice. Terms selected must be available on your account and different terms will be available based on advance_requested.

Enum: "due_upon_receipt" "net7" "net10" "net10th" "net15" "net30" "net45" "net60" "net75" "net90" "net120" "net180"
merchant_invoice_url
required
string <url>

URL for the publicly-accessible invoice PDF.

number
required
string

Invoice number identifier.

order_number
string

Order number identifier.

po_number
string

PO number identifier.

notes
string

Additional notes for the Customer

customer_id
required
string

ID of the customer being charged

advance_requested
boolean

The type of invoice. This will determine if this is an advanced or non-advanced invoice.

amount
required
number <double>

Amount being charged from the customer

Responses
200

An object representing a created invoice.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

post/invoices
Request samples
application/json
{
  • "terms": "due_upon_receipt",
  • "merchant_invoice_url": "https://example.com/invoice.pdf",
  • "number": "R334-097",
  • "order_number": "09785",
  • "po_number": "PO-09785",
  • "notes": "Example of additional notes for Customer.",
  • "customer_id": "X50sgfRd",
  • "advance_requested": "false",
  • "amount": 2000
}
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "source": "MERCHANT_USER",
  • "customer_id": "string",
  • "order_number": "5055",
  • "number": "Inv # 123",
  • "po_number": "PO-555",
  • "notes": "Example of additional notes for Customer.",
  • "line_items": [ ],
  • "merchant_invoice_url": "https://www.example.com/invoice.pdf",
  • "resolve_invoice_status": "completed",
  • "fully_paid_at": "2020-01-01T00:00:00.730Z",
  • "advanced": false,
  • "due_at": "2020-02-01T00:00:00.750Z",
  • "original_due_at": "2020-02-01T00:00:00.750Z",
  • "invoiced_at": "2020-01-01T00:00:00.750Z",
  • "advance_requested": "false",
  • "terms": "due_upon_receipt",
  • "amount_payout_due": 4000,
  • "amount_payout_paid": 2000,
  • "amount_payout_pending": 1000,
  • "amount_payout_refunded": 500,
  • "amount_payout_balance": 500,
  • "payout_fully_paid": false,
  • "payout_fully_paid_at": "2020-01-02T00:00:00.730Z",
  • "amount_balance": 2000,
  • "amount_due": 4000,
  • "amount_refunded": 0,
  • "amount_pending": 1000,
  • "amount_paid": 1000,
  • "amount_advance": 4000,
  • "amount_advance_fee": 10.75,
  • "amount_advance_fee_refund": 10.75,
  • "advance_rate": 0.75,
  • "advanced_at": "2020-01-02T00:00:00.730Z",
  • "amount_customer_fee_total": 500,
  • "amount_customer_fee_waived": 120,
  • "amount_customer_fee_paid": 300,
  • "amount_customer_fee_balance": 80,
  • "created_at": "2020-01-02T00:00:00.730Z",
  • "updated_at": "2020-01-02T00:00:00.730Z",
  • "archived": false
}

Fetch an invoice

Retrieve an existing invoice by its ID.

SecuritybasicAuth
Request
path Parameters
invoice_id
required
string

ID of the invoice to retrieve

Responses
200

An object representing a created invoice.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

get/invoices/{invoice_id}
Request samples
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "source": "MERCHANT_USER",
  • "customer_id": "string",
  • "order_number": "5055",
  • "number": "Inv # 123",
  • "po_number": "PO-555",
  • "notes": "Example of additional notes for Customer.",
  • "line_items": [ ],
  • "merchant_invoice_url": "https://www.example.com/invoice.pdf",
  • "resolve_invoice_status": "completed",
  • "fully_paid_at": "2020-01-01T00:00:00.730Z",
  • "advanced": false,
  • "due_at": "2020-02-01T00:00:00.750Z",
  • "original_due_at": "2020-02-01T00:00:00.750Z",
  • "invoiced_at": "2020-01-01T00:00:00.750Z",
  • "advance_requested": "false",
  • "terms": "due_upon_receipt",
  • "amount_payout_due": 4000,
  • "amount_payout_paid": 2000,
  • "amount_payout_pending": 1000,
  • "amount_payout_refunded": 500,
  • "amount_payout_balance": 500,
  • "payout_fully_paid": false,
  • "payout_fully_paid_at": "2020-01-02T00:00:00.730Z",
  • "amount_balance": 2000,
  • "amount_due": 4000,
  • "amount_refunded": 0,
  • "amount_pending": 1000,
  • "amount_paid": 1000,
  • "amount_advance": 4000,
  • "amount_advance_fee": 10.75,
  • "amount_advance_fee_refund": 10.75,
  • "advance_rate": 0.75,
  • "advanced_at": "2020-01-02T00:00:00.730Z",
  • "amount_customer_fee_total": 500,
  • "amount_customer_fee_waived": 120,
  • "amount_customer_fee_paid": 300,
  • "amount_customer_fee_balance": 80,
  • "created_at": "2020-01-02T00:00:00.730Z",
  • "updated_at": "2020-01-02T00:00:00.730Z",
  • "archived": false
}

Update an invoice

Update an invoice.

SecuritybasicAuth
Request
path Parameters
invoice_id
required
string

ID of the invoice to update

Request Body schema: application/json

Fields to update an invoice with. Please note, allowed fields depend on whether or not the invoice has been sent.

One of:
terms
string

The terms selected for this invoice. Terms selected must be available on your account and different terms will be available based on advance_requested.

Enum: "due_upon_receipt" "net7" "net10" "net10th" "net15" "net30" "net45" "net60" "net75" "net90" "net120" "net180"
merchant_invoice_url
string <url>

URL for the publicly-accessible invoice PDF.

number
string

Invoice number identifier.

order_number
string

Order number identifier.

po_number
string

PO number identifier.

notes
string

Additional notes for the Customer

customer_id
string

ID of the customer being charged

advance_requested
boolean

The type of invoice. This will determine if this is an advanced or non-advanced invoice.

amount
number <double>

Amount being charged from the customer

Responses
200

An object representing a created invoice.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

put/invoices/{invoice_id}
Request samples
application/json
{
  • "terms": "due_upon_receipt",
  • "merchant_invoice_url": "https://example.com/invoice.pdf",
  • "number": "R334-097",
  • "order_number": "09785",
  • "po_number": "PO-09785",
  • "notes": "Example of additional notes for Customer.",
  • "customer_id": "X50sgfRd",
  • "advance_requested": "false",
  • "amount": 2000
}
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "source": "MERCHANT_USER",
  • "customer_id": "string",
  • "order_number": "5055",
  • "number": "Inv # 123",
  • "po_number": "PO-555",
  • "notes": "Example of additional notes for Customer.",
  • "line_items": [ ],
  • "merchant_invoice_url": "https://www.example.com/invoice.pdf",
  • "resolve_invoice_status": "completed",
  • "fully_paid_at": "2020-01-01T00:00:00.730Z",
  • "advanced": false,
  • "due_at": "2020-02-01T00:00:00.750Z",
  • "original_due_at": "2020-02-01T00:00:00.750Z",
  • "invoiced_at": "2020-01-01T00:00:00.750Z",
  • "advance_requested": "false",
  • "terms": "due_upon_receipt",
  • "amount_payout_due": 4000,
  • "amount_payout_paid": 2000,
  • "amount_payout_pending": 1000,
  • "amount_payout_refunded": 500,
  • "amount_payout_balance": 500,
  • "payout_fully_paid": false,
  • "payout_fully_paid_at": "2020-01-02T00:00:00.730Z",
  • "amount_balance": 2000,
  • "amount_due": 4000,
  • "amount_refunded": 0,
  • "amount_pending": 1000,
  • "amount_paid": 1000,
  • "amount_advance": 4000,
  • "amount_advance_fee": 10.75,
  • "amount_advance_fee_refund": 10.75,
  • "advance_rate": 0.75,
  • "advanced_at": "2020-01-02T00:00:00.730Z",
  • "amount_customer_fee_total": 500,
  • "amount_customer_fee_waived": 120,
  • "amount_customer_fee_paid": 300,
  • "amount_customer_fee_balance": 80,
  • "created_at": "2020-01-02T00:00:00.730Z",
  • "updated_at": "2020-01-02T00:00:00.730Z",
  • "archived": false
}

Customers

A customer represents a company that you do business with. 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.

List all customers

Return a list of customers.

SecuritybasicAuth
Request
query Parameters
limit
integer [ 25 .. 100 ]
Default: 25

Limit the number of customers returned.

page
string
Default: "1"

Specify the page of customers returned.

object

Filter customers by the specified fields.

Filter semantics: filter[field][operator]=value.

Available filter operators:

  • eq - equal (=)
  • ne - not equal (!=)
  • gt - greater than (>)
  • gte - greater than or equal (>=)
  • lt - less than (<)
  • lte - less than or equal (<=)

Filtering is allowed by the following fields:

  • email (eq)
  • business_name (eq)
  • created_at (eq, gt, lt, gte, lte)
  • amount_approved (eq, gt, lt, gte, lte)
  • amount_available (eq, gt, lt, gte, lte)
  • amount_authorized (eq, gt, lt, gte, lte)
  • amount_balance (eq, gt, lt, gte, lte)
  • amount_unapplied_payments (eq, gt, lt, gte, lte)
  • advance_rate (eq, gt, lt, gte, lte)
  • archived (eq, ne)

Example: filter[email][eq]=test@resolvepay.com

Note: filter with the eq operator is equivalent to the following filter filter[field]=value

sort
string

Sort customers by the specified fields.

The sort order for each sort field is ascending unless it is prefixed with a minus, in which case it is descending.

Multiple sort fields supported by allowing comma-separated sort fields. Sort fields will be applied in the order specified.

Sorting is allowed by the following fields: id, created_at, amount_approved, amount_available.

Example: sort=id,-created_at

Responses
200

An object with an array of results containing up to the limit. If no customers are found, the results array will be empty.

400

Bad request error

401

Unauthorized error

429

Rate limit error

get/customers
Request samples
Response samples
application/json
{
  • "count": 1,
  • "limit": 25,
  • "page": 1,
  • "results": [
    ]
}

Create a customer

Create a customer

SecuritybasicAuth
Request
Request Body schema: application/json

Customer to add to the system.

business_address
required
string

Street address of the business' primary location.

business_city
required
string

City of the business' primary location.

business_state
required
string

State or province of the business' primary location.

business_zip
required
string

US zip code of the business' primary location.

business_country
required
string <ISO 3166-1 alpha 2>

2-letter country code of the business' primary location, according to the ISO 3166-1 alpha 2 standard.

business_ap_email
required
string <email>

Email address of the business' accounts payable person or department.

business_ap_phone
string

Phone number of the business' accounts payable person or department.

business_ap_phone_extension
string

Phone number extension of the business' accounts payable person or department.

business_name
required
string

Full legal name of the business being applied for.

email
required
string <email>

Email of the customer applying for terms.

default_terms
string or null

Default terms invoices will be advanced with.

Enum: "net7" "net10" "net10th" "net15" "net30" "net45" "net60" "net75" "net90" "net120" "net180" null
Responses
200

An object representing the customer.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

post/customers
Request samples
application/json
{
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "email": "user@example.com",
  • "default_terms": "net7"
}
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "created_at": "2020-01-01T00:00:00.750Z",
  • "updated_at": "2020-01-01T00:00:00.750Z",
  • "source": "MERCHANT_USER",
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_age_range": "5-10",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "business_trade_name": "Example Trading Company",
  • "business_phone": "(202) 456-1414",
  • "business_type": "corporation",
  • "email": "user@example.com",
  • "personal_name_first": "James",
  • "personal_name_last": "Bond",
  • "personal_phone": "(202) 456-1414",
  • "amount_approved": 10000,
  • "amount_authorized": 10000,
  • "amount_available": 10000,
  • "amount_balance": 2000,
  • "amount_unapplied_payments": 1000,
  • "default_terms": "net7",
  • "advance_rate": 0.75,
  • "credit_status": "approved",
  • "net_terms_status": "enrolled",
  • "net_terms_enrollment_url": "www.app.resolvepay.com/merchant-id/activate/123456",
  • "net_terms_enrollment_expires_at": "2020-01-01T00:00:00.750Z",
  • "credit_check_requested_at": "2020-01-01T00:00:00.750Z",
  • "archived": false
}

Fetch a customer

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'.

SecuritybasicAuth
Request
path Parameters
customer_id
required
string

ID of the customer to return

Responses
200

An object representing the customer.

401

Unauthorized error

404

Not found error

429

Rate limit error

get/customers/{customer_id}
Request samples
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "created_at": "2020-01-01T00:00:00.750Z",
  • "updated_at": "2020-01-01T00:00:00.750Z",
  • "source": "MERCHANT_USER",
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_age_range": "5-10",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "business_trade_name": "Example Trading Company",
  • "business_phone": "(202) 456-1414",
  • "business_type": "corporation",
  • "email": "user@example.com",
  • "personal_name_first": "James",
  • "personal_name_last": "Bond",
  • "personal_phone": "(202) 456-1414",
  • "amount_approved": 10000,
  • "amount_authorized": 10000,
  • "amount_available": 10000,
  • "amount_balance": 2000,
  • "amount_unapplied_payments": 1000,
  • "default_terms": "net7",
  • "advance_rate": 0.75,
  • "credit_status": "approved",
  • "net_terms_status": "enrolled",
  • "net_terms_enrollment_url": "www.app.resolvepay.com/merchant-id/activate/123456",
  • "net_terms_enrollment_expires_at": "2020-01-01T00:00:00.750Z",
  • "credit_check_requested_at": "2020-01-01T00:00:00.750Z",
  • "archived": false
}

Update a customer

Update a customer

SecuritybasicAuth
Request
path Parameters
customer_id
required
string

ID of the customer to update

Request Body schema: application/json

Fields to update a customer with.

business_address
string

Street address of the business' primary location.

business_city
string

City of the business' primary location.

business_state
string

State or province of the business' primary location.

business_zip
string

US zip code of the business' primary location.

business_country
string

Country of the business' primary location.

business_ap_email
string

Email address of the business' accounts payable person or department.

business_ap_phone
string

Phone number of the business' accounts payable person or department.

business_ap_phone_extension
string

Phone number extension of the business' accounts payable person or department.

business_name
string

Full legal name of the business being applied for.

email
string <email>

Email of the customer applying for terms.

default_terms
string or null

Set default terms that will apply to this customer's invoices. Can be overridden when requesting an advance.

Enum: "net7" "net10" "net10th" "net15" "net30" "net45" "net60" "net75" "net90" "net120" "net180" null
Responses
200

An object representing the customer.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

put/customers/{customer_id}
Request samples
application/json
{
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "email": "user@example.com",
  • "default_terms": "net7"
}
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "created_at": "2020-01-01T00:00:00.750Z",
  • "updated_at": "2020-01-01T00:00:00.750Z",
  • "source": "MERCHANT_USER",
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_age_range": "5-10",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "business_trade_name": "Example Trading Company",
  • "business_phone": "(202) 456-1414",
  • "business_type": "corporation",
  • "email": "user@example.com",
  • "personal_name_first": "James",
  • "personal_name_last": "Bond",
  • "personal_phone": "(202) 456-1414",
  • "amount_approved": 10000,
  • "amount_authorized": 10000,
  • "amount_available": 10000,
  • "amount_balance": 2000,
  • "amount_unapplied_payments": 1000,
  • "default_terms": "net7",
  • "advance_rate": 0.75,
  • "credit_status": "approved",
  • "net_terms_status": "enrolled",
  • "net_terms_enrollment_url": "www.app.resolvepay.com/merchant-id/activate/123456",
  • "net_terms_enrollment_expires_at": "2020-01-01T00:00:00.750Z",
  • "credit_check_requested_at": "2020-01-01T00:00:00.750Z",
  • "archived": false
}

Enroll a customerDeprecated

As of July 2023, this route has been replaced with a stub response and will soon be deprecated. The `confirm_enrollment` status no longer exists and, once approved by Resolve, customers will either be `enrolled` (if they applied through an application) or `pending_enrollment` (if credit checked).
SecuritybasicAuth
Request
path Parameters
customer_id
required
string

ID of the customer to enroll

Responses
200

An object representing the customer.

400

Bad request error

401

Unauthorized error

404

Not found error

422

Unprocessable entity error

429

Rate limit error

post/customers/{customer_id}/enroll
Request samples
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "created_at": "2020-01-01T00:00:00.750Z",
  • "updated_at": "2020-01-01T00:00:00.750Z",
  • "source": "MERCHANT_USER",
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_age_range": "5-10",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "business_trade_name": "Example Trading Company",
  • "business_phone": "(202) 456-1414",
  • "business_type": "corporation",
  • "email": "user@example.com",
  • "personal_name_first": "James",
  • "personal_name_last": "Bond",
  • "personal_phone": "(202) 456-1414",
  • "amount_approved": 10000,
  • "amount_authorized": 10000,
  • "amount_available": 10000,
  • "amount_balance": 2000,
  • "amount_unapplied_payments": 1000,
  • "default_terms": "net7",
  • "advance_rate": 0.75,
  • "credit_status": "approved",
  • "net_terms_status": "enrolled",
  • "net_terms_enrollment_url": "www.app.resolvepay.com/merchant-id/activate/123456",
  • "net_terms_enrollment_expires_at": "2020-01-01T00:00:00.750Z",
  • "credit_check_requested_at": "2020-01-01T00:00:00.750Z",
  • "archived": false
}

Request a credit check

You may request a credit check on a customer who hasn't previously been credit checked. A successful response to a credit check is the Customer entity: you'll be able to immediately see the date you requested the credit check (credit_check_requested_at) and credit_status will be updated to pending or, in the case of an instant decision, approved or declined.

A hold credit status represents when a customer's credit account is over 15 days 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: the response to a POST /credit-check request could take up to 30 seconds. Except for instant decisions, a decision should be reflected on the Customer entity within 1 business day.

SecuritybasicAuth
Request
path Parameters
customer_id
required
string

ID of the customer being submitted for a credit check

Request Body schema: application/json

Request a credit check for a customer

amount_requested
required
number >= 1

Request an amount (plus buffer) to cover your customer's purchases over their payment term. This can be increased later.

business_description
string or null <= 500 characters

A description of your customer's business.

has_purchase_history
required
boolean

Indicates whether this customer has prior purchase history with the merchant. When true, the merchant has prior purchase history with this customer.

has_purchase_terms_history
boolean

Required if has_purchase_history = true. Indicates whether this customer has prior purchase history on net terms with the merchant. When true, the merchant has prior net terms purchase history with this customer.

Responses
200

An object representing the customer.

400

Bad request error

401

Unauthorized error

404

Not found error

422

Credit check already created for this customer

429

Rate limit error

post/customers/{customer_id}/credit-check
Request samples
application/json
{
  • "amount_requested": 50000,
  • "business_description": "Put a description your customer's business here.",
  • "has_purchase_history": true,
  • "has_purchase_terms_history": false
}
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "created_at": "2020-01-01T00:00:00.750Z",
  • "updated_at": "2020-01-01T00:00:00.750Z",
  • "source": "MERCHANT_USER",
  • "business_address": "111 Main Street",
  • "business_city": "San Francisco",
  • "business_state": "CA",
  • "business_zip": "94104",
  • "business_country": "US",
  • "business_age_range": "5-10",
  • "business_ap_email": "ap@example.com",
  • "business_ap_phone": "(202) 456-1414",
  • "business_ap_phone_extension": "123",
  • "business_name": "Example, Inc.",
  • "business_trade_name": "Example Trading Company",
  • "business_phone": "(202) 456-1414",
  • "business_type": "corporation",
  • "email": "user@example.com",
  • "personal_name_first": "James",
  • "personal_name_last": "Bond",
  • "personal_phone": "(202) 456-1414",
  • "amount_approved": 10000,
  • "amount_authorized": 10000,
  • "amount_available": 10000,
  • "amount_balance": 2000,
  • "amount_unapplied_payments": 1000,
  • "default_terms": "net7",
  • "advance_rate": 0.75,
  • "credit_status": "approved",
  • "net_terms_status": "enrolled",
  • "net_terms_enrollment_url": "www.app.resolvepay.com/merchant-id/activate/123456",
  • "net_terms_enrollment_expires_at": "2020-01-01T00:00:00.750Z",
  • "credit_check_requested_at": "2020-01-01T00:00:00.750Z",
  • "archived": false
}

Payouts

A Payout is a transfer of money between the Merchant and Resolve.

List Payouts

SecuritybasicAuth
Request
query Parameters
filter
string

Filter records by the specified fields.

Filter semantics: filter[field][operator]=value.

Available filter operators:

  • eq - equal (=)
  • ne - not equal (!=)
  • gt - greater than (>)
  • gte - greater than or equal (>=)
  • lt - less than (<)
  • lte - less than or equal (<=)

Filtering is allowed by the following fields:

  • status (eq)
  • expected_by (eq, gt, lt, gte, lte)
  • created_at (eq, gt, lt, gte, lte)

Example: filter[created_at][gt]=2022-10-30T14:00:00.000Z

Note: filter with the eq operator is equivalent to the following filter filter[field]=value

sort
string

Sort records by the specified fields.

The sort order for each sort field is ascending unless it is prefixed with a minus, in which case it is descending.

Multiple sort fields supported by allowing comma-separated sort fields. Sort fields will be applied in the order specified.

Sorting is allowed by the following fields: id, created_at.

Example: sort=id,-created_at

Responses
200

An object with an array of Payouts up to the specified limit.

400

Bad request error

401

Unauthorized error

429

Rate limit error

get/payouts
Request samples
Response samples
application/json
{
  • "limit": 25,
  • "page": 1,
  • "results": [
    ]
}

Get a Payout

SecuritybasicAuth
Request
path Parameters
payout_id
required
string

ID of the Payout

Responses
200

An object representing the created Payout.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

get/payouts/{payout_id}
Request samples
Response samples
application/json
{
  • "id": "PMMlaE5wbg0",
  • "amount_gross": 120,
  • "amount_fee": 20,
  • "amount_net": 100,
  • "status": "pending",
  • "retry_payout_id": "PMMlaE5wbg0",
  • "failed_at": "2022-09-06T03:08:37.508Z",
  • "expected_by": "2022-09-06T03:08:37.508Z",
  • "transactions_starting_at": "string",
  • "transactions_ending_at": "string",
  • "canceled_at": "2022-09-06T03:08:37.508Z",
  • "created_at": "2022-09-06T03:08:37.508Z",
  • "updated_at": "2022-09-06T03:08:37.508Z"
}

Payout Transactions

Payout Transactions are the individual transactions like customer payments, Resolve advances, forwarded payments, etc. that are rolled into a Payout. 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

SecuritybasicAuth
Request
query Parameters
limit
integer [ 25 .. 100 ]
Default: 25

Limit the number of payout transactions returned.

page
string
Default: "1"

Specify the page of payout transactions returned.

filter
string

Filter Payout Transactions by the specified fields.

Filter semantics: filter[field][operator]=value.

Available filter operators:

  • eq - equal (=)
  • ne - not equal (!=)
  • gt - greater than (>)
  • gte - greater than or equal (>=)
  • lt - less than (<)
  • lte - less than or equal (<=)

Filtering is allowed by the following fields:

  • customer_id (eq, ne)
  • created_at (eq, gt, lt, gte, lte)
  • payout_id (eq, ne)
  • invoice_id (eq, ne)

Example: filter[created_at][gte]=2021-01-01T00:00:00.000Z

Note: filter with the eq operator is equivalent to the following filter filter[field]=value

sort
string

Sort Payout Transactions by the specified fields.

The sort order for each sort field is ascending unless it is prefixed with a minus, in which case it is descending.

Multiple sort fields supported by allowing comma-separated sort fields. Sort fields will be applied in the order specified.

Sorting is allowed by the following fields: id, created_at.

Example: sort=id,-created_at

Responses
200

An object with an array of results containing up to the limit. If no payout transactions are found, the results array will be empty.

400

Bad request error

401

Unauthorized error

429

Rate limit error

get/payout-transactions
Request samples
Response samples
application/json
{
  • "limit": 25,
  • "page": 1,
  • "results": [
    ]
}

Get a Payout Transaction

SecuritybasicAuth
Request
path Parameters
payout_transaction_id
required
string

ID of the Payout Transaction

Responses
200

An object representing the created Payout Transaction.

400

Bad request error

401

Unauthorized error

404

Not found error

429

Rate limit error

get/payout_transactions/{payout_transaction_id}
Request samples
Response samples
application/json
{
  • "id": "AOncfxMnm",
  • "payout_id": "gQxGLAowY",
  • "type": "advance",
  • "customer_id": "voArW2nSs",
  • "customer_name": "Test name",
  • "invoice_id": "C2vBqxfZ4",
  • "invoice_number": "R334-097R",
  • "order_id": "u5WRraCYY",
  • "po_number": "PO-09785",
  • "amount_gross": 100,
  • "amount_fee": 3,
  • "amount_net": 97,
  • "created_at": "2022-09-06T03:08:37.508Z",
  • "updated_at": "2022-09-06T03:08:37.508Z"
}