API Reference

Welcome! You can use the Increase API to access your transactions, open accounts, receive transfers, make payments, and generally access all US depository account functionality.

Get your API key

API Reference

The Increase API is organized around REST. It has predictable resource-oriented URLs, accepts and returns JSON-encoded payloads, and uses standard HTTP response codes, authentication, and verbs.

 

While we're continually adding new features to the API, we're committed to doing so in a way that doesn't break existing integrations. You can read more in our versioning and backwards compatibility guide.

Authorization and Testing

The API accepts Bearer Authentication. When you sign up for an Increase account, we make you a pair of API keys: one for production and one for our sandbox environment in which no real money moves. Production API requests should be to https://api.increase.com and sandbox requests should be to https://sandbox.increase.com. We'll put these into environment variables to make our code examples easier to follow.

In the sandbox :

INCREASE_URL="https://sandbox.increase.com"
INCREASE_API_KEY="<secret>"

In production (you'll need to retrieve your API key from the dashboard):

INCREASE_URL="https://api.increase.com"
INCREASE_API_KEY="<secret>"

You can then make an API request like this using cURL:

curl --url "${INCREASE_URL}" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

OpenAPI

This reference also exists in OpenAPI 3 format. This spec is in beta and subject to change. If you find it useful, or have feedback, let us know!

OAuth

If you're interested in building an application that connects to other Increase users' data, you can build an OAuth application. Learn more about this in our OAuth guide.

Requests and Responses

When making a POST request to the API, use a Content-Type of application/json and specify parameters via JSON in the request body:

curl -X "POST" \
  --url "${INCREASE_URL}/accounts" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d $'{
    "name": "New Account!"
  }'

When making a GET request to the API, you should specify parameters in the query string of the URL. Join nested parameters, such as timestamp-based filters, with a . – for example, created_at.before:

curl \
  --url "${INCREASE_URL}/transactions?created_at.before=2022-01-15T06:34:23Z&created_at.after=2022-01-08T06:34:16Z" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

All responses from the API will have a Content-Type of application/json.

Object Lists

List endpoints return a wrapper object with the data and a cursor. The API will return the next page of results if you submit the next_cursor as a query parameter with the name cursor. Any filter parameters passed to the original list request must be included if next_cursor is specified. The maximum (and default) page size is 100 objects. You can adjust it using the limit parameter.

{
  "data": [],
  "next_cursor": "RWFzdGVyIGVnZw=="
}

Errors

The API uses standard HTTP response codes to indicate the success or failure of requests. Codes in the 2xx range indicate success; codes in the 4xx and 5xx range indicate errors. Error objects conform to RFC 7807 and can be distinguished by their type attribute.

{
  "detail": "There's an insufficient balance in the account.",
  "status": "400",
  "title": "The action you specified can't be performed on the object in its current state.",
  "type": "invalid_operation_error"
}

Idempotency

The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. This is useful when an API call is disrupted in transit and you do not receive a response. For example, if a request to create an ACH Transfer does not respond due to a network connection error, you can retry the request with the same idempotency key to guarantee that no more than one transfer is created.

To perform an idempotent request, provide an additional Idempotency-Key request header. We recommend using a V4 UUID. Reusing the key in subsequent requests will return the same response code and body as the original request along with an additional HTTP header (Idempotent-Replayed: true). This applies to both success and error responses.

Idempotency keys will persist in the API for 1 hour. If an original request is still being processed when an idempotency key is reused, the API will return a 409 Conflict error. Subsequent requests must be identical to the original request or the API will return a 422 Unprocessable Entity error. We discourage setting an idempotency key on GET and DELETE requests as these requests are inherently idempotent.

curl -X "POST" \
  --url "${INCREASE_URL}/accounts" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H 'Idempotency-Key: RANDOM_UUID' \
  -H 'Content-Type: application/json' \
  -d $'{
    "name": "New Account!"
  }'

Accounts

Accounts are your bank accounts with Increase. They store money, receive transfers, and send payments. They earn interest and have depository insurance.

The Account Object

{
  "balance": 100,
  "created_at": "2020-01-31T23:59:59Z",
  "currency": "USD",
  "entity_id": "entity_n8y8tnk2p9339ti393yi",
  "id": "account_in71c4amph0vgo2qllky",
  "interest_accrued": "0.01",
  "interest_accrued_at": "2020-01-31",
  "name": "My first account!",
  "status": "open",
  "type": "account"
}

Create an Account

POST/accounts
curl -X "POST" \
  --url "${INCREASE_URL}/accounts" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "name": "New Account!"
  }'

List Accounts

GET/accounts
curl \
  --url "${INCREASE_URL}/accounts?entity_id=entity_n8y8tnk2p9339ti393yi" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Update an Account

PATCH/accounts/{account_id}
curl -X "PATCH" \
  --url "${INCREASE_URL}/accounts/account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "name": "My renamed account"
  }'

Retrieve an Account

GET/accounts/{account_id}
curl \
  --url "${INCREASE_URL}/accounts/account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Close an Account

POST/accounts/{account_id}/close
curl -X "POST" \
  --url "${INCREASE_URL}/accounts/account_in71c4amph0vgo2qllky/close" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Account Numbers

Each account can have multiple account and routing numbers. We recommend that you use a set per vendor. This is similar to how you use different passwords for different websites. Account numbers can also be used to seamlessly reconcile inbound payments. Generating a unique account number per vendor ensures you always know the originator of an incoming payment.

The Account Number Object

{
  "account_id": "account_in71c4amph0vgo2qllky",
  "account_number": "987654321",
  "id": "account_number_v18nkfqm6afpsrvy82b2",
  "created_at": "2020-01-31T23:59:59Z",
  "name": "ACH",
  "routing_number": "101050001",
  "status": "active",
  "type": "account_number"
}

Create an Account Number

POST/account_numbers
curl -X "POST" \
  --url "${INCREASE_URL}/account_numbers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "name": "Rent payments"
  }'

List Account Numbers

GET/account_numbers
curl \
  --url "${INCREASE_URL}/account_numbers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Update an Account Number

PATCH/account_numbers/{account_number_id}
curl -X "PATCH" \
  --url "${INCREASE_URL}/account_numbers/account_number_v18nkfqm6afpsrvy82b2" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "status": "disabled"
  }'

Retrieve an Account Number

GET/account_numbers/{account_number_id}
curl \
  --url "${INCREASE_URL}/account_numbers/account_number_v18nkfqm6afpsrvy82b2" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Cards

Cards are commercial credit cards. They'll immediately work for online purchases after you create them. All cards maintain a credit limit of 100% of the Account’s available balance at the time of transaction. Funds are deducted from the Account upon transaction settlement.

The Card Object

{
  "id": "card_oubs0hwk5rn6knuecxg2",
  "account_id": "account_in71c4amph0vgo2qllky",
  "created_at": "2020-01-31T23:59:59Z",
  "description": "Office Expenses",
  "last4": "4242",
  "expiration_month": "11",
  "expiration_year": "2028",
  "status": "active",
  "billing_address": {
    "line1": "33 Liberty Street",
    "line2": null,
    "city": "New York",
    "state": "NY",
    "postal_code": "10045"
  },
  "type": "card"
}

Create a Card

POST/cards
curl -X "POST" \
  --url "${INCREASE_URL}/cards" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "description": "Card for Ian Crease"
  }'

List Cards

GET/cards
curl \
  --url "${INCREASE_URL}/cards?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve sensitive details for a Card

GET/cards/{card_id}/details
curl \
  --url "${INCREASE_URL}/cards/card_oubs0hwk5rn6knuecxg2/details" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Update a Card

PATCH/cards/{card_id}
curl -X "PATCH" \
  --url "${INCREASE_URL}/cards/card_oubs0hwk5rn6knuecxg2" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "description": "New description"
  }'

Retrieve a Card

GET/cards/{card_id}
curl \
  --url "${INCREASE_URL}/cards/card_oubs0hwk5rn6knuecxg2" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Card Disputes

If unauthorized activity occurs on a card, you can create a Card Dispute and we'll return the funds if appropriate.

The Card Dispute Object

{
  "id": "card_dispute_h9sc95nbl1cgltpp7men",
  "explanation": "Unauthorized recurring purchase",
  "status": "pending_reviewing",
  "created_at": "2020-01-31T23:59:59Z",
  "disputed_transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "acceptance": null,
  "rejection": null,
  "type": "card_dispute"
}

Create a Card Dispute

POST/card_disputes
curl -X "POST" \
  --url "${INCREASE_URL}/card_disputes" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "disputed_transaction_id": "transaction_uyrp7fld2ium70oa7oi",
    "explanation": "Unauthorized recurring transaction."
  }'

List Card Disputes

GET/card_disputes
curl \
  --url "${INCREASE_URL}/card_disputes" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Card Dispute

GET/card_disputes/{card_dispute_id}
curl \
  --url "${INCREASE_URL}/card_disputes/card_dispute_h9sc95nbl1cgltpp7men" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Transactions

Transactions are the immutable additions and removals of money from your bank account. They're the equivalent of line items on your bank statement.

The Transaction Object

{
  "account_id": "account_in71c4amph0vgo2qllky",
  "amount": 100,
  "currency": "USD",
  "created_at": "2020-01-31T23:59:59Z",
  "description": "Frederick S. Holmes",
  "id": "transaction_uyrp7fld2ium70oa7oi",
  "route_id": "account_number_v18nkfqm6afpsrvy82b2",
  "route_type": "account_number",
  "source": {
    "category": "inbound_ach_transfer",
    "inbound_ach_transfer": {
      "amount": 100,
      "originator_company_name": "BIG BANK",
      "originator_company_descriptive_date": null,
      "originator_company_discretionary_data": null,
      "originator_company_entry_description": "RESERVE",
      "originator_company_id": "0987654321",
      "receiver_id_number": "12345678900",
      "receiver_name": "IAN CREASE",
      "trace_number": "021000038461022"
    }
  },
  "type": "transaction"
}

List Transactions

GET/transactions
curl \
  --url "${INCREASE_URL}/transactions" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Transaction

GET/transactions/{transaction_id}
curl \
  --url "${INCREASE_URL}/transactions/transaction_uyrp7fld2ium70oa7oi" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Pending Transactions

Pending Transactions are potential future additions and removals of money from your bank account.

The Pending Transaction Object

{
  "account_id": "account_in71c4amph0vgo2qllky",
  "amount": 100,
  "currency": "USD",
  "created_at": "2020-01-31T23:59:59Z",
  "description": "Frederick S. Holmes",
  "id": "pending_transaction_k1sfetcau2qbvjbzgju4",
  "route_id": "card_route_jk5pd79u6ydmbf9qzu6i",
  "route_type": "transfer_instruction",
  "source": {
    "category": "ach_transfer_instruction",
    "ach_transfer_instruction": {
      "amount": 100,
      "transfer_id": "ach_transfer_uoxatyh3lt5evrsdvo7q"
    }
  },
  "status": "pending",
  "type": "pending_transaction"
}

List Pending Transactions

GET/pending_transactions
curl \
  --url "${INCREASE_URL}/pending_transactions" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Pending Transaction

GET/pending_transactions/{pending_transaction_id}
curl \
  --url "${INCREASE_URL}/pending_transactions/pending_transaction_k1sfetcau2qbvjbzgju4" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Declined Transactions

Declined Transactions are refused additions and removals of money from your bank account. For example, Declined Transactions are caused when your Account has an insufficient balance or your Limits are triggered.

The Declined Transaction Object

{
  "account_id": "account_in71c4amph0vgo2qllky",
  "amount": 1750,
  "currency": "USD",
  "created_at": "2020-01-31T23:59:59Z",
  "description": "Frederick S. Holmes",
  "id": "declined_transaction_17jbn0yyhvkt4v4ooym8",
  "route_id": "account_number_v18nkfqm6afpsrvy82b2",
  "route_type": "account_number",
  "source": {
    "category": "ach_decline",
    "ach_decline": {
      "amount": 1750,
      "originator_company_name": "BIG BANK",
      "originator_company_descriptive_date": null,
      "originator_company_discretionary_data": null,
      "originator_company_id": "0987654321",
      "reason": "insufficient_funds",
      "receiver_id_number": "12345678900",
      "receiver_name": "IAN CREASE",
      "trace_number": "021000038461022"
    }
  },
  "type": "declined_transaction"
}

List Declined Transactions

GET/declined_transactions
curl \
  --url "${INCREASE_URL}/declined_transactions" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Declined Transaction

GET/declined_transactions/{declined_transaction_id}
curl \
  --url "${INCREASE_URL}/declined_transactions/declined_transaction_17jbn0yyhvkt4v4ooym8" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Limits

You can set limits at the Account or Account Number level. Limits applied to Accounts will apply to all Account Numbers in the Account. You can specify any number of Limits and they will all be applied. Volume and count Limits are designed to prevent unauthorized debits.

The Limit Object

{
  "id": "limit_fku42k0qtc8ulsuas38q",
  "interval": "month",
  "metric": "volume",
  "model_id": "account_number_v18nkfqm6afpsrvy82b2",
  "model_type": "account_number",
  "status": "active",
  "type": "limit",
  "value": 0
}

Create a Limit

POST/limits
curl -X "POST" \
  --url "${INCREASE_URL}/limits" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "metric": "volume",
    "interval": "month",
    "model_id": "account0",
    "value": 1234
  }'

List Limits

GET/limits
curl \
  --url "${INCREASE_URL}/limits?model_id=account_number_v18nkfqm6afpsrvy82b2&status=active" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Update a Limit

PATCH/limits/{limit_id}
curl -X "PATCH" \
  --url "${INCREASE_URL}/limits/limit_fku42k0qtc8ulsuas38q" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "status": "inactive"
  }'

Retrieve a Limit

GET/limits/{limit_id}
curl \
  --url "${INCREASE_URL}/limits/limit_fku42k0qtc8ulsuas38q" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Account Transfers

Account transfers move funds between your own accounts at Increase.

The Account Transfer Object

{
  "id": "account_transfer_7k9qe1ysdgqztnt63l7n",
  "amount": 100,
  "account_id": "account_in71c4amph0vgo2qllky",
  "currency": "USD",
  "destination_account_id": "account_uf16sut2ct5bevmq3eh",
  "destination_transaction_id": "transaction_j3itv8dtk5o8pw3p1xj4",
  "created_at": "2020-01-31T23:59:59Z",
  "description": "Move money into savings",
  "network": "account",
  "status": "complete",
  "template_id": "account_transfer_template_5nloco84eijzw0wcfhnn",
  "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "approval": {
    "approved_at": "2020-01-31T23:59:59Z"
  },
  "cancellation": null,
  "type": "account_transfer"
}

Create an Account Transfer

POST/account_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/account_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "amount": 100,
    "description": "Creating liquidity",
    "destination_account_id": "account_uf16sut2ct5bevmq3eh"
  }'

List Account Transfers

GET/account_transfers
curl \
  --url "${INCREASE_URL}/account_transfers?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an Account Transfer

GET/account_transfers/{account_transfer_id}
curl \
  --url "${INCREASE_URL}/account_transfers/account_transfer_7k9qe1ysdgqztnt63l7n" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

ACH Transfers

ACH transfers move funds between your Increase account and any other account accessible by the Automated Clearing House (ACH).

The ACH Transfer Object

{
  "account_id": "account_in71c4amph0vgo2qllky",
  "account_number": "987654321",
  "addendum": null,
  "amount": 100,
  "currency": "USD",
  "approval": {
    "approved_at": "2020-01-31T23:59:59Z"
  },
  "cancellation": null,
  "created_at": "2020-01-31T23:59:59Z",
  "external_account_id": "external_account_ukk55lr923a3ac0pp7iv",
  "id": "ach_transfer_uoxatyh3lt5evrsdvo7q",
  "network": "ach",
  "notification_of_change": null,
  "return": null,
  "routing_number": "101050001",
  "statement_descriptor": "Statement descriptor",
  "status": "returned",
  "submission": {
    "trace_number": "058349238292834"
  },
  "template_id": "ach_transfer_template_wofoi8uhkjzi5rubh3kt",
  "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "type": "ach_transfer"
}

Create an ACH Transfer

POST/ach_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/ach_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "account_number": "987654321",
    "amount": 100,
    "routing_number": "101050001",
    "statement_descriptor": "New ACH transfer"
  }'

List ACH Transfers

GET/ach_transfers
curl \
  --url "${INCREASE_URL}/ach_transfers?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an ACH Transfer

GET/ach_transfers/{ach_transfer_id}
curl \
  --url "${INCREASE_URL}/ach_transfers/ach_transfer_uoxatyh3lt5evrsdvo7q" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

ACH Prenotifications

ACH Prenotifications are one way you can verify account and routing numbers by Automated Clearing House (ACH).

The ACH Prenotification Object

{
  "id": "ach_prenotification_ubjf9qqsxl3obbcn1u34",
  "account_number": "987654321",
  "addendum": null,
  "company_descriptive_date": null,
  "company_discretionary_data": null,
  "company_entry_description": null,
  "company_name": null,
  "credit_debit_indicator": null,
  "effective_date": null,
  "routing_number": "101050001",
  "prenotification_return": null,
  "created_at": "2020-01-31T23:59:59Z",
  "status": "submitted",
  "type": "ach_prenotification"
}

Create an ACH Prenotification

POST/ach_prenotifications
curl -X "POST" \
  --url "${INCREASE_URL}/ach_prenotifications" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_number": "987654321",
    "routing_number": "101050001"
  }'

List ACH Prenotifications

GET/ach_prenotifications
curl \
  --url "${INCREASE_URL}/ach_prenotifications" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an ACH Prenotification

GET/ach_prenotifications/{ach_prenotification_id}
curl \
  --url "${INCREASE_URL}/ach_prenotifications/ach_prenotification_ubjf9qqsxl3obbcn1u34" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Wire Transfers

