Dime Payments API Documentation

Postman collection → OpenAPI spec →

Introduction

A simple, basic API for managing Merchants through Dime Payments. JSON based REST API

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

## Retrying safely with an Idempotency-Key

The endpoints that move money (charge-card, charge-card-token, charge-ach, authorize, capture, refund and void) accept an optional `Idempotency-Key` header. Send a unique value, up to 255 characters, for each payment you intend to make, and send the same value again if you retry it.

- A retry with the same key and the same request returns the original response, with an `Idempotent-Replayed: true` header. It is not processed again, so a timed-out charge or refund cannot happen twice.
- The same key with a different request is refused with a 422. Use a new key for each new request.
- A retry while the first request is still running gets a 409. Wait a moment and retry.
- A request refused before it was processed (a validation error, a permission error or a rate limit) does not use up its key. Correct it and retry with the same key.
- Keys belong to your API account and are kept for 7 days.

Without the header, these endpoints behave as they always have.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token under your profile in top right.

Merchant management

List Merchants

GET
https://app.dimepayments.com
/api/merchant/list
requires authentication

Get a list of all merchants and their fields

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/merchant/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"start_date\": \"2024-01-01 00:00:00\",
        \"end_date\": \"2024-12-31 23:59:59\"
    }
}"
Example response:
{
    "data": [
        {
            "name": "Dime Payments",
            "dba": "",
            "sid": "00001",
            "signup_uuid": null,
            "ein": "",
            "mcc": "8999",
            "sweep_excluded": null,
            "sweep_excluded_checked_at": null,
            "slug": "pay",
            "pub_api_key": "pkapi_prod_B5n2hQhy6uAp1rLjqs",
            "processor_mid": "650000012366624",
            "active": true,
            "pipeline_stage": null,
            "pipeline_lost_at": null,
            "notified_funnel_stage": "live",
            "notified_application_status": null,
            "active_at": null,
            "manual_only_at": null,
            "pending_cancellation": null,
            "approved_cancellation": null,
            "approved_cancellation_by": null,
            "g_pay": false,
            "a_pay": false,
            "pci_compliance": true,
            "api_access": "2025-05-20T12:43:00.000000Z",
            "api_enabled_by_id": 1,
            "website": "https://dimepayments.com",
            "addr1": "53 S. Main St",
            "addr2": "",
            "addr3": "",
            "city": "Alpharetta",
            "state": "GA",
            "zip": "30009",
            "phone": "4049064975",
            "primary_phone": "4049064975",
            "primary_email": "[email protected]",
            "primary_name": "Ben Habeck"
        },
        {
            "name": "Dime Payments",
            "dba": "",
            "sid": "00001",
            "signup_uuid": null,
            "ein": "",
            "mcc": "8999",
            "sweep_excluded": null,
            "sweep_excluded_checked_at": null,
            "slug": "pay",
            "pub_api_key": "pkapi_prod_B5n2hQhy6uAp1rLjqs",
            "processor_mid": "650000012366624",
            "active": true,
            "pipeline_stage": null,
            "pipeline_lost_at": null,
            "notified_funnel_stage": "live",
            "notified_application_status": null,
            "active_at": null,
            "manual_only_at": null,
            "pending_cancellation": null,
            "approved_cancellation": null,
            "approved_cancellation_by": null,
            "g_pay": false,
            "a_pay": false,
            "pci_compliance": true,
            "api_access": "2025-05-20T12:43:00.000000Z",
            "api_enabled_by_id": 1,
            "website": "https://dimepayments.com",
            "addr1": "53 S. Main St",
            "addr2": "",
            "addr3": "",
            "city": "Alpharetta",
            "state": "GA",
            "zip": "30009",
            "phone": "4049064975",
            "primary_phone": "4049064975",
            "primary_email": "[email protected]",
            "primary_name": "Ben Habeck"
        }
    ]
}
{
    "errors": {
        "filters.start_date": [
            "The filters.start_date field must be a valid date."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}

Show a specific Merchant's Details

GET
https://app.dimepayments.com
/api/merchant/show
requires authentication

List all non-protected fields for a merchant. Other fields are available using their specific requests.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/merchant/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 1234567
    }
}"
Example response:
{
    "data": {
        "name": "Dime Payments",
        "sid": "00001",
        "mcc": "8999",
        "slug": "pay",
        "pub_api_key": "pkapi_prod_B5n2hQhy6uAp1rLjqs",
        "processor_mid": "650000012366624",
        "active": true,
        "active_at": null,
        "g_pay": false,
        "a_pay": false,
        "pci_compliance": true,
        "website": "https://dimepayments.com",
        "addr1": "53 S. Main St",
        "addr2": "",
        "city": "Alpharetta",
        "state": "GA",
        "zip": "30009",
        "phone": "4049064975",
        "primary_phone": "4049064975",
        "primary_email": "[email protected]",
        "primary_name": "Ben Habeck"
    }
}
{
    "errors": {
        "filters.start_date": [
            "The filters.start_date field must be a valid date."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}

Create Merchant

POST
https://app.dimepayments.com
/api/merchant/create
requires authentication

Create a merchant record which can be used for generating an application.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/merchant/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"name\": \"Acme Inc\",
        \"slug\": \"acme-inc\",
        \"mcc\": 8661,
        \"website\": \"https:\\/\\/acme-inc.com\",
        \"addr1\": \"123 4th Street\",
        \"addr2\": \"Suite 5\",
        \"city\": \"Alpharetta\",
        \"state\": \"GA\",
        \"zip\": 30009,
        \"phone\": \"+177012345678\",
        \"primary_phone\": \"+140412345678\",
        \"primary_name\": \"John Doe\",
        \"primary_email\": \"[email protected]\",
        \"industry\": \"Church\",
        \"acknowledge_duplicate\": false
    }
}"
Example response:
{
    "data": {
        "name": "Dime Payments",
        "sid": "00001",
        "mcc": "8999",
        "slug": "pay",
        "pub_api_key": "pkapi_prod_B5n2hQhy6uAp1rLjqs",
        "processor_mid": "650000012366624",
        "active": true,
        "active_at": null,
        "g_pay": false,
        "a_pay": false,
        "pci_compliance": true,
        "website": "https://dimepayments.com",
        "addr1": "53 S. Main St",
        "addr2": "",
        "city": "Alpharetta",
        "state": "GA",
        "zip": "30009",
        "phone": "4049064975",
        "primary_phone": "4049064975",
        "primary_email": "[email protected]",
        "primary_name": "Ben Habeck"
    }
}
{
    "errors": {
        "data.phone": [
            "The data.phone field is required."
        ]
    }
}
{
    "data": {
        "message": "Something went wrong: contact Dime Payments Rep"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "You already have one or more merchants that look like this one. ...",
        "possible_duplicates": [
            {
                "sid": "00031",
                "name": "Abundance Ministries",
                "matched_on": "Same business name",
                "onboarded": true
            }
        ]
    }
}

Update a specific Merchant's Details

PATCH
https://app.dimepayments.com
/api/merchant/update
requires authentication

Update a Merchant's details.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/merchant/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 99,
        \"slug\": \"acme-inc\",
        \"name\": \"Acme Inc\",
        \"mcc\": 8661,
        \"website\": \"https:\\/\\/acme-inc.com\",
        \"addr1\": \"123 4th Street\",
        \"addr2\": \"Suite 5\",
        \"city\": \"Alpharetta\",
        \"state\": \"GA\",
        \"zip\": 30009,
        \"phone\": \"+177012345678\",
        \"primary_phone\": \"+140412345678\",
        \"primary_name\": \"John Doe\",
        \"primary_email\": \"[email protected]\",
        \"industry\": \"Church\"
    }
}"
Example response:
{
    "data": {
        "name": "Dime Payments",
        "sid": "00001",
        "mcc": "8999",
        "slug": "pay",
        "pub_api_key": "pkapi_prod_B5n2hQhy6uAp1rLjqs",
        "processor_mid": "650000012366624",
        "active": true,
        "active_at": null,
        "g_pay": false,
        "a_pay": false,
        "pci_compliance": true,
        "website": "https://dimepayments.com",
        "addr1": "53 S. Main St",
        "addr2": "",
        "city": "Alpharetta",
        "state": "GA",
        "zip": "30009",
        "phone": "4049064975",
        "primary_phone": "4049064975",
        "primary_email": "[email protected]",
        "primary_name": "Ben Habeck"
    }
}
{
    "errors": {
        "data.phone": [
            "The data.phone field is required."
        ]
    }
}
{
    "data": {
        "message": "Something went wrong: contact Dime Payments Rep"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
GET
https://app.dimepayments.com
/api/merchant/get-form-link
requires authentication

Passed a merchant's ID, returns a full URL to the application for processor approval. This link expires in 30 days (App\Models\Company::APPLICATION_LINK_DAYS).

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/merchant/get-form-link" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 69
    }
}"
Example response:

Get a Merchant's onboarding status

GET
https://app.dimepayments.com
/api/merchant/application-status
requires authentication

Where a merchant sits in onboarding, from first contact through to being boarded and able to take money. Use this to follow up an application you sent with get-form-link without having to ask us.

status is the headline. application_status is the underlying application record, and is the field to read when status is underwriting — that column covers both "sent to the processor and waiting" and "more documents have been asked for", and only the second one needs you to do something.

Rather than polling this, subscribe to the application_status_changed webhook, which carries exactly these fields and fires on every change. Poll only to reconcile after an outage.

status is one of: lead, discovery, proposal, application_in_progress, underwriting, live, cancellation_pending, churned, declined. A merchant that has not started onboarding at all may report null.

application_in_progress begins when the merchant opens the onboarding link and saves the first step — the application record does not exist until they do. So a link you requested and they never opened leaves them on lead, discovery or proposal: no status currently tells you an invitation is outstanding. If you need to chase unopened invitations, track when you called get-form-link on your side.

application_status is one of: draft, pending_review, submitted, approved, needs_documents, failed, or null when no application has been started.

A merchant can be live without application_status being approved. Declines and holds are resolved out of band with underwriting, and the signal that the account came good is the credentials that board the merchant. boarded is the ground truth for "can they take money".

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/merchant/application-status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"00069\"
    }
}"
Example response:
{
    "data": {
        "sid": "00069",
        "name": "Acme Inc",
        "status": "underwriting",
        "application_status": "needs_documents",
        "boarded": false,
        "application_submitted_at": "2024-01-15T14:02:11+00:00"
    }
}
{
    "data": {
        "sid": "00069",
        "name": "Acme Inc",
        "status": "lead",
        "application_status": null,
        "boarded": false,
        "application_submitted_at": null
    }
}
{
    "errors": {
        "data.sid": [
            "The data.sid field is required."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Permission Denied"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Transaction management

APIs for managing transactions. Depending on API KEY permissions, one should be able to charge credit cards, ACH, Google/Apple Pay wallets along with other functions.

List Transactions

GET
https://app.dimepayments.com
/api/transactions
requires authentication

Retrieves a list of transactions for a given Merchant, filtered by various parameters.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/transactions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\"
    },
    \"filters\": {
        \"start_date\": \"2021-01-01 00:00:00\",
        \"end_date\": \"2021-12-31 23:59:59\",
        \"sweep_id\": \"sweep_123*\",
        \"customer_uuid\": \"cust_456\"
    }
}"
Example response:
{
    "data": [
        {
            "transaction_type": "CC",
            "transaction_status": "CC_CREDIT",
            "transaction_status_description": "Successful credit/debit card transaction that brings funds into the merchant account.",
            "transaction_number": "741046715",
            "transaction_date": "2023-02-15T19:14:44.000000Z",
            "fund_date": "2023-02-17T05:05:35.000000Z",
            "settle_date": "2023-03-24T11:30:04.000000Z",
            "amount": "1.0000",
            "description": "",
            "status_code": "",
            "status_text": "",
            "email": "",
            "phone": "",
            "customer_uuid": "",
            "multi_use_token": "",
            "pending": false,
            "transaction_info_id": "789161791",
            "parent_transaction_info_id": "",
            "billing_address": {
                "first_name": null,
                "last_name": null,
                "addr1": null,
                "addr2": null,
                "city": null,
                "state": null,
                "zip": null
            },
            "shippingAddress": {
                "addr1": null,
                "addr2": null,
                "city": null,
                "state": null,
                "zip": null
            }
        },
        {
            "transaction_type": "CC",
            "transaction_status": "CC_CREDIT",
            "transaction_status_description": "Successful credit/debit card transaction that brings funds into the merchant account.",
            "transaction_number": "741046715",
            "transaction_date": "2023-02-15T19:14:44.000000Z",
            "fund_date": "2023-02-17T05:05:35.000000Z",
            "settle_date": "2023-03-24T11:30:04.000000Z",
            "amount": "1.0000",
            "description": "",
            "status_code": "",
            "status_text": "",
            "email": "",
            "phone": "",
            "customer_uuid": "",
            "multi_use_token": "",
            "pending": false,
            "transaction_info_id": "789161791",
            "parent_transaction_info_id": "",
            "billing_address": {
                "first_name": null,
                "last_name": null,
                "addr1": null,
                "addr2": null,
                "city": null,
                "state": null,
                "zip": null
            },
            "shippingAddress": {
                "addr1": null,
                "addr2": null,
                "city": null,
                "state": null,
                "zip": null
            }
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 15,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "errors": {
        "filters.start_date": [
            "The filters.start_date field must be a valid date."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No transactions found"
    }
}

Charge a Credit Card

POST
https://app.dimepayments.com
/api/transaction/charge-card
requires authentication

This endpoint allows you to charge a credit card using the PAN Data or a Token. This endpoint will process the charge and return a token representing the card that can be used for transactions as well as the transactionId and the customerUUID if requested. If you pass a customer UUID or a customer phone number, then a customer record will be created or retrieved if it already exists, also making the customer UUID available for the purpose of associating charges to a customer. You must be PCI Compliant (have an AoC on file with Dime Payments) to process PAN Data. A token can optionally be provided to process charges without requiring PCI compliance as no PAN data is being sent.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Idempotency-Key
Example:
order-1234-attempt-1
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/transaction/charge-card" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Idempotency-Key: order-1234-attempt-1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"amount\": 4326.41688,
        \"sid\": 1234567,
        \"phone\": \"+177012345678\",
        \"customer_uuid\": \"977e5426-8d13-3824-86aa-b092f8ae52c5\",
        \"email\": \"[email protected]\",
        \"memo\": \"architecto\",
        \"token\": \"abc123\",
        \"cardholder_name\": \"John Doe\",
        \"card_number\": 1231231231231231,
        \"expiration_date\": \"01\\/2025\",
        \"cvv\": 123,
        \"billing_address\": {
            \"first_name\": \"m\",
            \"last_name\": \"i\",
            \"addr1\": \"1234 Main St\",
            \"addr2\": \"Suite 100\",
            \"city\": \"Atlanta\",
            \"state\": \"NY\",
            \"zip\": \"10001\"
        },
        \"shipping_address\": {
            \"addr1\": \"123 A Street\",
            \"addr2\": \"Suite 123\",
            \"city\": \"Alpharetta\",
            \"state\": \"GA\",
            \"zip\": \"12345\"
        },
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\"
    }
}"
Example response:
{
    "data": {
        "transaction_type": "Credit Card",
        "transaction_status": "Success",
        "transaction_status_description": "Transaction Successful",
        "transaction_number": "1234567890",
        "transaction_date": "2020-01-01",
        "fund_date": "2020-01-01",
        "settle_date": "2020-01-01",
        "amount": "100.00",
        "description": "a memo concerning this transaction",
        "status_code": "00",
        "status_text": "APPROVAL",
        "email": "[email protected]",
        "phone": "+17701234567",
        "customer_uuid": "66f1c230-1337-5g59-b43c-1bcb83adfaaa",
        "multi_use_token": "abcdefg123456790",
        "pending": true,
        "transaction_info_id": "1234567890",
        "parent_transaction_info_id": "1234567890",
        "billing_address": {
            "first_name": "John",
            "last_name": "Doe",
            "addr1": "123 Main St",
            "addr2": "Suite 100",
            "city": "New York",
            "state": "NY"
        },
        "shipping_address": {
            "addr1": "12 Street Ave",
            "addr2": "Suite 123",
            "city": "Boulder",
            "state": "CO",
            "zip": "80302"
        }
    }
}
{
    "errors": {
        "sid": [
            "The sid is required."
        ]
    }
}
{
    "data": {
        "transaction_type": "Credit Card",
        "transaction_status": "Failed",
        "transaction_status_description": "Transaction failed",
        "transaction_number": "1234567890",
        "transaction_date": "2020-01-01",
        "fund_date": "2020-01-01",
        "settle_date": "2020-01-01",
        "amount": "100.00",
        "description": "a memo concerning this transaction",
        "status_code": "05",
        "status_text": "DECLINE",
        "email": "[email protected]",
        "phone": "+17701234567",
        "customer_uuid": "66f1c230-1337-5g59-b43c-1bcb83adfaaa",
        "multi_use_token": "abcdefg123456790",
        "pending": true,
        "transaction_info_id": "1234567890",
        "parent_transaction_info_id": "1234567890",
        "billing_address": {
            "first_name": "John",
            "last_name": "Doe",
            "addr1": "123 Main St",
            "addr2": "Suite 100",
            "city": "New York",
            "state": "NY"
        },
        "shipping_address": {
            "addr1": "12 Street Ave",
            "addr2": "Suite 123",
            "city": "Boulder",
            "state": "CO",
            "zip": "80302"
        }
    }
}
{
    "message": "Permission Denied."
}
{
    "data": {
        "message": "A request with this Idempotency-Key is still in progress, or did not finish. Try again shortly; if this persists, check the transaction list before retrying with a new key."
    }
}
{
    "data": {
        "message": "This Idempotency-Key was already used for a different request. Use a new key for each new request."
    }
}

Charge a Bank Account

POST
https://app.dimepayments.com
/api/transaction/charge-ach
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Idempotency-Key
Example:
order-1234-attempt-1
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/transaction/charge-ach" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Idempotency-Key: order-1234-attempt-1" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 1234567,
        \"routing_number\": \"123456789\",
        \"account_number\": \"91828382\",
        \"account_type\": \"Checking\",
        \"account_name\": \"Acme Inc.\",
        \"amount\": 99.19,
        \"phone\": \"7701234567\",
        \"customer_uuid\": \"12312312-123123123-1231231231\",
        \"email\": \"[email protected]\",
        \"memo\": \"payment for something\",
        \"billing_address\": {
            \"first_name\": \"Ryan\",
            \"last_name\": \"Taylor\",
            \"addr1\": \"123 A Street\",
            \"addr2\": \"Suite 123\",
            \"city\": \"Alpharetta\",
            \"state\": \"GA\",
            \"zip\": \"30009\"
        },
        \"shipping_address\": {
            \"addr1\": \"123 A Street\",
            \"addr2\": \"Suite 123\",
            \"city\": \"Alpharetta\",
            \"state\": \"GA\",
            \"zip\": \"12345\"
        }
    }
}"
Example response:
{
    "data": {
        "transaction_type": "ACH",
        "transaction_status": "Success",
        "transaction_status_description": "Success",
        "transaction_number": "130",
        "transaction_date": "2021-01-01",
        "fund_date": "2021-01-01",
        "settle_date": "2021-01-01",
        "amount": "25",
        "description": "",
        "status_code": "00",
        "status_text": "Success",
        "email": "[email protected]",
        "phone": "",
        "customer_uuid": "",
        "multi_use_token": "",
        "pending": false,
        "transaction_info_id": "1234567890",
        "parent_transaction_info_id": "1234567890",
        "billing_address": {
            "first_name": "First",
            "last_name": "Last",
            "addr1": "12 Street Ave",
            "addr2": "Suite 123",
            "city": "Boulder",
            "state": "CO",
            "zip": "80302"
        },
        "shipping_address": {
            "addr1": "12 Street Ave",
            "addr2": "Suite 123",
            "city": "Boulder",
            "state": "CO",
            "zip": "80302"
        }
    }
}
{
    "errors": {
        "data.amount": [
            "The data.amount field is required."
        ],
        "data.account_type": [
            "The selected data.account_type is invalid."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "A request with this Idempotency-Key is still in progress, or did not finish. Try again shortly; if this persists, check the transaction list before retrying with a new key."
    }
}
{
    "data": {
        "message": "This Idempotency-Key was already used for a different request. Use a new key for each new request."
    }
}

Tokenize a Credit Card

POST
https://app.dimepayments.com
/api/transaction/tokenize-card
requires authentication

This endpoint allows you to tokenize a credit card, which will verify its validity and return a token representing the card that can be used for transactions. This method requires PCI compliance on the part of the affiliate or merchant.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/transaction/tokenize-card" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 1234567,
        \"cardholder_name\": \"John Doe\",
        \"card_number\": 1234567812345678,
        \"expiration_date\": \"01\\/2025\",
        \"cvv\": 123,
        \"billing_address\": {
            \"addr1\": \"1234 Main St\",
            \"addr2\": \"Suite 100\",
            \"city\": \"New York\",
            \"state\": \"NY\",
            \"zip\": \"10001\"
        }
    }
}"
Example response:
{
    "data": {
        "token": "abcd1234"
    }
}
{
    "errors": {
        "card_number": [
            "The card number must be a number."
        ]
    }
}
{
    "data": {
        "message": "Validation of card failed."
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}

Show Transaction

GET
https://app.dimepayments.com
/api/transaction
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/transaction" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 1234567,
        \"transaction_info_id\": 6789131231,
        \"transaction_type\": \"ACH\",
        \"transaction_id\": 123
    }
}"
Example response:
{
    "data": {
        "transaction_type": "CC",
        "transaction_status": "CC Pending",
        "transaction_status_description": "A cc transaction that is pending",
        "transaction_number": "1231",
        "transaction_date": "2021-01-01",
        "fund_date": "2021-01-01",
        "settle_date": "2021-01-01",
        "amount": "25.0000",
        "description": "",
        "status_code": "",
        "status_text": "",
        "email": "",
        "phone": "",
        "customer_uuid": "68d9feaa-04a9-4c48-8c00-a0b79c8b2f70",
        "multi_use_token": "",
        "pending": true,
        "transaction_info_id": "1231321",
        "parent_transaction_info_id": "12313244444",
        "billing_address": {
            "first_name": "",
            "last_name": "",
            "addr1": "",
            "addr2": "",
            "city": "",
            "state": "",
            "zip": ""
        },
        "shipping_address": {
            "addr1": "123 Main St",
            "addr2": "apt 1",
            "city": "Alpharetta",
            "state": "GA",
            "zip": "12345"
        }
    }
}
{
    "errors": {
        "data.sid": [
            "The data.sid is not the correct format."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "User not associated with the affiliate."
    }
}
{
    "data": {
        "message": "No transaction found"
    }
}

Authorize a Credit Card

POST
https://app.dimepayments.com
/api/transaction/authorize
requires authentication

Places a hold on a credit card without moving any money. The authorized amount is reserved against the cardholder's available credit, and no funds reach the merchant until the authorization is captured via the capture endpoint.

Use this when the final amount is not yet known or goods have not shipped. Capture the authorization once you are ready to collect. An authorization that is never captured is released by the card issuer on its own schedule, so capture promptly — typically within 24 hours — to avoid the hold expiring.

The transaction_number in the response is your handle on the authorization: pass it as data.transaction_id to the capture endpoint to collect, or to the void endpoint to release.

Releasing the hold. If the sale falls through, release the held funds instead of capturing by calling the void endpoint — PATCH /api/transaction/void:

{ "data": { "sid": 1234567, "transaction_type": "CC", "transaction_id": "1234567890" } }

data.transaction_type must be CC. Voiding is gated by its own separate API key permission, not by this one, so make sure your key carries it if you need to release holds.

Two ways to supply the card, pick one. Either send a token from the tokenize-card endpoint, or send the raw card fields — card_number, expiration_date, cardholder_name and billing_address.zip, all four of which are required only when no token is present, and ignored when one is. Sending raw card data requires PCI compliance (an AoC on file with Dime Payments); a token does not, because no card number is transmitted.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Idempotency-Key
Example:
order-1234-attempt-1
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/transaction/authorize" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Idempotency-Key: order-1234-attempt-1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"amount\": 100.5,
        \"sid\": 1234567,
        \"phone\": \"+17701234567\",
        \"customer_uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"email\": \"[email protected]\",
        \"memo\": \"order 1234\",
        \"token\": \"abc123def456\",
        \"cardholder_name\": \"John Doe\",
        \"card_number\": 1231231231231231,
        \"expiration_date\": \"01\\/2030\",
        \"cvv\": 123,
        \"billing_address\": {
            \"first_name\": \"John\",
            \"last_name\": \"Doe\",
            \"addr1\": \"1234 Main St\",
            \"addr2\": \"Suite 100\",
            \"city\": \"Atlanta\",
            \"state\": \"NY\",
            \"zip\": \"10001\"
        },
        \"shipping_address\": {
            \"addr1\": \"123 A Street\",
            \"addr2\": \"Suite 123\",
            \"city\": \"Alpharetta\",
            \"state\": \"GA\",
            \"zip\": \"12345\"
        }
    }
}"
Example response:
{
    "data": {
        "transaction_type": "Credit Card",
        "transaction_status": "Pending",
        "transaction_status_description": "Pending",
        "transaction_number": "1234567890",
        "transaction_date": "2020-01-01",
        "fund_date": "",
        "settle_date": "",
        "amount": "100.50",
        "description": "a memo concerning this transaction",
        "status_code": "00",
        "status_text": "APPROVAL",
        "email": "[email protected]",
        "phone": "+17701234567",
        "customer_uuid": "66f1c230-1337-5g59-b43c-1bcb83adfaaa",
        "multi_use_token": "abcdefg123456790",
        "pending": true,
        "transaction_info_id": "",
        "parent_transaction_info_id": "",
        "billing_address": {
            "first_name": "John",
            "last_name": "Doe",
            "addr1": "123 Main St",
            "addr2": "Suite 100",
            "city": "New York",
            "state": "NY",
            "zip": "10001"
        },
        "shipping_address": {
            "addr1": "12 Street Ave",
            "addr2": "Suite 123",
            "city": "Boulder",
            "state": "CO",
            "zip": "80302"
        }
    }
}
{
    "errors": {
        "data.amount": [
            "The data.amount field is required."
        ]
    }
}
{
    "data": {
        "transaction_type": "Credit Card",
        "transaction_status": "",
        "transaction_status_description": "",
        "transaction_number": "",
        "amount": "100.50",
        "status_code": "05",
        "status_text": "DECLINE",
        "pending": false
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Not associated with Affiliate"
    }
}
{
    "data": {
        "message": "Merchant is not PCI Compliant"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "A request with this Idempotency-Key is still in progress, or did not finish. Try again shortly; if this persists, check the transaction list before retrying with a new key."
    }
}
{
    "data": {
        "message": "Token expired. Please retokenize, or provide the card details."
    }
}
{
    "data": {
        "message": "This Idempotency-Key was already used for a different request. Use a new key for each new request."
    }
}

Capture an Authorized Credit Card

POST
https://app.dimepayments.com
/api/transaction/capture
requires authentication

Captures funds from a credit card authorization created by the authorize endpoint. This is the point at which money actually moves: the authorization only reserved the funds.

Pass the transaction_number returned by the authorize endpoint as data.transaction_id. Omit data.amount to capture the full authorized amount, or pass a smaller amount to capture part of it — useful when the final total came in below the original estimate. The capture amount may not exceed the authorized amount.

An authorization can only be captured once, and a partial capture closes it. Capturing $50 of a $100 hold settles $50 and releases the remaining $50 back to the cardholder — a second call for the balance is refused with "Transaction is not an open authorization." If you need to collect in more than one instalment (a split shipment, say), authorize each instalment separately. Capture the true final amount in one call wherever you can.

Capture promptly, typically within 24 hours of authorizing: an uncaptured authorization is released by the card issuer on its own schedule and can no longer be captured once it expires.

A captured transaction becomes an ordinary card payment and can be refunded or voided through the refund and void endpoints. Note that the refund endpoint voids rather than refunds until the transaction has settled, and reports "message": "void" when it does — that is the correct handling for money that has not left the cardholder's account yet, and it emits a Credit Card Void event rather than a Credit Card Refund one.

To release a hold without taking any money, do not call this endpoint — call PATCH /api/transaction/void with data.transaction_type of CC and the authorization's transaction_number as data.transaction_id. The refund and void endpoints are gated by their own separate API key permission, not by this one.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Idempotency-Key
Example:
order-1234-attempt-1
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/transaction/capture" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Idempotency-Key: order-1234-attempt-1" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 1234567,
        \"transaction_id\": 1234567890,
        \"amount\": 100.5
    }
}"
Example response:
{
    "data": {
        "message": "Transaction captured successfully.",
        "transaction_id": "1234567890",
        "authorized_amount": "120.00",
        "captured_amount": "95.00",
        "status": "captured",
        "captured_at": "2026-10-13T15:02:11-04:00"
    }
}
{
    "errors": {
        "data.transaction_id": [
            "The data.transaction_id field is required."
        ]
    }
}
{
    "data": {
        "message": "No transaction found.",
        "code": "not_found"
    }
}
{
    "data": {
        "message": "Transaction is not an open authorization.",
        "code": "already_captured"
    }
}
{
    "data": {
        "message": "Transaction is not an open authorization.",
        "code": "voided"
    }
}
{
    "data": {
        "message": "Amount cannot be greater than the authorized amount",
        "code": "amount_exceeds_authorization"
    }
}
{
    "data": {
        "message": "Error processing capture",
        "code": "processor_declined",
        "reason": "Transaction rejected because the authorization has expired."
    }
}
{
    "data": {
        "message": "Unsupported processor."
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Not associated with Affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "A request with this Idempotency-Key is still in progress, or did not finish. Try again shortly; if this persists, check the transaction list before retrying with a new key."
    }
}
{
    "data": {
        "message": "This Idempotency-Key was already used for a different request. Use a new key for each new request."
    }
}

