Skip to main content
POST
Create deposit link

Authorizations

X-App-Id
string
header
required

App ID for authentication

X-Api-Key
string
header
required

API Key for authentication

Headers

Idempotency-Key
string

Your own unique value for this create. Retrying with the same key returns the link the first call made, rather than creating another. Keys are remembered for 24 hours.

Body

application/json
customer_uuid
string
required

The customer being asked to pay.

amount
integer
required

Amount to collect, in cents. Must be greater than zero.

Example:

250000

currency
enum<string>

Currency to collect in. Defaults to the customer's, then the company's, then USD.

Narrower than the currencies elsewhere in this API: a deposit must be payable by card or bank debit, and every one of these is two-decimal.

Available options:
USD,
CAD,
EUR,
GBP,
AUD
expires_at
string<date-time>

When the link stops being payable. Must be in the future. Defaults to 30 days from creation.

description
string

Shown to the payer on the checkout page.

Example:

"50% deposit"

reference
string

Your own reference. Returned on the link and filterable on the list.

Example:

"PO-4821"

metadata
object

Arbitrary key/value pairs, returned unchanged. Maximum 20 keys and 4KB.

Response

A previous request with this Idempotency-Key already created this link. No second link was created.

A request for money from a customer before any invoice exists.

The customer pays the URL by card or bank debit. The money lands as an unapplied payment and posts to no accounting system until someone applies it to an invoice, at which point applied turns true.

uuid
string

Identifies the link everywhere in this API.

status
enum<string>

Where the link is in its life.

processing means a bank debit was taken and is still settling, 2 to 4 business days. The money has not arrived; it becomes paid on its own.

failed is terminal. The customer cannot retry the same link and you issue a new one.

A lapsed link reports expired even before the sweeper rewrites it, so this always agrees with whether the URL still works.

Available options:
open,
processing,
paid,
failed,
expired,
canceled,
refunded
amount
integer

Amount requested, in cents.

currency
enum<string>

Currency to collect in. Defaults to the customer's, then the company's, then USD.

Narrower than the currencies elsewhere in this API: a deposit must be payable by card or bank debit, and every one of these is two-decimal.

Available options:
USD,
CAD,
EUR,
GBP,
AUD
url
string

The payable URL. Always present and always works.

short_url
string | null

Shortened form of the same URL. Null when the shortener was unreachable at creation, so fall back to url rather than treating null as an error.

expires_at
string<date-time>
description
string | null

Shown to the payer.

reference
string | null

Your own reference.

metadata
object | null
created_at
string<date-time>
paid_at
string<date-time> | null
customer
object
applied
boolean

Whether the money has been applied to an invoice.

Separate from status, and not a problem state: paid with applied: false is where a deposit sits until someone maps it to an invoice. When the deposit was collected the invoice did not exist, so nothing picks one on its own. Apply it with PUT /deposit_links/{uuid}/invoice, or in the Streamlined app.

apply_to_invoice_uuid
string | null

The invoice a processing deposit is queued against, via PUT /deposit_links/{uuid}/invoice. It is applied there when the money lands, at which point this goes null and applied turns true. Null when nothing is queued.

payment
object | null

The money that settled this link. Null until it has been paid.

Example: