Create an Invoice

Create a merchant crypto POS invoice

Endpoint

POST {BASE_URL}/crypto/v1/createInvoice

Create invoice

post

Creates a new merchant invoice and returns an invoice id and hosted payment URL.

Runtime caveat: this endpoint currently enforces exact content-type: application/json.

Header parameters
apikeystringRequired

Merchant API key.

merchantidstringRequired

Merchant identifier bound to the API key.

content-typeconst: application/jsonRequired

Runtime currently requires exact value application/json.

Body
amountnumber · min: 0.05Required
descriptionstring · max: 250Optional
partialPaymentsEnabledbooleanOptionalDefault: false
tippingEnabledbooleanOptionalDefault: true
btcOnlybooleanOptional
dueDateone ofOptional
string · date-timeOptional
or
numberOptional
Other propertiesanyOptional
Responses
post
/crypto/v1/createInvoice

Required Headers

Header
Required
Type
Value

content-type

Yes

String

application/json

apikey

Yes

String

Merchant API key

merchantid

Yes

String

Merchant identifier

Request Body

Field
Required
Type
Notes

amount

Yes

Number

Must be >= 0.05

client.name

No

String

Max 50 chars

client.email

No

String

Email format, max 100 chars

client.phone

No

String

Max 25 chars

client.referenceID

No

String

Max 25 chars

client.cryptoAddress

No

String

Accepted by validator

description

No

String

Max 250 chars

partialPaymentsEnabled

No

Boolean

Defaults to false

tippingEnabled

No

Boolean

Defaults to true

btcOnly

No

Boolean

If true, invoice is BTC-only in widget flow

dueDate

No

Date/String

Accepted by validator as date-like input

Minimal Request Example

Full Request Example

Success Response (200)

After creating an invoice, send customers to the returned paymentURL to complete payment in the hosted widget.

Hosted widget payment landing page
Hosted widget landing page opened from `paymentURL`

Error Statuses

Status
Meaning

400

Validation or persistence failure

401

Missing request body (legacy guard)

403

Missing apikey or merchantid

405

Invalid content-type, invalid merchant ID, or invalid API key

408

API key and merchant mismatch

412

Merchant not actively enrolled in cryptoPOS-V1

420

Invoice object creation failure

501

Credential validation server error

502

Merkle validation/generation failure

Notes

  • Runtime currently uses partialPaymentsEnabled (not partialPayments) as the canonical request field.

  • Returned paymentURL is built from deployment configuration.

  • See Known Caveats and Legacy Behavior for behavior details and compatibility notes.

Last updated