Refund Transaction

POST
https://app.dimepayments.com
/api/transaction/refund
requires authentication

Processes a refund for a transaction based on the provided data.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Idempotency-Key
Example:
order-1234-attempt-1
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/transaction/refund" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Idempotency-Key: order-1234-attempt-1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 1234567,
        \"amount\": 100.5,
        \"transaction_info_id\": 6789131231,
        \"transaction_type\": \"CC\",
        \"transaction_id\": 6789131231,
        \"override_ach_settlement_wait\": true
    }
}"
Example response:
{
    "data": {
        "message": "refund"
    }
}
{
    "data": {
        "message": "refund"
    }
}
{
    "errors": {
        "data.sid": [
            "The sid field is required."
        ],
        "data.transaction_info_id": [
            "The selected transaction_info_id is invalid."
        ]
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "message": "ACH transactions can only be refunded after 7 days. 4.9999996830324 day(s) remaining."
}
{
    "data": {
        "message": "Error processing refund"
    }
}
{
    "data": {
        "message": "Unsupported processor."
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "A request with this Idempotency-Key is still in progress, or did not finish. Try again shortly; if this persists, check the transaction list before retrying with a new key."
    }
}
{
    "data": {
        "message": "This Idempotency-Key was already used for a different request. Use a new key for each new request."
    }
}

Void Transaction

PATCH
https://app.dimepayments.com
/api/transaction/void
requires authentication

Void a transaction

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Idempotency-Key
Example:
order-1234-attempt-1
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/transaction/void" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Idempotency-Key: order-1234-attempt-1" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\",
        \"transaction_type\": \"ACH\",
        \"transaction_id\": 123
    }
}"
Example response:
{
    "data": {
        "message": "Transaction voided successfully"
    }
}
{
    "errors": {
        "data.sid": [
            "The data.sid is not the correct format."
        ]
    }
}
{
    "data": {
        "message": "No transaction found"
    }
}
{
    "data": {
        "message": "Unsupported Processor"
    }
}
{
    "data": {
        "message": "Transaction cannot be voided"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "User not associated with the affiliate."
    }
}
{
    "data": {
        "message": "A request with this Idempotency-Key is still in progress, or did not finish. Try again shortly; if this persists, check the transaction list before retrying with a new key."
    }
}
{
    "data": {
        "message": "This Idempotency-Key was already used for a different request. Use a new key for each new request."
    }
}

Chargeback management

List Chargebacks

GET
https://app.dimepayments.com
/api/chargeback/list
requires authentication

Get the chargebacks raised against a merchant.

Chargeback data reaches us through a once-daily file from the processor, so this reflects the most recent daily import rather than live dispute activity. Pair it with the chargeback_opened / chargeback_updated / chargeback_resolved webhooks: the webhooks tell you when something changed, this endpoint is how you reconcile or backfill after an outage, since webhook deliveries are not replayable.

A merchant with nothing to show answers 200 with an empty data array, not a 404. A 404 from this endpoint means the merchant itself was not found.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/chargeback/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\"
    },
    \"filters\": {
        \"start_date\": \"\\\"2026-04-01 00:00:00\\\"\",
        \"end_date\": \"\\\"2026-04-30 23:59:59\\\"\",
        \"representment_status\": \"\\\"New\\\"\"
    }
}"
Example response:
{
    "data": [
        {
            "transaction_info_id": "1134722723",
            "parent_transaction_info_id": "1132652128",
            "gateway_transaction_id": null,
            "transaction_number": "1566",
            "invoice_number": null,
            "chargeback_date": "2025-05-04T17:45:05-04:00",
            "merchant_chargeback_date": "2025-05-04T19:45:05-04:00",
            "transaction_amount": 391.48,
            "chargeback_amount": 391.48,
            "card_brand": "V",
            "cc_last_four": "2510",
            "payee_name": null,
            "days_to_represent": 0,
            "representment_date": "2025-05-12T06:26:00-04:00",
            "merchant_representment_date": "2025-05-05T07:32:01-04:00",
            "representment_status": "accepting chargeback",
            "result": "Accepting",
            "chargeback_code": "4",
            "chargeback_response_code": "Other fraud - Card Absent Environment",
            "resolved": false
        },
        {
            "transaction_info_id": "1134722723",
            "parent_transaction_info_id": "1132652128",
            "gateway_transaction_id": null,
            "transaction_number": "1566",
            "invoice_number": null,
            "chargeback_date": "2025-05-04T17:45:05-04:00",
            "merchant_chargeback_date": "2025-05-04T19:45:05-04:00",
            "transaction_amount": 391.48,
            "chargeback_amount": 391.48,
            "card_brand": "V",
            "cc_last_four": "2510",
            "payee_name": null,
            "days_to_represent": 0,
            "representment_date": "2025-05-12T06:26:00-04:00",
            "merchant_representment_date": "2025-05-05T07:32:01-04:00",
            "representment_status": "accepting chargeback",
            "result": "Accepting",
            "chargeback_code": "4",
            "chargeback_response_code": "Other fraud - Card Absent Environment",
            "resolved": false
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "data": [],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "errors": {
        "filters.start_date": [
            "The filters.start_date field must match the format Y-m-d H:i:s."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Not associated with Affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show Chargeback

GET
https://app.dimepayments.com
/api/chargeback/show
requires authentication

Get a single chargeback by its processor identifier.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/chargeback/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\",
        \"transaction_info_id\": \"\\\"8675309\\\"\"
    }
}"
Example response:
{
    "data": {
        "transaction_info_id": "1134722723",
        "parent_transaction_info_id": "1132652128",
        "gateway_transaction_id": null,
        "transaction_number": "1566",
        "invoice_number": null,
        "chargeback_date": "2025-05-04T17:45:05-04:00",
        "merchant_chargeback_date": "2025-05-04T19:45:05-04:00",
        "transaction_amount": 391.48,
        "chargeback_amount": 391.48,
        "card_brand": "V",
        "cc_last_four": "2510",
        "payee_name": null,
        "days_to_represent": 0,
        "representment_date": "2025-05-12T06:26:00-04:00",
        "merchant_representment_date": "2025-05-05T07:32:01-04:00",
        "representment_status": "accepting chargeback",
        "result": "Accepting",
        "chargeback_code": "4",
        "chargeback_response_code": "Other fraud - Card Absent Environment",
        "resolved": false
    }
}
{
    "errors": {
        "data.transaction_info_id": [
            "The data.transaction_info_id field is required."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Not associated with Affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No chargeback found"
    }
}

Document management

Upload Documents

POST
https://app.dimepayments.com
/api/document/upload
requires authentication

Send us one or more documents for a merchant, stating what they are for.

This endpoint is general purpose — underwriting paperwork, identity verification, and evidence contesting a chargeback all come through here, distinguished by data.doc_type. To attach evidence to a specific dispute, pass data.chargeback_transaction_info_id as well; the value is the transaction_info_id from the chargeback endpoints or the chargeback webhooks.

This request is multipart/form-data, not JSON — it is the only endpoint on this API that is. Send the body fields as form fields named data[sid], data[doc_type] and so on, and the files as files[].

Note the bracket notation: multipart has no JSON parsing, so a single field named data containing {"sid": "..."} is read as a plain string and the merchant is never identified. That fails as 403 You do not have access to this company., which looks like a credentials problem but is not — check your field names first. Likewise the files field is files[], not files.

Files are stored independently. If one fails, the rest are still kept and the response lists what did not store under failed, so you can re-send only those rather than the whole batch.

Uploading does not send the document to the processor. It lands in the merchant's document list and notifies our team, who review it and forward it. There is no programmatic way to file a representment with the processor on your behalf.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
multipart/form-data
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/document/upload" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "data[sid]=91828382"\
    --form "data[doc_type]=RetrievalRequest"\
    --form "data[chargeback_transaction_info_id]="8675309""\
    --form "files[]=@/tmp/phpeev27fkuvn4a32JOaBi" 
Example response:
{
    "data": {
        "message": "2 documents uploaded.",
        "documents": [
            {
                "uuid": "9b1c...",
                "file_name": "receipt.pdf",
                "doc_type": "RetrievalRequest",
                "size": 20841
            }
        ]
    }
}
{
    "data": {
        "message": "2 documents uploaded. 1 could not be stored.",
        "documents": [
            {
                "uuid": "9b1c...",
                "file_name": "receipt.pdf",
                "doc_type": "RetrievalRequest",
                "size": 20841
            }
        ],
        "failed": [
            {
                "file_name": "statement.pdf",
                "reason": "The file could not be stored. Send it again."
            }
        ]
    }
}
{
    "errors": {
        "files.0": [
            "The files.0 field must be a file of type: pdf, jpg, jpeg, png, doc, docx, rtf."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Not associated with Affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "errors": {
        "files": [
            "The upload is larger than this server accepts (8M per request). Send fewer files per request, or split them across requests."
        ]
    }
}
{
    "data": {
        "message": "Merchant is not set up to receive documents"
    }
}

List Documents

GET
https://app.dimepayments.com
/api/document/list
requires authentication

The documents held for a merchant, so you can confirm what we have received. Covers documents uploaded through this API and those added by our team or through the merchant application.

A merchant with no documents answers 200 with an empty data array, not a 404. A 404 from this endpoint means the merchant itself was not found. This endpoint is not paginated.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/document/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\"
    },
    \"filters\": {
        \"doc_type\": \"RetrievalRequest\",
        \"chargeback_transaction_info_id\": \"\\\"8675309\\\"\"
    }
}"
Example response:
{
    "data": [
        {
            "uuid": "9b1c...",
            "file_name": "receipt.pdf",
            "doc_type": "RetrievalRequest",
            "chargeback_transaction_info_id": "8675309",
            "size": 20841,
            "uploaded_at": "2026-09-18T11:35:01+00:00",
            "uploaded_via": "api",
            "sent_to_processor": null
        }
    ]
}
{
    "data": []
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Addresses

APIs for managing customer addresses

List Addresses

GET
https://app.dimepayments.com
/api/address/list
requires authentication

List all addresses for a specific customer.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/address/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\"
    }
}"
Example response:
{
    "data": [
        [
            {
                "id": 1,
                "recipient": null,
                "line_one": "",
                "line_two": null,
                "line_three": null,
                "city": "",
                "state": "",
                "zip": ""
            },
            {
                "id": 1,
                "recipient": null,
                "line_one": "",
                "line_two": null,
                "line_three": null,
                "city": "",
                "state": "",
                "zip": ""
            }
        ]
    ]
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Customer"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show Address

GET
https://app.dimepayments.com
/api/address/show
requires authentication

Show details of a specific address.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/address/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"address_id\": 1
    }
}"
Example response:
{
    "data": {
        "address_id": 1,
        "recipient": null,
        "line_one": "",
        "line_two": null,
        "line_three": null,
        "city": "",
        "state": "",
        "zip": ""
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Address"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No such Customer"
    }
}

Create Address

POST
https://app.dimepayments.com
/api/address/create
requires authentication

Create a new address for a customer.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/address/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"recipient\": \"John Doe\",
        \"line_one\": \"123 Main St\",
        \"line_two\": \"Apt 4B\",
        \"line_three\": \"architecto\",
        \"city\": \"Atlanta\",
        \"state\": \"GA\",
        \"zip\": \"30301\"
    }
}"
Example response:
{
    "data": {
        "address_id": 1,
        "recipient": null,
        "line_one": "",
        "line_two": null,
        "line_three": null,
        "city": "",
        "state": "",
        "zip": ""
    }
}
{
    "data": {
        "message": "Failed to create address"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No such Customer"
    }
}

Update Address

PATCH
https://app.dimepayments.com
/api/address/update
requires authentication

Update an existing address.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/address/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"address_id\": 1,
        \"recipient\": \"John Doe\",
        \"line_one\": \"123 Main St\",
        \"line_two\": \"Apt 4B\",
        \"line_three\": \"architecto\",
        \"city\": \"Atlanta\",
        \"state\": \"GA\",
        \"zip\": \"30301\"
    }
}"
Example response:
{
    "data": {
        "address_id": 1,
        "recipient": null,
        "line_one": "",
        "line_two": null,
        "line_three": null,
        "city": "",
        "state": "",
        "zip": ""
    }
}
{
    "data": {
        "message": "Failed to update address"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No such Customer"
    }
}

Delete Address

POST
https://app.dimepayments.com
/api/address/delete
requires authentication

Remove an address from a customer.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/address/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"address_id\": 1
    }
}"
Example response:
{
    "data": {
        "message": "Address deleted successfully"
    }
}
{
    "data": {
        "message": "Unable to delete"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Address"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No such Customer"
    }
}

Customer management

APIs for managing customers. Depending on API KEY permissions, one should be able to list, create, update, and delete customers along with several other customer specific requests.

List Customers

GET
https://app.dimepayments.com
/api/customer/list
requires authentication

Retrieves a list of customers for a given company, filtered by various parameters.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/customer/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    },
    \"filters\": {
        \"start_date\": \"2024-01-01 00:00:00\",
        \"end_date\": \"2024-12-31 23:59:59\",
        \"phone\": \"+15555555555\",
        \"email\": \"[email protected]\"
    }
}"
Example response:
{
    "data": [
        [
            {
                "id": 6,
                "uuid": "66f1c230-68cf-4d58-b47c-1bcb83adfddd",
                "first_name": "Ryan",
                "last_name": "Taylor",
                "company_name": "",
                "phone": "+17707892072",
                "phone_verified_at": "2026-09-04T20:40:06.000000Z",
                "email": "[email protected]",
                "email_verified_at": null,
                "addr1": "4655 Hwy 136 W",
                "addr2": "",
                "addr3": "",
                "city": "Dawsonville",
                "state": "GA",
                "zip": "30534",
                "country": "USA",
                "email_communications": true,
                "sms_communications": false,
                "payment_reminders": true,
                "last_login_at": "2026-09-04T20:40:06.000000Z",
                "last_login_ip": "72.255.199.38"
            },
            {
                "id": 6,
                "uuid": "66f1c230-68cf-4d58-b47c-1bcb83adfddd",
                "first_name": "Ryan",
                "last_name": "Taylor",
                "company_name": "",
                "phone": "+17707892072",
                "phone_verified_at": "2026-09-04T20:40:06.000000Z",
                "email": "[email protected]",
                "email_verified_at": null,
                "addr1": "4655 Hwy 136 W",
                "addr2": "",
                "addr3": "",
                "city": "Dawsonville",
                "state": "GA",
                "zip": "30534",
                "country": "USA",
                "email_communications": true,
                "sms_communications": false,
                "payment_reminders": true,
                "last_login_at": "2026-09-04T20:40:06.000000Z",
                "last_login_ip": "72.255.199.38"
            }
        ]
    ]
}
{
    "message": "Validation errors"
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Merchant or Affiliate check failed"
    }
}