Wire transfers move funds between your Increase account and any other account accessible by Fedwire.

The Wire Transfer Object

{
  "id": "wire_transfer_5akynk7dqsq25qwk9q2u",
  "message_to_recipient": "Message to recipient",
  "amount": 100,
  "currency": "USD",
  "account_number": "987654321",
  "account_id": "account_in71c4amph0vgo2qllky",
  "external_account_id": "external_account_ukk55lr923a3ac0pp7iv",
  "routing_number": "101050001",
  "approval": {
    "approved_at": "2020-01-31T23:59:59Z"
  },
  "cancellation": null,
  "reversal": null,
  "created_at": "2020-01-31T23:59:59Z",
  "network": "wire",
  "status": "complete",
  "submission": null,
  "template_id": "wire_transfer_template_1brjk98vuwdd2er5o5sy",
  "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "type": "wire_transfer"
}

Create a Wire Transfer

POST/wire_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/wire_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "account_number": "987654321",
    "routing_number": "101050001",
    "amount": 100,
    "message_to_recipient": "New account transfer",
    "beneficiary_name": "Ian Crease",
    "beneficiary_address_line1": "33 Liberty Street",
    "beneficiary_address_line2": "New York",
    "beneficiary_address_line3": "NY 10045"
  }'

List Wire Transfers

GET/wire_transfers
curl \
  --url "${INCREASE_URL}/wire_transfers?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Wire Transfer

GET/wire_transfers/{wire_transfer_id}
curl \
  --url "${INCREASE_URL}/wire_transfers/wire_transfer_5akynk7dqsq25qwk9q2u" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Check Transfers

Check Transfers move funds from your Increase account by mailing a physical check.

The Check Transfer Object

{
  "account_id": "account_in71c4amph0vgo2qllky",
  "address_line1": "33 Liberty Street",
  "address_line2": null,
  "address_city": "New York",
  "address_state": "NY",
  "address_zip": "10045",
  "amount": 1000,
  "created_at": "2020-01-31T23:59:59Z",
  "currency": "USD",
  "id": "check_transfer_30b43acfu9vw8fyc4f5",
  "mailed_at": "2020-01-31T23:59:59Z",
  "message": "Invoice 29582",
  "recipient_name": "Ian Crease",
  "status": "mailed",
  "submitted_at": "2020-01-31T23:59:59Z",
  "submission": {
    "check_number": "130670"
  },
  "template_id": "check_transfer_template_tr96ajellz6awlki022o",
  "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "stop_payment_request": null,
  "type": "check_transfer"
}

Create a Check Transfer

POST/check_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/check_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "address_line1": "33 Liberty Street",
    "address_city": "New York",
    "address_state": "NY",
    "address_zip": "10045",
    "amount": 1000,
    "message": "Check payment",
    "recipient_name": "Ian Crease"
  }'

List Check Transfers

GET/check_transfers
curl \
  --url "${INCREASE_URL}/check_transfers?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Check Transfer

GET/check_transfers/{check_transfer_id}
curl \
  --url "${INCREASE_URL}/check_transfers/check_transfer_30b43acfu9vw8fyc4f5" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Request a stop payment on a Check Transfer

POST/check_transfers/{check_transfer_id}/stop_payment
curl -X "POST" \
  --url "${INCREASE_URL}/check_transfers/check_transfer_30b43acfu9vw8fyc4f5/stop_payment" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Check Deposits

Check Deposits allow you to deposit images of paper checks into your account.

The Check Deposit Object

{
  "id": "check_deposit_f06n9gpg7sxn8t19lfc1",
  "amount": 1000,
  "created_at": "2020-01-31T23:59:59Z",
  "currency": "USD",
  "status": "submitted",
  "account_id": "account_in71c4amph0vgo2qllky",
  "front_image_file_id": "file_makxrc67oh9l6sg7w9yc",
  "back_image_file_id": null,
  "transaction_id": "transaction_uyrp7fld2ium70oa7oi",
  "deposit_rejection": null,
  "deposit_return": null,
  "type": "check_deposit"
}

Create a Check Deposit

POST/check_deposits
curl -X "POST" \
  --url "${INCREASE_URL}/check_deposits" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_id": "account_in71c4amph0vgo2qllky",
    "amount": 1000,
    "currency": "USD",
    "front_image_file_id": "file_hkv175ovmc2tb2v2zbrm",
    "back_image_file_id": "file_26khfk98mzfz90a11oqx"
  }'

List Check Deposits