Show Customer

GET
https://app.dimepayments.com
/api/customer/show
requires authentication

Show a specific customer's details

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/customer/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    },
    \"filters\": {
        \"phone\": \"+15555555555\",
        \"email\": \"[email protected]\",
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\"
    }
}"
Example response:
{
    "data": {
        "uuid": "66f1c230-68cf-4d58-b47c-1bcb83adfddd",
        "first_name": "Ryan",
        "last_name": "Taylor",
        "phone": "+17707892072",
        "email": "[email protected]",
        "addr1": "4655 Hwy 136 W",
        "addr2": "",
        "addr3": "",
        "city": "Dawsonville",
        "state": "GA",
        "zip": "30534",
        "country": "USA"
    }
}
{
    "message": "Validation errors"
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Merchant or Affiliate check failed"
    }
}

Create Customer

POST
https://app.dimepayments.com
/api/customer/create
requires authentication

Create a customer record linked to your Company/Merchant.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/customer/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"first_name\": \"architecto\",
        \"last_name\": \"architecto\",
        \"company_name\": \"architecto\",
        \"phone\": \"architecto\",
        \"email\": \"[email protected]\",
        \"addr1\": \"architecto\",
        \"addr2\": \"architecto\",
        \"addr3\": \"architecto\",
        \"city\": \"architecto\",
        \"state\": \"architecto\",
        \"zip\": \"architecto\",
        \"country\": \"n\"
    }
}"
Example response:
{
    "data": {
        "uuid": "66f1c230-68cf-4d58-b47c-1bcb83adfddd",
        "first_name": "Ryan",
        "last_name": "Taylor",
        "phone": "+17707892072",
        "email": "[email protected]",
        "addr1": "4655 Hwy 136 W",
        "addr2": "",
        "addr3": "",
        "city": "Dawsonville",
        "state": "GA",
        "zip": "30534",
        "country": "USA"
    }
}
{
    "message": "Validation errors"
}
{
    "message": "Failed to create Customer"
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Merchant or Affiliate check failed"
    }
}

Update Customer

PATCH
https://app.dimepayments.com
/api/customer/update
requires authentication

Update a customer record. Make changes to the customer referenced by UUID, phone number, or email. One of the filters is required to be provided to select a unique customer. Only pass the fields that require updating in the data object.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/customer/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"phone\": \"+15555555555\",
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"email\": \"[email protected]\"
    },
    \"data\": {
        \"sid\": 12345,
        \"first_name\": \"architecto\",
        \"last_name\": \"architecto\",
        \"company_name\": \"architecto\",
        \"addr1\": \"architecto\",
        \"addr2\": \"architecto\",
        \"addr3\": \"architecto\",
        \"city\": \"architecto\",
        \"state\": \"architecto\",
        \"zip\": \"architecto\",
        \"country\": \"n\"
    }
}"
Example response:
{
    "data": {
        "uuid": "66f1c230-68cf-4d58-b47c-1bcb83adfddd",
        "first_name": "Ryan",
        "last_name": "Taylor",
        "phone": "+17707892072",
        "email": "[email protected]",
        "addr1": "4655 Hwy 136 W",
        "addr2": "",
        "addr3": "",
        "city": "Dawsonville",
        "state": "GA",
        "zip": "30534",
        "country": "USA"
    }
}
{
    "message": "Validation errors"
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Merchant or Affiliate check failed"
    }
}

Delete Customer

POST
https://app.dimepayments.com
/api/customer/delete
requires authentication

Delete a customer record from the selected Merchant. One of the filters is required to select a unique customer. This will also cancel any recurring payments associated with the customer for your company.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/customer/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"phone\": \"+15555555555\",
        \"uuid\": \"60dac128-28da-41ae-8632-aee299de13fd\",
        \"email\": \"[email protected]\"
    },
    \"data\": {
        \"sid\": 12345
    }
}"
Example response:
{
    "data": {
        "uuid": "66f1c230-68cf-4d58-b47c-1bcb83adfddd",
        "first_name": "Ryan",
        "last_name": "Taylor",
        "phone": "+17707892072",
        "email": "[email protected]",
        "addr1": "4655 Hwy 136 W",
        "addr2": "",
        "addr3": "",
        "city": "Dawsonville",
        "state": "GA",
        "zip": "30534",
        "country": "USA"
    }
}
{
    "data": {
        "message": "Customer removed successfully"
    }
}
{
    "message": "Validation errors"
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Merchant or Affiliate check failed"
    }
}

Deposit management

List Deposits

GET
https://app.dimepayments.com
/api/deposit/list
requires authentication

Get Deposits from Merchant Account with supporting transactions

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/deposit/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\"
    },
    \"filters\": {
        \"start_date\": \"\\\"2024-04-01 00:00:00\\\"\",
        \"end_date\": \"\\\"2024-04-01 23:59:59\\\"\"
    }
}"
Example response:
{
    "data": [
        {
            "transaction_date": "2023-02-15T19:14:44.000000Z",
            "fund_date": "2023-02-17 00:05:35",
            "transaction_info_id": "789161791",
            "transaction_id": "1",
            "transaction_detail_account": "1005",
            "authorization_amount": "1.0000",
            "net_amount": "0.7200",
            "sweep_id": "125068038",
            "type": "withdraw_funds"
        },
        {
            "transaction_date": "2023-02-15T19:14:44.000000Z",
            "fund_date": "2023-02-17 00:05:35",
            "transaction_info_id": "789161791",
            "transaction_id": "1",
            "transaction_detail_account": "1005",
            "authorization_amount": "1.0000",
            "net_amount": "0.7200",
            "sweep_id": "125068038",
            "type": "withdraw_funds"
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 15,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "errors": {
        "filters.start_date": [
            "The filters.start_date field must be a valid date.",
            "The filters.start_date field must match the format Y-m-d H:i:s."
        ]
    }
}
{
    "message": "Permission Denied."
}
{
    "message": "Not associated with Affiliate"
}
{
    "message": "The selected data.sid is invalid"
}
{
    "message": "Unauthorized"
}
{
    "message": "No deposits found"
}

List Deposits with Supporting Trans

GET
https://app.dimepayments.com
/api/deposit/list-with-trans
requires authentication

Get Deposits from Merchant Account with supporting transactions. Could result in large datasets if range is too large.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/deposit/list-with-trans" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\"
    },
    \"filters\": {
        \"start_date\": \"2024-05-01 00:00:00\",
        \"end_date\": \"2024-05-01 00:00:00\"
    }
}"
Example response:
{
    "data": {
        "sid": "XXXXX",
        "count": 1,
        "deposits": {
            "128298672": {
                "sid": "XXXXX",
                "transaction_info_id": "983999999",
                "transaction_id": "382",
                "transaction_date": "2024-05-01T04:00:00.000000Z",
                "fund_date": "2024-05-01 02:20:35",
                "type": "withdraw_funds",
                "countOfTransactions": 3,
                "transTotal": "545.98",
                "transactions": [
                    {
                        "transaction_type": "ACH",
                        "transaction_status": "ACH_PAYMENT_CREDIT",
                        "transaction_status_description": "Successfully completed ACH Payment that has been posted to the Escrow Account.",
                        "transaction_number": "369",
                        "transaction_date": "2024-04-29T08:30:25.000000Z",
                        "fund_date": "2024-04-30T20:05:21.000000Z",
                        "settle_date": "2024-04-29T17:51:02.000000Z",
                        "amount": "369.0000",
                        "description": "",
                        "status_code": "",
                        "status_text": "",
                        "email": "",
                        "phone": "",
                        "customer_uuid": "",
                        "multi_use_token": "",
                        "pending": false,
                        "transaction_info_id": "123123123123",
                        "parent_transaction_info_id": "123123123124",
                        "billing_address": {
                            "first_name": null,
                            "last_name": null,
                            "addr1": null,
                            "addr2": null,
                            "city": null,
                            "state": null,
                            "zip": null
                        }
                    },
                    {
                        "transaction_type": "CC",
                        "transaction_status": "CC_CREDIT",
                        "transaction_status_description": "Successful credit/debit card transaction that brings funds into the merchant account.",
                        "transaction_number": "1919162951",
                        "transaction_date": "2024-04-29T08:37:29.000000Z",
                        "fund_date": "2024-04-30T20:05:22.000000Z",
                        "settle_date": "2024-05-07T11:30:03.000000Z",
                        "amount": "103.0800",
                        "description": "",
                        "status_code": "",
                        "status_text": "",
                        "email": "",
                        "phone": "",
                        "customer_uuid": "",
                        "multi_use_token": "",
                        "pending": false,
                        "transaction_info_id": "123123123123",
                        "parent_transaction_info_id": "123123123124",
                        "billing_address": {
                            "first_name": null,
                            "last_name": null,
                            "addr1": null,
                            "addr2": null,
                            "city": null,
                            "state": null,
                            "zip": null
                        }
                    },
                    {
                        "transaction_type": "CC",
                        "transaction_status": "CC_CREDIT",
                        "transaction_status_description": "Successful credit/debit card transaction that brings funds into the merchant account.",
                        "transaction_number": "1920383851",
                        "transaction_date": "2024-04-29T11:52:43.000000Z",
                        "fund_date": "2024-04-30T20:05:22.000000Z",
                        "settle_date": "2024-05-07T11:30:03.000000Z",
                        "amount": "82.5200",
                        "description": "",
                        "status_code": "",
                        "status_text": "",
                        "email": "",
                        "phone": "",
                        "customer_uuid": "",
                        "multi_use_token": "",
                        "pending": false,
                        "transaction_info_id": "123123123123",
                        "parent_transaction_info_id": "123123123124",
                        "billing_address": {
                            "first_name": null,
                            "last_name": null,
                            "addr1": null,
                            "addr2": null,
                            "city": null,
                            "state": null,
                            "zip": null
                        }
                    }
                ]
            }
        }
    }
}
{}
{
    "errors": {
        "data.sid": [
            "The data.sid is not the correct format."
        ]
    }
}
{
    "data.message": "Permission Denied."
}
{
    "data.message": "No Merchant found with SID provided."
}
{
    "data.message": "User not associated with the affiliate."
}
{
    "data.message": "Merchant not associated with affiliate."
}

Show Deposit with Supporting Trans

GET
https://app.dimepayments.com
/api/deposit/show
requires authentication

Show a Deposit from Merchant Account with supporting transactions

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/deposit/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 4326.41688,
        \"transaction_info_id\": \"91828382\",
        \"sweep_id\": \"\\\"2024-04-01 00:00:00\\\"\"
    }
}"
Example response:
{
    "data": {
        "sid": "XXXXX",
        "transaction_info_id": "983999999",
        "transaction_id": "382",
        "transaction_date": "2024-05-01T04:00:00.000000Z",
        "fund_date": "2024-05-01 02:20:35",
        "type": "withdraw_funds",
        "countOfTransactions": 3,
        "transTotal": "545.98",
        "transactions": [
            {
                "transaction_type": "ACH",
                "transaction_status": "ACH_PAYMENT_CREDIT",
                "transaction_status_description": "Successfully completed ACH Payment that has been posted to the Escrow Account.",
                "transaction_number": "369",
                "transaction_date": "2024-04-29T08:30:25.000000Z",
                "fund_date": "2024-04-30T20:05:21.000000Z",
                "settle_date": "2024-04-29T17:51:02.000000Z",
                "amount": "369.0000",
                "description": "",
                "status_code": "",
                "status_text": "",
                "email": "",
                "phone": "",
                "customer_uuid": "",
                "multi_use_token": "",
                "pending": false,
                "transaction_info_id": "123123212312",
                "parent_transaction_info_id": "123123212314",
                "billing_address": {
                    "first_name": null,
                    "last_name": null,
                    "addr1": null,
                    "addr2": null,
                    "city": null,
                    "state": null,
                    "zip": null
                }
            },
            {
                "transaction_type": "CC",
                "transaction_status": "CC_CREDIT",
                "transaction_status_description": "Successful credit/debit card transaction that brings funds into the merchant account.",
                "transaction_number": "1919162951",
                "transaction_date": "2024-04-29T08:37:29.000000Z",
                "fund_date": "2024-04-30T20:05:22.000000Z",
                "settle_date": "2024-05-07T11:30:03.000000Z",
                "amount": "103.0800",
                "description": "",
                "status_code": "",
                "status_text": "",
                "email": "",
                "phone": "",
                "customer_uuid": "",
                "multi_use_token": "",
                "pending": false,
                "transaction_info_id": "123123212312",
                "parent_transaction_info_id": "123123212314",
                "billing_address": {
                    "first_name": null,
                    "last_name": null,
                    "addr1": null,
                    "addr2": null,
                    "city": null,
                    "state": null,
                    "zip": null
                }
            },
            {
                "transaction_type": "CC",
                "transaction_status": "CC_CREDIT",
                "transaction_status_description": "Successful credit/debit card transaction that brings funds into the merchant account.",
                "transaction_number": "1920383851",
                "transaction_date": "2024-04-29T11:52:43.000000Z",
                "fund_date": "2024-04-30T20:05:22.000000Z",
                "settle_date": "2024-05-07T11:30:03.000000Z",
                "amount": "82.5200",
                "description": "",
                "status_code": "",
                "status_text": "",
                "email": "",
                "phone": "",
                "customer_uuid": "",
                "multi_use_token": "",
                "pending": false,
                "transaction_info_id": "123123212314",
                "billing_address": {
                    "first_name": null,
                    "last_name": null,
                    "addr1": null,
                    "addr2": null,
                    "city": null,
                    "state": null,
                    "zip": null
                }
            }
        ]
    }
}
{}
{
    "errors": {
        "data.sid": [
            "The data.sid is not the correct format."
        ]
    }
}
{
    "data.message": "Permission Denied."
}
{
    "data.message": "No Merchant found with SID provided."
}
{
    "data.message": "User not associated with the affiliate."
}
{
    "data.message": "Merchant not associated with affiliate."
}

Held funds

Get held balance

GET
https://app.dimepayments.com
/api/funds/balance
requires authentication

The merchant's current balance at the processor, and how much of it is releasable today.

Only available for merchants on a fund-holding tier. Everyone else has no held balance by definition — their money sweeps automatically — and this returns 422 rather than a misleading zero.

releasable is the figure to pay attention to, and the one a release is checked against. It is available less four things:

  • at_risk — ACH payments that have funded but are still inside the settlement window, where the customer's bank can return the debit. Clears by waiting; ach_settlement_days says how long.
  • owed_to_split — a share of takings already promised to another account and not yet moved. Clears tonight, without anyone acting.
  • unresolved — releases already requested and not yet confirmed.
  • release_fee — what the release itself will cost.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/funds/balance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\"
    }
}"
Example response:
{
    "data": {
        "sid": "91828382",
        "available": 6492.87,
        "pending": 0,
        "reserve": 0,
        "at_risk": 1250,
        "owed_to_split": 40.15,
        "unresolved": 0,
        "release_fee": 30,
        "releasable": 5172.72,
        "ach_settlement_days": 7,
        "ach_out_enabled": true,
        "ach_out_limit_remaining": 19999999.99
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Not associated with Affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "This merchant's funds are not held; they settle automatically."
    }
}
{
    "data": {
        "message": "The processor could not be reached. Try again shortly."
    }
}

List releasable transactions

GET
https://app.dimepayments.com
/api/funds/transactions
requires authentication

The payments of a held-funds merchant that can be released right now, and what each comes to — the list to choose from when releasing by transaction_info_ids.

A payment is listed once the processor has reported it funded (usually the next day), is past the ACH return window if it is ACH, has had no refund, return or chargeback, and has not already been released. amount is its net amount less any split owed on it. Newest first, up to 500; truncated says whether there are more.

A payment being listed here does not guarantee it can be released on its own: every release is also capped by releasable on Get held balance.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/funds/transactions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\"
    }
}"
Example response:
{
    "data": {
        "sid": "91828382",
        "transactions": [
            {
                "transaction_info_id": "1297431",
                "type": "CC",
                "transaction_date": "2026-09-28T15:12:09+00:00",
                "gross_amount": 100,
                "net_amount": 97,
                "split_amount": 1.25,
                "amount": 95.75
            }
        ],
        "total": 95.75,
        "truncated": false
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "This merchant's funds are not held; they settle automatically."
    }
}

Release held funds

POST
https://app.dimepayments.com
/api/funds/release
requires authentication

Send part of a merchant's held balance to the bank account on file.

Name what to release in one of two ways:

  • amount — a dollar figure, when you keep your own record of what has cleared.
  • transaction_info_ids — the payments to pay out (see List releasable transactions). Each must be releasable; the amount is their total, and each can only ever be released once. All or nothing: if any one does not qualify, nothing is released and data.ineligible says which and why.

Always pass a fresh idempotency_key per intended release, and reuse it when retrying. A retry with the same key and the same request returns the original release instead of sending the money again — which matters, because a release that timed out may still have gone through. The same key with a different amount or different transactions is refused with 409.

Check the returned status, not only the HTTP code:

  • released (201) — sent.
  • failed (422) — declined; nothing moved. failure_reason says why.
  • unknown (202) — no confirmation came back. It may have gone through. Its amount is held back from releasable until it is reconciled, so retrying with a new key cannot send it twice; retrying with the same key returns this same record.
  • returned — never an answer to this call. It is what a released release becomes days later when the merchant's own bank rejects the transfer and the money comes back. You will see it here only by retrying that release's key, and on the funds_release_failed webhook. returned_at and return_code say when and why, and return_fee what the return cost.

The amount — given or totalled — is checked against a freshly calculated releasable (see Get held balance), not against any figure you read earlier, and is never reduced to fit.

Only one release per merchant is processed at a time; a second request while one is in flight receives 409 and should retry.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/funds/release" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"91828382\",
        \"amount\": 1500,
        \"transaction_info_ids\": [
            \"1297431\",
            \"1297455\"
        ],
        \"idempotency_key\": \"payout-2026-09-25-0001\"
    }
}"
Example response:
{
    "data": {
        "sid": "91828382",
        "replayed": false,
        "release": {
            "id": 42,
            "amount": 1500,
            "fee": 30,
            "status": "released",
            "status_label": "Released",
            "idempotency_key": "payout-2026-09-25-0001",
            "failure_reason": null,
            "requested_at": "2026-09-25T14:02:11+00:00",
            "completed_at": "2026-09-25T14:02:12+00:00",
            "returned_at": null,
            "return_code": null,
            "return_fee": null
        }
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "This idempotency key was already used for a release of $1,500.00. Use a new key for a different amount."
    }
}
{
    "data": {
        "message": "Another release for this merchant is in progress. Try again in a moment."
    }
}
{
    "data": {
        "message": "One of those transactions cannot be released. Nothing was released.",
        "ineligible": [
            {
                "transaction_info_id": "1297455",
                "reason": "ACH payments are held for 7 days in case the bank returns them. This one is releasable from 2026-10-02."
            }
        ]
    }
}
{
    "data": {
        "message": "That is more than is releasable. Up to $5,172.72 can be released right now.",
        "releasable": 5172.72
    }
}
{
    "data": {
        "message": "The processor could not be reached. Nothing was released; try again shortly."
    }
}

Invoice management

APIs for managing invoices. Depending on API KEY permissions, one should be able to list, create, update, delete, and send invoices, manage their line items, and manage recurring-invoice schedules. Every request is scoped to a single Merchant via the required data.sid.

List Invoices

GET
https://app.dimepayments.com
/api/invoices
requires authentication

Retrieves a paginated (cursor) list of invoices for a Merchant, optionally filtered by status.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/invoices" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    },
    \"filters\": {
        \"status\": \"sent\"
    }
}"
Example response:
{
    "data": [
        {
            "id": 1,
            "invoice_number": "INV-0001",
            "status": "paid",
            "customer_name": "Scott Porter",
            "customer_email": "[email protected]",
            "total": 2000,
            "amount_paid": 2000,
            "balance": 0,
            "cover_fee_required": true,
            "issue_date": "2026-09-03",
            "due_date": "2026-09-18",
            "is_overdue": false,
            "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK"
        },
        {
            "id": 1,
            "invoice_number": "INV-0001",
            "status": "paid",
            "customer_name": "Scott Porter",
            "customer_email": "[email protected]",
            "total": 2000,
            "amount_paid": 2000,
            "balance": 0,
            "cover_fee_required": true,
            "issue_date": "2026-09-03",
            "due_date": "2026-09-18",
            "is_overdue": false,
            "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK"
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "errors": {
        "filters.status": [
            "The selected filters.status is invalid."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show Invoice

GET
https://app.dimepayments.com
/api/invoice
requires authentication

Retrieves a single invoice with its line items, payments, and event history.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/invoice" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}

Create Invoice

POST
https://app.dimepayments.com
/api/invoice/create
requires authentication

Creates a draft invoice with its line items. Every line must reference an item (fund/designation) that belongs to the Merchant; the line name and unit price are snapshotted onto the invoice. The invoice number may be supplied, otherwise the next number is allocated automatically.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"lines\": [
            {
                \"item_id\": 5,
                \"name\": \"Consulting\",
                \"description\": \"2 hours\",
                \"quantity\": 2,
                \"unit_price\": 125
            }
        ]
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "errors": {
        "data.lines": [
            "The data.lines field is required."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Update Invoice

PATCH
https://app.dimepayments.com
/api/invoice/update
requires authentication

Updates a draft invoice. Only draft invoices can be edited — once sent, an invoice is locked. Passing data.lines replaces the existing line items.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/invoice/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"lines\": [
            {
                \"item_id\": 5,
                \"name\": \"Consulting\",
                \"description\": \"2 hours\",
                \"quantity\": 2,
                \"unit_price\": 125
            }
        ]
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "errors": {
        "data.customer_email": [
            "The data.customer email field is required."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "Only draft invoices can be edited."
    }
}

Delete Invoice

POST
https://app.dimepayments.com
/api/invoice/delete
requires authentication

Soft-deletes a draft invoice. Only draft invoices can be deleted.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "message": "Draft invoice deleted."
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "Only draft invoices can be deleted."
    }
}

Send Invoice

POST
https://app.dimepayments.com
/api/invoice/send
requires authentication

Emails the invoice to the customer with a link to the public pay page and advances the invoice to Sent. A paid, void, or refunded invoice cannot be sent.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/send" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "Invoice has no customer email to send to."
    }
}
{
    "data": {
        "message": "A paid, void, or refunded invoice cannot be sent."
    }
}

Mark Invoice Sent

POST
https://app.dimepayments.com
/api/invoice/mark-sent
requires authentication

Activates a draft invoice for payment WITHOUT emailing it — for Merchants who share the public link themselves. Advances Draft to Sent so the pay link becomes live.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/mark-sent" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "This invoice has already been sent."
    }
}

Void Invoice

PATCH
https://app.dimepayments.com
/api/invoice/void
requires authentication

Voids an invoice. Voiding is terminal — the invoice can no longer be paid. An already void or refunded invoice cannot be voided again.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/invoice/void" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "This invoice is already void or refunded."
    }
}

Duplicate Invoice

POST
https://app.dimepayments.com
/api/invoice/duplicate
requires authentication

Clones any invoice into a new draft (copying its line items) with a freshly allocated invoice number.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/duplicate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}

Pay Invoice

POST
https://app.dimepayments.com
/api/invoice/pay
requires authentication

Records a merchant-initiated (MOTO) payment against an open invoice, charging a credit card (raw card or a stored token) or a bank account (ACH) through the processor. Mirrors the card/ACH charge endpoints but targets the invoice: the amount is the invoice balance (or a partial amount when the invoice allows it), and on approval the invoice status/payment history/per-line classification are updated exactly as a customer payment.

When the invoice has cover_fee_required, the processing fee for the method being charged is added on top of data.amount — so the card or bank account is charged more than the amount credited to the invoice. The invoice is credited data.amount; the fee appears as cover_fee on the resulting entry in the response's payments array. Card and ACH rates differ, so the same data.amount produces a different charge per data.payment_type. Read cover_fee_quote from the invoice beforehand to know the totals in advance.

The invoice must be open (Sent/Viewed/Partially Paid) with a balance due on an active card-processing merchant. A declined card is NOT recorded as a payment.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/pay" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "errors": {
        "data.card_number": [
            "The data.card number field is required when data.token is not present."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "This invoice cannot be paid (it must be an open invoice with a balance due on an active card-processing merchant)."
    }
}
{
    "data": {
        "message": "This payment method is not accepted by the merchant."
    }
}
{
    "data": {
        "message": "A payment for this invoice is already being processed. Please try again in a moment."
    }
}
{
    "data": {
        "message": "The payment amount exceeds the $50.00 balance now due."
    }
}
{
    "data": {
        "message": "The card was declined.",
        "code": "51"
    }
}
{
    "data": {
        "message": "The payment was captured but could not be recorded. Do not retry — please contact support to reconcile this invoice."
    }
}
GET
https://app.dimepayments.com
/api/invoice/link
requires authentication

Returns the public pay link (and token) for an invoice.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/invoice/link" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:

Add Line Item

POST
https://app.dimepayments.com
/api/invoice/line-item/add
requires authentication

Appends a single line item to a draft invoice and recalculates totals.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/line-item/add" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "errors": {
        "data.item_id": [
            "The selected data.item id is invalid."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "Only draft invoices can be edited."
    }
}

Update Line Item

PATCH
https://app.dimepayments.com
/api/invoice/line-item/update
requires authentication

Updates a single line item on a draft invoice. Only the fields you pass are changed; the line amount is recomputed and invoice totals refreshed.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/invoice/line-item/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "errors": {
        "data.quantity": [
            "The data.quantity field must be at least 0."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "Line item not found"
    }
}
{
    "data": {
        "message": "Only draft invoices can be edited."
    }
}

Delete Line Item

POST
https://app.dimepayments.com
/api/invoice/line-item/delete
requires authentication

Removes a single line item from a draft invoice and recalculates totals.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/line-item/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": 1,
        "token": "cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "invoice_number": "INV-0001",
        "status": "paid",
        "payment_terms": "net_15",
        "issue_date": "2026-09-03",
        "due_date": "2026-09-18",
        "is_overdue": false,
        "subtotal": 2000,
        "total": 2000,
        "amount_paid": 2000,
        "balance": 0,
        "allow_partial_payment": false,
        "cover_fee_required": true,
        "cover_fee_quote": {
            "basis": "balance",
            "base": 0,
            "cc": {
                "fee": 0,
                "total": 0
            },
            "ach": {
                "fee": 0,
                "total": 0
            }
        },
        "thank_you_note": null,
        "public_url": "http://app.dimepayments.com/invoice/cNSdqmHw52vavVVFYchTd609JEIVJWs64HBw9QeK",
        "customer": {
            "id": 16032,
            "name": "Scott Porter",
            "email": "[email protected]"
        },
        "items": [
            {
                "id": 1,
                "item_id": 1365,
                "name": "Implementation Fee",
                "description": null,
                "quantity": 1,
                "unit_price": 2000,
                "amount": 2000
            }
        ],
        "payments": [
            {
                "amount": 2000,
                "cover_fee": 56.81,
                "paid_at": "2026-09-03T11:21:27-04:00",
                "method": "+CC",
                "transaction_id": 107272
            }
        ],
        "events": [
            {
                "type": "payment_received",
                "label": "Payment received",
                "description": "Payment of $2,000.00 received",
                "created_at": "2026-09-03T11:21:27-04:00"
            },
            {
                "type": "viewed",
                "label": "Invoice viewed",
                "description": "Opened by [email protected]",
                "created_at": "2026-09-03T11:18:10-04:00"
            },
            {
                "type": "created",
                "label": "Invoice created",
                "description": "Invoice created via API",
                "created_at": "2026-09-03T11:17:43-04:00"
            },
            {
                "type": "sent",
                "label": "Invoice sent",
                "description": "Marked as sent via API — shared manually (no email)",
                "created_at": "2026-09-03T11:17:43-04:00"
            }
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Invoice not found"
    }
}
{
    "data": {
        "message": "Line item not found"
    }
}
{
    "data": {
        "message": "Only draft invoices can be edited."
    }
}

List Invoice Items

GET
https://app.dimepayments.com
/api/invoice/items
requires authentication