GET/check_deposits
curl \
  --url "${INCREASE_URL}/check_deposits?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a Check Deposit

GET/check_deposits/{check_deposit_id}
curl \
  --url "${INCREASE_URL}/check_deposits/check_deposit_instruction_q2shv7x9qhevfm71kor8" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Routing Numbers

Routing numbers are used to identify your bank in a financial transaction.

The Routing Number Object

{
  "name": "Chase",
  "routing_number": "021000021",
  "type": "routing_number"
}

List Routing Numbers

You can use this API to confirm if a routing number is valid, such as when a user is providing you with bank account details.

GET/routing_numbers
curl \
  --url "${INCREASE_URL}/routing_numbers?routing_number=021000021" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

External Accounts

External Accounts represent accounts at financial institutions other than Increase. You can use this API to store their details for reuse.

The External Account Object

{
  "id": "external_account_ukk55lr923a3ac0pp7iv",
  "created_at": "2020-01-31T23:59:59Z",
  "description": "Landlord",
  "routing_number": "101050001",
  "account_number": "987654321",
  "funding": "checking",
  "type": "external_account"
}

Create an External Account

POST/external_accounts
curl -X "POST" \
  --url "${INCREASE_URL}/external_accounts" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "routing_number": "101050001",
    "account_number": "987654321",
    "description": "Landlord"
  }'

List External Accounts

GET/external_accounts
curl \
  --url "${INCREASE_URL}/external_accounts" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Update an External Account

PATCH/external_accounts/{external_account_id}
curl -X "PATCH" \
  --url "${INCREASE_URL}/external_accounts/external_account_ukk55lr923a3ac0pp7iv" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "description": "New description"
  }'

Retrieve an External Account

GET/external_accounts/{external_account_id}
curl \
  --url "${INCREASE_URL}/external_accounts/external_account_ukk55lr923a3ac0pp7iv" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Entities

Entities are the legal entities that own accounts. They can be people, corporations, partnerships, or trusts.

The Entity Object

{
  "id": "entity_n8y8tnk2p9339ti393yi",
  "structure": "corporation",
  "corporation": {
    "name": "National Phonograph Company",
    "website": "https://example.com",
    "tax_identifier": "602214076",
    "incorporation_state": "NY",
    "address": {
      "line1": "33 Liberty Street",
      "line2": null,
      "city": "New York",
      "state": "NY",
      "zip": "10045"
    },
    "beneficial_owners": [
      {
        "individual": {
          "name": "Ian Crease",
          "date_of_birth": "1970-01-31",
          "address": {
            "line1": "33 Liberty Street",
            "line2": null,
            "city": "New York",
            "state": "NY",
            "zip": "10045"
          },
          "identification": {
            "method": "social_security_number",
            "number_last4": "1120",
            "country": "US"
          }
        },
        "company_title": "CEO",
        "prong": "control"
      }
    ]
  },
  "natural_person": null,
  "joint": null,
  "type": "entity"
}

Create an Entity

POST/entities
curl -X "POST" \
  --url "${INCREASE_URL}/entities" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "structure": "corporation",
    "corporation": {
      "name": "National Phonograph Company",
      "website": "https://example.com",
      "tax_identifier": "602214076",
      "incorporation_state": "NY",
      "address": {
        "line1": "33 Liberty Street",
        "city": "New York",
        "state": "NY",
        "zip": "10045"
      },
      "beneficial_owners": [
        {
          "individual": {
            "name": "Ian Crease",
            "date_of_birth": "1970-01-31",
            "address": {
              "line1": "33 Liberty Street",
              "city": "New York",
              "state": "NY",
              "zip": "10045"
            },
            "identification": {
              "method": "social_security_number",
              "number": "078051120",
              "country": "US"
            }
          },
          "prong": "control",
          "company_title": "CEO"
        }
      ]
    }
  }'

List Entities

GET/entities
curl \
  --url "${INCREASE_URL}/entities" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an Entity

GET/entities/{entity_id}
curl \
  --url "${INCREASE_URL}/entities/entity_n8y8tnk2p9339ti393yi" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Account Statements

Account Statements are generated monthly for every active Account. You can access the statement's data via the API or retrieve a PDF with its details via its associated File.

The Account Statement Object

{
  "id": "account_statement_lkc03a4skm2k7f38vj15",
  "account_id": "account_in71c4amph0vgo2qllky",
  "created_at": "2020-01-31T23:59:59Z",
  "file_id": "file_makxrc67oh9l6sg7w9yc",
  "statement_period_start": "2020-01-31T23:59:59Z",
  "statement_period_end": "2020-01-31T23:59:59Z",
  "starting_balance": 0,
  "ending_balance": 100,
  "type": "account_statement"
}