Retrieves a paginated (cursor) list of the Merchant's items (funds/designations) available to use as invoice line items, ordered alphabetically.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/invoice/items" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    }
}"
Example response:
{
    "data": [
        {
            "id": 1,
            "name": "General",
            "description": "",
            "price": null
        },
        {
            "id": 1,
            "name": "General",
            "description": "",
            "price": null
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Create Invoice Item

POST
https://app.dimepayments.com
/api/invoice/item/create
requires authentication

Creates an invoicing-only item (fund/designation) for the Merchant. The item is hidden from public giving pages and can be referenced as a line item's item_id.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/invoice/item/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"name\": \"Consulting\",
        \"description\": \"Professional services\",
        \"price\": 125,
        \"tax_deductible\": false
    }
}"
Example response:
{
    "data": {
        "id": 5,
        "name": "Consulting",
        "description": null,
        "price": 125,
        "tax_deductible": false
    }
}
{
    "errors": {
        "data.name": [
            "The data.name field is required."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

List Recurring Invoices

GET
https://app.dimepayments.com
/api/recurring-invoices
requires authentication

Retrieves a paginated (cursor) list of recurring-invoice templates for a Merchant, optionally filtered by status.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/recurring-invoices" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    },
    \"filters\": {
        \"status\": \"Active\"
    }
}"
Example response:
{
    "data": [
        {
            "id": null,
            "status": "Active",
            "recurrence_schedule": "Monthly",
            "payment_terms": "net_15",
            "cover_fee_required": false,
            "start_date": "2026-10-23",
            "end_date": null,
            "next_run_date": "2026-11-23",
            "last_run_date": null,
            "customer_name": "Lafayette Considine"
        },
        {
            "id": null,
            "status": "Active",
            "recurrence_schedule": "Monthly",
            "payment_terms": "net_15",
            "cover_fee_required": false,
            "start_date": "2026-10-23",
            "end_date": null,
            "next_run_date": "2026-11-23",
            "last_run_date": null,
            "customer_name": "Margaretta Thiel"
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show Recurring Invoice

GET
https://app.dimepayments.com
/api/recurring-invoice
requires authentication

Retrieves a single recurring-invoice template with its line items, the invoices it has generated (the 50 most recent), and the upcoming run dates.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/recurring-invoice" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "status": "Active",
        "recurrence_schedule": "Monthly",
        "payment_terms": "net_15",
        "cover_fee_required": false,
        "start_date": "2026-10-23",
        "end_date": null,
        "next_run_date": "2026-11-23",
        "last_run_date": null,
        "thank_you_note": null,
        "customer": {
            "id": 68109,
            "name": "Marcelo Predovic",
            "email": "[email protected]"
        },
        "items": [],
        "upcoming_run_dates": [
            "2026-11-23",
            "2026-12-23",
            "2027-01-23"
        ],
        "invoices": []
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Recurring invoice not found"
    }
}

Create Recurring Invoice

POST
https://app.dimepayments.com
/api/recurring-invoice/create
requires authentication

Creates a recurring-invoice template. The template carries its own snapshot of the line items and requires a linked customer (used to resolve the email on every run). When the start date is today the first invoice is generated and sent immediately; a future start date just schedules the first run.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/recurring-invoice/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"lines\": [
            {
                \"item_id\": 5,
                \"name\": \"Monthly retainer\",
                \"description\": \"Support plan\",
                \"quantity\": 1,
                \"unit_price\": 500
            }
        ]
    }
}"
Example response:
{
    "data": {
        "id": null,
        "status": "Active",
        "recurrence_schedule": "Monthly",
        "payment_terms": "net_15",
        "cover_fee_required": false,
        "start_date": "2026-10-23",
        "end_date": null,
        "next_run_date": "2026-11-23",
        "last_run_date": null,
        "thank_you_note": null,
        "customer": {
            "id": 68110,
            "name": "Pauline Runte",
            "email": "[email protected]"
        },
        "items": [],
        "upcoming_run_dates": [
            "2026-11-23",
            "2026-12-23",
            "2027-01-23"
        ],
        "invoices": []
    }
}
{
    "errors": {
        "data.customer_id": [
            "The data.customer id field is required."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Cancel Recurring Invoice

POST
https://app.dimepayments.com
/api/recurring-invoice/cancel
requires authentication

Cancels an active recurring-invoice template. No further invoices are generated. Only active templates can be cancelled.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/recurring-invoice/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "status": "Active",
        "recurrence_schedule": "Monthly",
        "payment_terms": "net_15",
        "cover_fee_required": false,
        "start_date": "2026-10-23",
        "end_date": null,
        "next_run_date": "2026-11-23",
        "last_run_date": null,
        "thank_you_note": null,
        "customer": {
            "id": 68111,
            "name": "Marcelo Predovic",
            "email": "[email protected]"
        },
        "items": [],
        "upcoming_run_dates": [
            "2026-11-23",
            "2026-12-23",
            "2027-01-23"
        ],
        "invoices": []
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Recurring invoice not found"
    }
}
{
    "data": {
        "message": "Only active recurring invoices can be cancelled."
    }
}

Payment Method management

APIs for managing payment methods associated with customers. Depending on API KEY permissions, one should be able to list, show, create, update, and delete payment methods.

List payment methods for a customer

GET
https://app.dimepayments.com
/api/payment-method/list
requires authentication

This endpoint shows all payment methods for a customer. Must pass at least one filter to select a specific customer

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/payment-method/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    },
    \"filters\": {
        \"phone\": \"+15551237890\",
        \"uuid\": \"3c37db03-dc71-4e8b-90e7-6668290b7c3d\",
        \"email\": \"[email protected]\"
    }
}"
Example response:
{
    "data": [
        {
            "id": 2,
            "type": "cc",
            "token": "qYV343433d9BEu75dqES1005",
            "first_name": "Ben",
            "last_name": "Habeck",
            "cc_name_on_card": "Ben Habeck",
            "cc_last_four": "1005",
            "cc_expiration_date": "05/2029",
            "cc_brand": "Amex",
            "status": "Default",
            "status_date": "2025-05-20 14:04:55",
            "enabled": true,
            "default": true,
            "addr1": "53 S Main Street",
            "addr2": null,
            "addr3": null,
            "city": "Alpharetta",
            "state": "GA",
            "zip": "30009"
        },
        {
            "id": 2,
            "type": "cc",
            "token": "qYV343433d9BEu75dqES1005",
            "first_name": "Ben",
            "last_name": "Habeck",
            "cc_name_on_card": "Ben Habeck",
            "cc_last_four": "1005",
            "cc_expiration_date": "05/2029",
            "cc_brand": "Amex",
            "status": "Default",
            "status_date": "2025-05-20 14:04:55",
            "enabled": true,
            "default": true,
            "addr1": "53 S Main Street",
            "addr2": null,
            "addr3": null,
            "city": "Alpharetta",
            "state": "GA",
            "zip": "30009"
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 15,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "data": {
        "message": "Permission denied"
    }
}
{
    "data": {
        "message": "Customer not found."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show a Payment Method for a customer

GET
https://app.dimepayments.com
/api/payment-method/show
requires authentication

This endpoint shows a specific payment method for a customer. Must pass at least one filter to select a specific customer

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/payment-method/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"payment_method_id\": 12345
    },
    \"filters\": {
        \"phone\": \"+15551237890\",
        \"uuid\": \"3c37db03-dc71-4e8b-90e7-6668290b7c3d\",
        \"email\": \"[email protected]\"
    }
}"
Example response:
{
    "data": {
        "id": 2,
        "type": "cc",
        "token": "qYV343433d9BEu75dqES1005",
        "first_name": "Ben",
        "last_name": "Habeck",
        "cc_name_on_card": "Ben Habeck",
        "cc_last_four": "1005",
        "cc_expiration_date": "05/2029",
        "cc_brand": "Amex",
        "status": "Default",
        "status_date": "2025-05-20 14:04:55",
        "enabled": true,
        "default": true,
        "addr1": "53 S Main Street",
        "addr2": null,
        "addr3": null,
        "city": "Alpharetta",
        "state": "GA",
        "zip": "30009"
    }
}
{
    "data": {
        "message": "Permission denied"
    }
}
{
    "data": {
        "message": "Customer not found."
    }
}
{
    "data": {
        "message": "Payment Method not found."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Create a Payment Method for a customer

POST
https://app.dimepayments.com
/api/payment-method/create
requires authentication

This endpoint creates a new payment method for a customer. Must pass at least one filter to select a specific customer

Posting a card or bank account the customer already holds returns the existing method, refreshed with the details supplied, rather than creating a second one: the processor issues one token per card, so two rows for the same card are two names for a single stored credential. Callers that create a method per order should not assume the id they get back is theirs alone to delete.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/payment-method/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"uuid\": \"3c37db03-dc71-4e8b-90e7-6668290b7c3d\",
        \"sid\": 12345,
        \"type\": \"cc\",
        \"cc_name_on_card\": \"John Doe\",
        \"cc_number\": \"7890\",
        \"cc_expiration_date\": \"01\\/2025\",
        \"cc_cvv\": \"1234\",
        \"cc_brand\": \"Visa\",
        \"ach_bank_account_name\": \"Acme Inc.\",
        \"ach_routing_number\": \"123456789\",
        \"ach_account_number\": \"123456789\",
        \"ach_ownership_type\": \"Personal\",
        \"ach_account_type\": \"Checking\",
        \"ach_bank_name\": \"Wells Fargo\",
        \"default\": true,
        \"addr1\": \"123 First St.\",
        \"addr2\": \"Suite 111\",
        \"city\": \"Alpharetta\",
        \"state\": \"GA\",
        \"zip\": \"30009\"
    }
}"
Example response:
{
    "data": {
        "id": 2,
        "type": "cc",
        "token": "qYV343433d9BEu75dqES1005",
        "first_name": "Ben",
        "last_name": "Habeck",
        "cc_name_on_card": "Ben Habeck",
        "cc_last_four": "1005",
        "cc_expiration_date": "05/2029",
        "cc_brand": "Amex",
        "status": "Default",
        "status_date": "2025-05-20 14:04:55",
        "enabled": true,
        "default": true,
        "addr1": "53 S Main Street",
        "addr2": null,
        "addr3": null,
        "city": "Alpharetta",
        "state": "GA",
        "zip": "30009"
    }
}
{
    "data": {
        "message": "Permission denied"
    }
}
{
    "data": {
        "message": "Customer not found."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Update a Payment Method for a customer

PATCH
https://app.dimepayments.com
/api/payment-method/update
requires authentication

This endpoint updates a payment method for a customer. Must pass at least one filter to select a specific customer

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/payment-method/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"uuid\": \"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",
        \"sid\": 12345,
        \"payment_method_id\": 4326.41688,
        \"type\": \"cc\",
        \"cc_name_on_card\": \"John Doe\",
        \"cc_number\": \"7890\",
        \"cc_expiration_date\": \"01\\/2025\",
        \"cc_cvv\": \"1234\",
        \"cc_brand\": \"Visa\",
        \"ach_bank_account_name\": \"Acme Inc.\",
        \"ach_routing_number\": \"123456789\",
        \"ach_account_number\": \"123456789\",
        \"ach_ownership_type\": \"Personal\",
        \"ach_account_type\": \"Checking\",
        \"ach_bank_name\": \"Wells Fargo\",
        \"default\": true,
        \"addr1\": \"123 First St.\",
        \"addr2\": \"Suite 111\",
        \"city\": \"Alpharetta\",
        \"state\": \"GA\",
        \"zip\": \"30009\"
    }
}"
Example response:
{
    "data": {
        "id": 2,
        "type": "cc",
        "token": "qYV343433d9BEu75dqES1005",
        "first_name": "Ben",
        "last_name": "Habeck",
        "cc_name_on_card": "Ben Habeck",
        "cc_last_four": "1005",
        "cc_expiration_date": "05/2029",
        "cc_brand": "Amex",
        "status": "Default",
        "status_date": "2025-05-20 14:04:55",
        "enabled": true,
        "default": true,
        "addr1": "53 S Main Street",
        "addr2": null,
        "addr3": null,
        "city": "Alpharetta",
        "state": "GA",
        "zip": "30009"
    }
}
{
    "data": {
        "message": "Permission denied"
    }
}
{
    "data": {
        "message": "Customer not found."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Delete a Payment Method for a customer

POST
https://app.dimepayments.com
/api/payment-method/delete
requires authentication

This endpoint deletes a payment method for a customer. Must pass at least one filter to select a specific customer

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/payment-method/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345,
        \"payment_method_id\": 12345,
        \"uuid\": \"3c37db03-dc71-4e8b-90e7-6668290b7c3d\"
    }
}"
Example response:
{
    "data": {
        "message": "Payment Method deleted successfully."
    }
}
{
    "data": {
        "message": "Permission denied"
    }
}
{
    "data": {
        "message": "Customer not found."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "Payment Method not found"
    }
}
{
    "data": {
        "message": "Cannot delete payment method with active recurring payments."
    }
}

Recurring Payments management

APIs for managing recurring payments. Depending on API KEY permissions, one should be able to create, edit, pause, cancel along with other functions.

List Recurring Payments

GET
https://app.dimepayments.com
/api/recurring-payment/list
requires authentication

Retrieves a list of recurring payments for a given Merchant, filtered by various parameters.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/recurring-payment/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\"
    },
    \"filters\": {
        \"status\": \"Active, Failed, Paused, Canceled\",
        \"customer_uuid\": \"cust_456\"
    }
}"
Example response:
{
    "data": [
        {
            "id": 1,
            "name": "Car Was Solutions ",
            "amount": "4574.99",
            "cover_processing_amount": null,
            "start_date": "2024-11-07T05:00:00.000000Z",
            "end_date": "2026-12-31T05:00:00.000000Z",
            "recurrence_schedule": "Monthly",
            "last_run_date": "2025-12-15T05:00:00.000000Z",
            "last_run_status": "Failed",
            "last_run_failed_count": 3,
            "next_run_date": null,
            "status": "Cancelled",
            "paused_until_date": null,
            "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
            "cancelled_at": "2026-06-29T04:00:00.000000Z",
            "error": "DECLINE",
            "item": {
                "id": 106,
                "name": "General"
            },
            "payment_method": {
                "id": 7,
                "type": "cc",
                "last_four": "4003",
                "expiration": "09/2029",
                "zip": "",
                "name_on_card": "Geo Perez"
            },
            "shipping_address": {
                "addr1": null,
                "addr2": null,
                "city": null,
                "state": null,
                "zip": null
            }
        },
        {
            "id": 1,
            "name": "Car Was Solutions ",
            "amount": "4574.99",
            "cover_processing_amount": null,
            "start_date": "2024-11-07T05:00:00.000000Z",
            "end_date": "2026-12-31T05:00:00.000000Z",
            "recurrence_schedule": "Monthly",
            "last_run_date": "2025-12-15T05:00:00.000000Z",
            "last_run_status": "Failed",
            "last_run_failed_count": 3,
            "next_run_date": null,
            "status": "Cancelled",
            "paused_until_date": null,
            "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
            "cancelled_at": "2026-06-29T04:00:00.000000Z",
            "error": "DECLINE",
            "item": {
                "id": 106,
                "name": "General"
            },
            "payment_method": {
                "id": 7,
                "type": "cc",
                "last_four": "4003",
                "expiration": "09/2029",
                "zip": "",
                "name_on_card": "Geo Perez"
            },
            "shipping_address": {
                "addr1": null,
                "addr2": null,
                "city": null,
                "state": null,
                "zip": null
            }
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 15,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "errors": {
        "filters.status": [
            "The filters.status field is not valid."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No recurring payments found"
    }
}

Pause Recurring Payment

PATCH
https://app.dimepayments.com
/api/recurring-payment/pause
requires authentication

Pauses a scheduled recurring payment. If pause_until_date is not passed, it will be set to 2099-12-31

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/recurring-payment/pause" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"recurring_payment_id\": 12345,
        \"pause_until_date\": \"2021-01-01 00:00:00\"
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "name": "Car Was Solutions ",
        "amount": "4574.99",
        "cover_processing_amount": null,
        "start_date": "2024-11-07T05:00:00.000000Z",
        "end_date": "2026-12-31T05:00:00.000000Z",
        "recurrence_schedule": "Monthly",
        "last_run_date": "2025-12-15T05:00:00.000000Z",
        "last_run_status": "Failed",
        "last_run_failed_count": 3,
        "next_run_date": null,
        "status": "Cancelled",
        "paused_until_date": null,
        "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
        "cancelled_at": "2026-06-29T04:00:00.000000Z",
        "error": "DECLINE",
        "item": {
            "id": 106,
            "name": "General"
        },
        "payment_method": {
            "id": 7,
            "type": "cc",
            "last_four": "4003",
            "expiration": "09/2029",
            "zip": "",
            "name_on_card": "Geo Perez"
        },
        "shipping_address": {
            "addr1": null,
            "addr2": null,
            "city": null,
            "state": null,
            "zip": null
        }
    }
}
{
    "errors": {
        "data.pause_until_date": [
            "Invalid date format."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No recurring payment found"
    }
}

Cancel Recurring Payment

PATCH
https://app.dimepayments.com
/api/recurring-payment/cancel
requires authentication

Cancels a scheduled recurring payment.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/recurring-payment/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"recurring_payment_id\": 12345
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "name": "Car Was Solutions ",
        "amount": "4574.99",
        "cover_processing_amount": null,
        "start_date": "2024-11-07T05:00:00.000000Z",
        "end_date": "2026-12-31T05:00:00.000000Z",
        "recurrence_schedule": "Monthly",
        "last_run_date": "2025-12-15T05:00:00.000000Z",
        "last_run_status": "Failed",
        "last_run_failed_count": 3,
        "next_run_date": null,
        "status": "Cancelled",
        "paused_until_date": null,
        "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
        "cancelled_at": "2026-06-29T04:00:00.000000Z",
        "error": "DECLINE",
        "item": {
            "id": 106,
            "name": "General"
        },
        "payment_method": {
            "id": 7,
            "type": "cc",
            "last_four": "4003",
            "expiration": "09/2029",
            "zip": "",
            "name_on_card": "Geo Perez"
        },
        "shipping_address": {
            "addr1": null,
            "addr2": null,
            "city": null,
            "state": null,
            "zip": null
        }
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No recurring payment found"
    }
}

Activate Recurring Payment

PATCH
https://app.dimepayments.com
/api/recurring-payment/activate
requires authentication

Activates a scheduled recurring payment. Set to status of Active and calculates next run date.

Refused while the payment is pinned to one of your designations that has since been deleted — deleting a fund cancels the recurring payments on it, and this would put them back on it. Send a live item_id with /api/recurring-payment/edit first, then activate.

Also refused outright, with no way back, when the payment was made through a campaign that has been deleted or has passed its end date. Create a new recurring payment instead.

Both refusals apply only to a payment that has stopped. Re-asserting Active on one that is already Active still succeeds.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/recurring-payment/activate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"recurring_payment_id\": 12345
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "name": "Car Was Solutions ",
        "amount": "4574.99",
        "cover_processing_amount": null,
        "start_date": "2024-11-07T05:00:00.000000Z",
        "end_date": "2026-12-31T05:00:00.000000Z",
        "recurrence_schedule": "Monthly",
        "last_run_date": "2025-12-15T05:00:00.000000Z",
        "last_run_status": "Failed",
        "last_run_failed_count": 3,
        "next_run_date": null,
        "status": "Cancelled",
        "paused_until_date": null,
        "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
        "cancelled_at": "2026-06-29T04:00:00.000000Z",
        "error": "DECLINE",
        "item": {
            "id": 106,
            "name": "General"
        },
        "payment_method": {
            "id": 7,
            "type": "cc",
            "last_four": "4003",
            "expiration": "09/2029",
            "zip": "",
            "name_on_card": "Geo Perez"
        },
        "shipping_address": {
            "addr1": null,
            "addr2": null,
            "city": null,
            "state": null,
            "zip": null
        }
    }
}
{
    "data": {
        "message": "That designation has been deleted. Set a live item_id with /api/recurring-payment/edit before activating this payment."
    }
}
{
    "data": {
        "message": "The campaign this payment was made through has finished, so it cannot be activated. Create a new recurring payment instead."
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No recurring payment found"
    }
}

Edit Recurring Payment

PATCH
https://app.dimepayments.com
/api/recurring-payment/edit
requires authentication

Edits an existing recurring payment. All fields other than sid and recurring_payment_id are optional; only the fields you pass will be updated. The customer cannot be changed, and a new payment method must belong to the recurring payment's existing customer. When recurrence_schedule or start_date change on an Active payment, the next run date is recalculated automatically.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/recurring-payment/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"recurring_payment_id\": 12345,
        \"name\": \"Rent\",
        \"amount\": 1101.69,
        \"start_date\": \"2025-06-12 13:26:00\",
        \"end_date\": \"2026-06-12 13:26:00\",
        \"recurrence_schedule\": \"Monthly\",
        \"payment_method\": 69585,
        \"customer_covers_fee\": true,
        \"shipping_address\": {
            \"addr1\": \"123 Main St.\",
            \"addr2\": \"apt 1\",
            \"city\": \"Alpharetta.\",
            \"state\": \"GA.\",
            \"zip\": \"12345.\"
        },
        \"item_id\": 42
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "name": "Car Was Solutions ",
        "amount": "4574.99",
        "cover_processing_amount": null,
        "start_date": "2024-11-07T05:00:00.000000Z",
        "end_date": "2026-12-31T05:00:00.000000Z",
        "recurrence_schedule": "Monthly",
        "last_run_date": "2025-12-15T05:00:00.000000Z",
        "last_run_status": "Failed",
        "last_run_failed_count": 3,
        "next_run_date": null,
        "status": "Cancelled",
        "paused_until_date": null,
        "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
        "cancelled_at": "2026-06-29T04:00:00.000000Z",
        "error": "DECLINE",
        "item": {
            "id": 106,
            "name": "General"
        },
        "payment_method": {
            "id": 7,
            "type": "cc",
            "last_four": "4003",
            "expiration": "09/2029",
            "zip": "",
            "name_on_card": "Geo Perez"
        },
        "shipping_address": {
            "addr1": null,
            "addr2": null,
            "city": null,
            "state": null,
            "zip": null
        }
    }
}
{
    "errors": {
        "data.amount": [
            "The data.amount field must be greater than 0."
        ]
    }
}
{
    "errors": {
        "data.item_id": [
            "The selected data.item id is invalid."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No such Payment Method"
    }
}
{
    "data": {
        "message": "Payment Method does not belong to Customer"
    }
}
{
    "data": {
        "message": "No recurring payment found"
    }
}

Create Recurring Payment

POST
https://app.dimepayments.com
/api/recurring-payment/create
requires authentication

Creates a scheduled recurring payment. The payment will run on the next date based on schedule and start date. So if you create one that starts on 2025-01-01 00:00:00 with Monthly, then the payment method will be charged on 2025-02-01 Recurring Payments run around 0500 EST.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/recurring-payment/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"name\": \"Rent\",
        \"amount\": 1101.69,
        \"start_date\": \"2025-06-12 13:26:00\",
        \"end_date\": \"2026-06-12 13:26:00\",
        \"recurrence_schedule\": \"Monthly\",
        \"payment_method\": 69585,
        \"customer_uuid\": \"12312312-12312321-12312312-12312312\",
        \"customer_covers_fee\": true,
        \"shipping_address\": {
            \"addr1\": \"123 Main St.\",
            \"addr2\": \"apt 1\",
            \"city\": \"Alpharetta.\",
            \"state\": \"GA.\",
            \"zip\": \"12345.\"
        },
        \"item_id\": 42
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "name": "Car Was Solutions ",
        "amount": "4574.99",
        "cover_processing_amount": null,
        "start_date": "2024-11-07T05:00:00.000000Z",
        "end_date": "2026-12-31T05:00:00.000000Z",
        "recurrence_schedule": "Monthly",
        "last_run_date": "2025-12-15T05:00:00.000000Z",
        "last_run_status": "Failed",
        "last_run_failed_count": 3,
        "next_run_date": null,
        "status": "Cancelled",
        "paused_until_date": null,
        "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
        "cancelled_at": "2026-06-29T04:00:00.000000Z",
        "error": "DECLINE",
        "item": {
            "id": 106,
            "name": "General"
        },
        "payment_method": {
            "id": 7,
            "type": "cc",
            "last_four": "4003",
            "expiration": "09/2029",
            "zip": "",
            "name_on_card": "Geo Perez"
        },
        "shipping_address": {
            "addr1": null,
            "addr2": null,
            "city": null,
            "state": null,
            "zip": null
        }
    }
}
{
    "errors": {
        "data.item_id": [
            "The selected data.item id is invalid."
        ]
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show Recurring Payment

GET
https://app.dimepayments.com
/api/recurring-payment/show
requires authentication

Show details of a scheduled recurring payment.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/recurring-payment/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"recurring_payment_id\": 12345
    }
}"
Example response:
{
    "data": {
        "id": 1,
        "name": "Car Was Solutions ",
        "amount": "4574.99",
        "cover_processing_amount": null,
        "start_date": "2024-11-07T05:00:00.000000Z",
        "end_date": "2026-12-31T05:00:00.000000Z",
        "recurrence_schedule": "Monthly",
        "last_run_date": "2025-12-15T05:00:00.000000Z",
        "last_run_status": "Failed",
        "last_run_failed_count": 3,
        "next_run_date": null,
        "status": "Cancelled",
        "paused_until_date": null,
        "customer_uuid": "9a242468-6b4e-4382-a61b-a728fbc8edae",
        "cancelled_at": "2026-06-29T04:00:00.000000Z",
        "error": "DECLINE",
        "item": {
            "id": 106,
            "name": "General"
        },
        "payment_method": {
            "id": 7,
            "type": "cc",
            "last_four": "4003",
            "expiration": "09/2029",
            "zip": "",
            "name_on_card": "Geo Perez"
        },
        "shipping_address": {
            "addr1": null,
            "addr2": null,
            "city": null,
            "state": null,
            "zip": null
        }
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No recurring payment found"
    }
}

Delete Recurring Payment

POST
https://app.dimepayments.com
/api/recurring-payment/delete
requires authentication

Delete a recurring payment.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/recurring-payment/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": \"12345\",
        \"recurring_payment_id\": 12345
    }
}"
Example response:
{
    "data": {
        "message": "Recurring payment successfully deleted."
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "Unauthorized"
    }
}
{
    "data": {
        "message": "Not associated with affiliate"
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}
{
    "data": {
        "message": "No recurring payment found"
    }
}

Subscription Plans management

Merchant-facing API for subscription plans (recurring offerings customers subscribe to). The merchant is identified by data.sid; the token must carry the matching subscription-plan:* ability. Mirrors the recurring-payment and invoice API controllers.

List subscription plans

GET
https://app.dimepayments.com
/api/subscription-plan/list
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/subscription-plan/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": [
        {
            "id": null,
            "name": "Monthly Membership 54634",
            "description": "Qui commodi incidunt iure odit.",
            "recurrence_schedule": "Monthly",
            "status": "active",
            "subtotal": "0.00",
            "total": "0.00",
            "token": "mYbzTzgWxJTLKEjluzGOGcY0vPgGEos2nQzAwQKJ",
            "public_url": "http://app.dimepayments.com/subscribe/mYbzTzgWxJTLKEjluzGOGcY0vPgGEos2nQzAwQKJ",
            "allow_public": true,
            "created_at": null,
            "items": []
        },
        {
            "id": null,
            "name": "Monthly Membership 35354",
            "description": "Ex voluptatem laboriosam praesentium quis adipisci.",
            "recurrence_schedule": "Monthly",
            "status": "active",
            "subtotal": "0.00",
            "total": "0.00",
            "token": "OLt9rEt0Gfjvn03H0PCAGPY0sWfZbxO5bP7DD2u9",
            "public_url": "http://app.dimepayments.com/subscribe/OLt9rEt0Gfjvn03H0PCAGPY0sWfZbxO5bP7DD2u9",
            "allow_public": true,
            "created_at": null,
            "items": []
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}

Show a subscription plan

GET
https://app.dimepayments.com
/api/subscription-plan/show
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/subscription-plan/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "name": "Monthly Membership 80304",
        "description": "Commodi incidunt iure odit.",
        "recurrence_schedule": "Monthly",
        "status": "active",
        "subtotal": "0.00",
        "total": "0.00",
        "token": "WUirO8pvjFaXVYUVgDztTbdR35nqF6U7RHaHIEL8",
        "public_url": "http://app.dimepayments.com/subscribe/WUirO8pvjFaXVYUVgDztTbdR35nqF6U7RHaHIEL8",
        "allow_public": true,
        "created_at": null,
        "items": []
    }
}

Create a subscription plan

POST
https://app.dimepayments.com
/api/subscription-plan/create
requires authentication

The plan is created as a draft. Publish it (or use the merchant UI) before customers can subscribe.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/subscription-plan/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"lines\": [
            {
                \"item_id\": 5,
                \"name\": \"Base membership\",
                \"quantity\": 1,
                \"unit_price\": 25
            }
        ]
    }
}"
Example response:
{
    "data": {
        "id": null,
        "name": "Community Circle 70546",
        "description": "Quos velit et fugiat sunt nihil accusantium harum.",
        "recurrence_schedule": "Monthly",
        "status": "active",
        "subtotal": "0.00",
        "total": "0.00",
        "token": "4PDMiXYh9EZlvA5ZFatUtZHmt0THL1L65Ql2G6r5",
        "public_url": "http://app.dimepayments.com/subscribe/4PDMiXYh9EZlvA5ZFatUtZHmt0THL1L65Ql2G6r5",
        "allow_public": true,
        "created_at": null,
        "items": []
    }
}