List Account Statements

GET/account_statements
curl \
  --url "${INCREASE_URL}/account_statements?account_id=account_in71c4amph0vgo2qllky" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an Account Statement

GET/account_statements/{account_statement_id}
curl \
  --url "${INCREASE_URL}/account_statements/account_statement_lkc03a4skm2k7f38vj15" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Files

Files are objects that represent a file hosted on Increase's servers. The file may have been uploaded by you (for example, when uploading a check image) or it may have been created by Increase (for example, an autogenerated statement PDF).

The File Object

{
  "created_at": "2020-01-31T23:59:59Z",
  "id": "file_makxrc67oh9l6sg7w9yc",
  "purpose": "increase_statement",
  "description": "2022-05 statement for checking account",
  "direction": "from_increase",
  "filename": "statement.pdf",
  "download_url": "https://api.increase.com/files/file_makxrc67oh9l6sg7w9yc/download",
  "type": "file"
}

Create a File

To upload a file to Increase, you'll need to send a request of Content-Type multipart/form-data. The request should contain the file you would like to upload, as well as the parameters for creating a file.

POST/files
curl -X "POST" \
  --url "${INCREASE_URL}/files" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: multipart/form-data" \
  -F file="@tax_form.pdf" \
  -F purpose=check_image_front

List Files

GET/files
curl \
  --url "${INCREASE_URL}/files" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve a File

GET/files/{file_id}
curl \
  --url "${INCREASE_URL}/files/file_makxrc67oh9l6sg7w9yc" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Events

Events are records of things that happened to objects in the API. They also result in webhooks being generated.

The Event Object

{
  "associated_object_id": "account_in71c4amph0vgo2qllky",
  "associated_object_type": "account",
  "category": "account.created",
  "created_at": "2020-01-31T23:59:59Z",
  "id": "event_001dzz0r20rzr4zrhrr1364hy80",
  "type": "event"
}

List Events

GET/events
curl \
  --url "${INCREASE_URL}/events" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an Event

GET/events/{event_id}
curl \
  --url "${INCREASE_URL}/events/event_001dzz0r20rzr4zrhrr1364hy80" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Event Subscriptions

Webhooks are event notifications we send to you by HTTPS POST requests. Event Subscriptions are how you configure your application to listen for them. You can create an Event Subscription through your team settings or the API. For more information, see our webhooks guide.

The Event Subscription Object

{
  "id": "event_subscription_001dzz0r20rcdxgb013zqb8m04g",
  "created_at": "2020-01-31T23:59:59Z",
  "status": "active",
  "url": "https://website.com/webhooks",
  "shared_secret": "b88l20",
  "type": "event_subscription"
}

Create an Event Subscription

POST/event_subscriptions
curl -X "POST" \
  --url "${INCREASE_URL}/event_subscriptions" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "url": "https://website.com/webhooks"
  }'

List Event Subscriptions

GET/event_subscriptions
curl \
  --url "${INCREASE_URL}/event_subscriptions" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Update an Event Subscription

PATCH/event_subscriptions/{event_subscription_id}
curl -X "PATCH" \
  --url "${INCREASE_URL}/event_subscriptions/event_subscription_001dzz0r20rcdxgb013zqb8m04g" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{}'

Retrieve an Event Subscription

GET/event_subscriptions/{event_subscription_id}
curl \
  --url "${INCREASE_URL}/event_subscriptions/event_subscription_001dzz0r20rcdxgb013zqb8m04g" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Groups

Groups represent organizations using Increase. You can retrieve information about your own organization via the API, or (more commonly) OAuth platforms can retrieve information about the organizations that have granted them access.

The Group Object

{
  "activation_status": "activated",
  "ach_debit_status": "disabled",
  "created_at": "2020-01-31T23:59:59Z",
  "id": "group_1g4mhziu6kvrs3vz35um",
  "type": "group"
}

Retrieve Group details

Returns details for the currently authenticated Group.

GET/groups/current
curl \
  --url "${INCREASE_URL}/groups/current" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

OAuth Connections

When a user authorizes your OAuth application, an OAuth Connection object is created.

The OAuth Connection Object

{
  "id": "connection_dauknoksyr4wilz4e6my",
  "created_at": "2020-01-31T23:59:59Z",
  "group_id": "group_1g4mhziu6kvrs3vz35um",
  "status": "active",
  "type": "oauth_connection"
}

List OAuth Connections