Update a subscription plan

PATCH
https://app.dimepayments.com
/api/subscription-plan/edit
requires authentication

Replaces the plan's fields and line items wholesale. Existing subscribers keep their own snapshot and are unaffected.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription-plan/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"lines\": [
            {
                \"item_id\": 5,
                \"name\": \"Base membership\",
                \"quantity\": 1,
                \"unit_price\": 25
            }
        ]
    }
}"
Example response:
{
    "data": {
        "id": null,
        "name": "Community Circle 63526",
        "description": null,
        "recurrence_schedule": "Monthly",
        "status": "active",
        "subtotal": "0.00",
        "total": "0.00",
        "token": "GLnerWuZcTUr37Kj4pJenWX7t2ptiA8h7hmXSHY1",
        "public_url": "http://app.dimepayments.com/subscribe/GLnerWuZcTUr37Kj4pJenWX7t2ptiA8h7hmXSHY1",
        "allow_public": true,
        "created_at": null,
        "items": []
    }
}

Delete a subscription plan

POST
https://app.dimepayments.com
/api/subscription-plan/delete
requires authentication

Only plans with no subscribers can be deleted; otherwise archive it.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/subscription-plan/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "message": "Subscription plan deleted"
    }
}
{
    "data": {
        "message": "Cannot delete a plan with subscribers. Archive it instead."
    }
}

Publish a subscription plan

PATCH
https://app.dimepayments.com
/api/subscription-plan/publish
requires authentication

Moves a draft plan to active so customers can subscribe. The plan must be a draft, carry at least one line item, and name no item the merchant has deleted — deleting a fund archives the plans that carry it, and a plan reactivated afterwards has to have that line replaced before it can sell again.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription-plan/publish" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "name": "Monthly Membership 14650",
        "description": null,
        "recurrence_schedule": "Monthly",
        "status": "active",
        "subtotal": "0.00",
        "total": "0.00",
        "token": "7z4v0bAA0n8qMu7FGvwTpWXQEbnp5AgPQOcmZrkl",
        "public_url": "http://app.dimepayments.com/subscribe/7z4v0bAA0n8qMu7FGvwTpWXQEbnp5AgPQOcmZrkl",
        "allow_public": true,
        "created_at": null,
        "items": []
    }
}
{
    "data": {
        "message": "Only a draft plan can be published."
    }
}
{
    "data": {
        "message": "Add at least one line item before publishing."
    }
}
{
    "data": {
        "message": "Replace the deleted item on this plan before publishing: Community add-on."
    }
}

Archive a subscription plan

PATCH
https://app.dimepayments.com
/api/subscription-plan/archive
requires authentication

Stops new subscriptions and hides it from the catalog. Existing subscribers keep their subscription.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription-plan/archive" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "name": "Monthly Membership 62492",
        "description": "Iure odit et et modi ipsum nostrum omnis.",
        "recurrence_schedule": "Monthly",
        "status": "active",
        "subtotal": "0.00",
        "total": "0.00",
        "token": "7FIVdpRd94s9jUsuZc7UHBkO6cFVhBcZek05pUss",
        "public_url": "http://app.dimepayments.com/subscribe/7FIVdpRd94s9jUsuZc7UHBkO6cFVhBcZek05pUss",
        "allow_public": true,
        "created_at": null,
        "items": []
    }
}

Reactivate a subscription plan

PATCH
https://app.dimepayments.com
/api/subscription-plan/unarchive
requires authentication

Moves an archived plan back to draft so it can be reviewed and re-published. allow_public stays off until the merchant opts back into the catalog.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription-plan/unarchive" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "name": "Monthly Membership 45193",
        "description": "Odit et et modi.",
        "recurrence_schedule": "Monthly",
        "status": "active",
        "subtotal": "0.00",
        "total": "0.00",
        "token": "KWLpzIx3fbgbHj3y1Gpws0ZfzuQ7GURi01nfwASK",
        "public_url": "http://app.dimepayments.com/subscribe/KWLpzIx3fbgbHj3y1Gpws0ZfzuQ7GURi01nfwASK",
        "allow_public": true,
        "created_at": null,
        "items": []
    }
}

Subscribe a customer to a plan

POST
https://app.dimepayments.com
/api/subscription-plan/subscribe
requires authentication

Charges the first payment against the customer's saved payment method and enrolls them in the plan. The plan must be active. Fires SUBSCRIPTION_CREATED.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://app.dimepayments.com/api/subscription-plan/subscribe" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "subscription_id": 10,
        "status": "Active",
        "next_run_date": "2026-08-21",
        "transaction_number": "TXN-123",
        "amount": "25.00"
    }
}
{
    "data": {
        "message": "Card declined",
        "transaction_number": null
    }
}

Subscriptions management

Merchant-facing API for individual customer subscriptions (enrollments in a plan). The merchant is identified by data.sid; the token must carry the matching subscription:* ability. Lifecycle transitions delegate to the {@see \App\Actions\Subscription} action classes so the matching SUBSCRIPTION_* webhook always fires. Mirrors the recurring-payment and subscription-plan API controllers.

List subscriptions

GET
https://app.dimepayments.com
/api/subscription/list
requires authentication

A merchant with nothing to show answers 200 with an empty data array, not a 404. A 404 from this endpoint means the merchant itself was not found.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/subscription/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": {
        \"sid\": 12345
    },
    \"filters\": {
        \"status\": \"Active\",
        \"customer_uuid\": \"9c1e6a7e-1f2b-4c3d-8e9f-0a1b2c3d4e5f\"
    }
}"
Example response:
{
    "data": [
        {
            "id": null,
            "subscription_plan_id": 487,
            "plan_name": "Premium Plan 24492",
            "amount": "0.00",
            "recurrence_schedule": "Monthly",
            "start_date": "2026-09-23T04:00:00.000000Z",
            "end_date": null,
            "last_run_date": null,
            "last_run_status": null,
            "last_run_failed_count": 0,
            "next_run_date": "2026-11-23T05:00:00.000000Z",
            "status": "Active",
            "paused_until_date": null,
            "cancelled_at": null,
            "cancelled_by": null,
            "customer_uuid": "7d6e3497-73aa-495d-af8f-37f73ceeae1b",
            "error": null,
            "payment_method": {
                "id": 6572,
                "type": "cc",
                "last_four": "3642",
                "expiration": "08/2030"
            }
        },
        {
            "id": null,
            "subscription_plan_id": 488,
            "plan_name": "Monthly Membership 88481",
            "amount": "0.00",
            "recurrence_schedule": "Monthly",
            "start_date": "2026-09-23T04:00:00.000000Z",
            "end_date": null,
            "last_run_date": null,
            "last_run_status": null,
            "last_run_failed_count": 0,
            "next_run_date": "2026-11-23T05:00:00.000000Z",
            "status": "Active",
            "paused_until_date": null,
            "cancelled_at": null,
            "cancelled_by": null,
            "customer_uuid": "6e0a8ccb-c94a-4725-837b-82b6ae9745da",
            "error": null,
            "payment_method": {
                "id": 6573,
                "type": "cc",
                "last_four": "5053",
                "expiration": "08/2030"
            }
        }
    ],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "path": "/",
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "data": [],
    "links": {
        "prev": null,
        "next": null
    },
    "meta": {
        "per_page": 500,
        "next_cursor": null,
        "prev_cursor": null
    }
}
{
    "data": {
        "message": "Permission Denied."
    }
}
{
    "data": {
        "message": "No such Merchant"
    }
}

Show a subscription

GET
https://app.dimepayments.com
/api/subscription/show
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/subscription/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "subscription_plan_id": 489,
        "plan_name": "Monthly Membership 30805",
        "amount": "0.00",
        "recurrence_schedule": "Monthly",
        "start_date": "2026-09-23T04:00:00.000000Z",
        "end_date": null,
        "last_run_date": null,
        "last_run_status": null,
        "last_run_failed_count": 0,
        "next_run_date": "2026-11-23T05:00:00.000000Z",
        "status": "Active",
        "paused_until_date": null,
        "cancelled_at": null,
        "cancelled_by": null,
        "customer_uuid": "9da503dc-f31b-4198-b8c3-3f5a73b13739",
        "error": null,
        "payment_method": {
            "id": 6574,
            "type": "cc",
            "last_four": "1161",
            "expiration": "08/2030"
        }
    }
}

Pause a subscription

PATCH
https://app.dimepayments.com
/api/subscription/pause
requires authentication

Pauses an active subscription until the given date. If data.pause_until_date is omitted it pauses indefinitely. Fires the SUBSCRIPTION_PAUSED webhook.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription/pause" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "subscription_plan_id": 490,
        "plan_name": "Monthly Membership 93082",
        "amount": "0.00",
        "recurrence_schedule": "Monthly",
        "start_date": "2026-09-23T04:00:00.000000Z",
        "end_date": null,
        "last_run_date": null,
        "last_run_status": null,
        "last_run_failed_count": 0,
        "next_run_date": "2026-11-23T05:00:00.000000Z",
        "status": "Active",
        "paused_until_date": null,
        "cancelled_at": null,
        "cancelled_by": null,
        "customer_uuid": "dc1d0268-a449-49a2-b1bd-51f8f88a16c8",
        "error": null,
        "payment_method": {
            "id": 6575,
            "type": "cc",
            "last_four": "7849",
            "expiration": "08/2030"
        }
    }
}

Resume a subscription

PATCH
https://app.dimepayments.com
/api/subscription/resume
requires authentication

Reactivates a paused subscription and recomputes its next charge date. Fires the SUBSCRIPTION_RESUMED webhook.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription/resume" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "subscription_plan_id": 491,
        "plan_name": "Monthly Membership 43383",
        "amount": "0.00",
        "recurrence_schedule": "Monthly",
        "start_date": "2026-09-23T04:00:00.000000Z",
        "end_date": null,
        "last_run_date": null,
        "last_run_status": null,
        "last_run_failed_count": 0,
        "next_run_date": "2026-11-23T05:00:00.000000Z",
        "status": "Active",
        "paused_until_date": null,
        "cancelled_at": null,
        "cancelled_by": null,
        "customer_uuid": "dac71f45-c966-4cdb-9861-57e54affec5a",
        "error": null,
        "payment_method": {
            "id": 6576,
            "type": "cc",
            "last_four": "2895",
            "expiration": "08/2030"
        }
    }
}

Cancel a subscription

PATCH
https://app.dimepayments.com
/api/subscription/cancel
requires authentication

Permanently cancels a subscription — no further charges are made. Fires the SUBSCRIPTION_CANCELLED webhook.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://app.dimepayments.com/api/subscription/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
Example response:
{
    "data": {
        "id": null,
        "subscription_plan_id": 492,
        "plan_name": "Monthly Membership 92439",
        "amount": "0.00",
        "recurrence_schedule": "Monthly",
        "start_date": "2026-09-23T04:00:00.000000Z",
        "end_date": null,
        "last_run_date": null,
        "last_run_status": null,
        "last_run_failed_count": 0,
        "next_run_date": "2026-11-23T05:00:00.000000Z",
        "status": "Active",
        "paused_until_date": null,
        "cancelled_at": null,
        "cancelled_by": null,
        "customer_uuid": "4500acda-2571-4a05-bdd1-755a568b44cf",
        "error": null,
        "payment_method": {
            "id": 6577,
            "type": "cc",
            "last_four": "2074",
            "expiration": "08/2030"
        }
    }
}

Zapier

APIs for use through Zapier. Depending on API KEY permissions, one should be able to see customers and transactions data.

Get New Customers

GET
https://app.dimepayments.com
/api/zapier/new-customers
requires authentication

Get a list of all new customers since the last time it was checked.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/zapier/new-customers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "id": 1,
            "first_name": "John",
            "last_name": "Doe",
            "phone": "1234567890",
            "email": "[email protected]",
            "addr1": "123 Main St",
            "addr2": "",
            "addr3": "",
            "city": "Anytown",
            "state": "CA",
            "zip": "12345",
            "country": "US"
        }
    ]
}
{
    "message": "Merchant not found"
}
[]
{
    "message": "Permission denied."
}

Get Transactions

GET
https://app.dimepayments.com
/api/zapier/transactions
requires authentication

Get a list of all transactions for a Merchant

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/zapier/transactions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "amount": "100.00",
        "business": "Acme Inc",
        "transaction_date": "2020-10-15 12:00:00",
        "customer_uuid": "1234567890",
        "first_name": "John",
        "last_name": "Doe",
        "customer_phone": "1234567890",
        "customer_email": "[email protected]"
    },
    {
        "amount": "100.00",
        "business": "Acme Inc",
        "transaction_date": "2020-10-15 12:00:00",
        "customer_uuid": "1234567890",
        "first_name": "John",
        "last_name": "Doe",
        "customer_phone": "1234567890",
        "customer_email": "[email protected]"
    }
]
{
    "message": "Merchant not found"
}
[]
{
    "message": "Permission denied."
}

Get Transactions by Customer

GET
https://app.dimepayments.com
/api/zapier/transactions/{phone}
requires authentication

Get a list of all transactions for a given customer using their phone number

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

phone
integer
required
Example:
1

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/zapier/transactions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2020-10-15\",
    \"end_date\": \"2020-10-15\",
    \"last_days\": 90
}"
Example response:
[
    {
        "amount": "100.00",
        "transaction_date": "2020-10-15 12:00:00",
        "invoice_number": "1234567890",
        "first_name": "John",
        "last_name": "Doe",
        "phone": "1234567890",
        "email": "[email protected]"
    }
]
{
    "message": "Merchant not found"
}
[]
{
    "data.message": "Can only contain last days or start and end date"
}
{
    "message": "Permission denied."
}

Get Most Recent Transaction

GET
https://app.dimepayments.com
/api/zapier/new-transactions
requires authentication

Get the most recent transactions details

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Response Fields

Example request:
curl --request GET \
    --get "https://app.dimepayments.com/api/zapier/new-transactions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[
    {
        "id": 1,
        "invoice_number": "1234567890",
        "amount": "100.00",
        "transaction_date": "2020-10-15 12:00:00",
        "first_name": "John",
        "last_name": "Doe",
        "phone": "1234567890",
        "email": "[email protected]"
    }
]
{
    "message": "Merchant not found"
}
[]
{
    "message": "Permission denied"
}