GET/oauth_connections
curl \
  --url "${INCREASE_URL}/oauth_connections" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Retrieve an OAuth Connection

GET/oauth_connections/{oauth_connection_id}
curl \
  --url "${INCREASE_URL}/oauth_connections/connection_dauknoksyr4wilz4e6my" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Simulations

When testing, you can use these APIs to simulate external effects such as the passage of time. These APIs will only work in the sandbox. If you have a sandbox Event Subscription configured, calling these APIs will also result in the appropriate webhooks being sent to your endpoint.

Simulate an ACH Transfer to your account

Simulates an inbound ACH transfer to your account. The transfer may be either a credit or a debit depending on if the amount is positive or negative. This will result in either a Transaction or a Declined Transaction depending on if the transfer is allowed.

POST/simulations/inbound_ach_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/inbound_ach_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
    "amount": 1000
  }'

Submit a Sandbox ACH Transfer

Simulates the submission of an ACH Transfer to the Federal Reserve. This transfer must first have a status of pending_approval or pending_submission.

POST/simulations/ach_transfers/{ach_transfer_id}/submit
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/ach_transfers/ach_transfer_uoxatyh3lt5evrsdvo7q/submit" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Return a Sandbox ACH Transfer

Simulates the return of an ACH Transfer by the Federal Reserve due to error conditions. This will also create a Transaction to account for the returned funds. This transfer must first have a status of submitted.

POST/simulations/ach_transfers/{ach_transfer_id}/return
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/ach_transfers/ach_transfer_uoxatyh3lt5evrsdvo7q/return" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Complete a Sandbox Account Transfer

Simulates the completion of an Account Transfer. This transfer must first have a status of pending_approval.

POST/simulations/account_transfers/{account_transfer_id}/complete
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/account_transfers/account_transfer_7k9qe1ysdgqztnt63l7n/complete" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Mail a Sandbox Check Transfer

Simulates the mailing of a Check Transfer. This transfer must first have a status of pending_approval or pending_submission.

POST/simulations/check_transfers/{check_transfer_id}/mail
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/check_transfers/check_transfer_30b43acfu9vw8fyc4f5/mail" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Submit a Sandbox Check Deposit

Simulates the submission of a Check Deposit to the Federal Reserve. This Check Deposit must first have a status of pending.

POST/simulations/check_deposits/{check_deposit_id}/submit
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/check_deposits/check_deposit_f06n9gpg7sxn8t19lfc1/submit" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Reject a Sandbox Check Deposit

Simulates the rejection of a Check Deposit by Increase due to factors like poor image quality. This Check Deposit must first have a status of pending.

POST/simulations/check_deposits/{check_deposit_id}/reject
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/check_deposits/check_deposit_f06n9gpg7sxn8t19lfc1/reject" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Simulate a Wire Transfer to your account

Simulates an inbound Wire transfer to your account.

POST/simulations/inbound_wire_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/inbound_wire_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
    "amount": 1000
  }'

Submit a Sandbox Wire Transfer

Simulates the submission of a Wire Transfer to the Federal Reserve. This transfer must first have a status of pending_approval or pending_creating.

POST/simulations/wire_transfers/{wire_transfer_id}/submit
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/wire_transfers/wire_transfer_5akynk7dqsq25qwk9q2u/submit" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Reverse a Sandbox Wire Transfer

Simulates the reversal of an Wire Transfer by the Federal Reserve due to error conditions. This will also create a Transaction to account for the returned funds. This transfer must first have a status of complete.

POST/simulations/wire_transfers/{wire_transfer_id}/reverse
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/wire_transfers/wire_transfer_5akynk7dqsq25qwk9q2u/reverse" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}"

Simulate an authorization on a Card

Simulates activity on a Card.

POST/simulations/card_authorizations
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/card_authorizations" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "amount": 1000,
    "card_id": "card_oubs0hwk5rn6knuecxg2"
  }'

Create a Card Settlement

Simulates the settlement of an authorization by a card acquirer.

POST/simulations/card_settlements
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/card_settlements" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "card_id": "card_oubs0hwk5rn6knuecxg2",
    "pending_transaction_id": "pending_transaction_k1sfetcau2qbvjbzgju4"
  }'

Simulate a Real Time Payments Transfer to your account

Simulates an inbound Real Time Payments transfer to your account.

POST/simulations/inbound_real_time_payments_transfers
curl -X "POST" \
  --url "${INCREASE_URL}/simulations/inbound_real_time_payments_transfers" \
  -H "Authorization: Bearer ${INCREASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d $'{
    "account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
    "amount": 1000
  }'