Skip to main content

Business Invoices

Business invoices are professional invoices with extended details, suitable for B2B transactions. They include seller/buyer info, tax details, invoice numbers, and dates.

Create New Business Invoice

This endpoint creates a new business invoice under merchant's account.

POST /api/invoices/v1/business

Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer YOUR_PUBLIC_TOKEN

Request Body

FieldTypeRequiredDescription
invoiceCurrencystringYesInvoice items price currency. Can be eur, usd, or crypto assets (usdt, usdc, btc, eth, ton, sol, bnb, bch, ltc, trx)
itemsarrayYesList of invoice items. Each item should contain description and price
items[].descriptionstringYesItem name/description
items[].pricenumberYesItem price in invoiceCurrency. Price precision is rounded per currency (see Regular Invoices). Can be zero or negative if total is greater than 0
isMerchantPaysFeebooleanNofalse — client pays total + fees. true — client pays total only, merchant absorbs fees
paymentCurrencystringNoCrypto asset to receive. If null or absent, client chooses
invoiceNumberstringYesInvoice legal number. Can contain any symbols, should be unique per business invoice
sellerobjectYesSeller's legal info block
seller.namestringYesCompany name
seller.addressstringYesCompany address
seller.phonestringYesCompany phone
seller.taxIdstringNoCompany tax payee ID
buyerobjectYesBuyer's legal info block
buyer.namestringYesClient's name
buyer.emailstringYesClient's email (legal entity, doesn't replace clientEmail from invoice filling)
buyer.addressstringYesClient's address
buyer.phonestringYesClient's phone
buyer.taxIdstringNoClient's tax payee ID
taxesarrayNoAdditional taxes included in invoice
taxes[].namestringYesTax name (e.g., "VAT")
taxes[].amountnumberYesTax amount
notesToBuyerstringNoNotes provided to the client during invoice processing
internalNotesstringNoInternal notes visible to the merchant on the Invoices detail page
issueDatestringNoInvoice legal issue date (e.g., "2024-01-15")
dueDatestringNoInvoice legal expiration date (e.g., "2024-02-15")
redirectURLstringNoURL to redirect after "Done" status. If null or absent, default from Settings/Payment is used

cURL

View full cURL request
curl --location 'https://my.solopayment.com/api/invoices/v1/business' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_PUBLIC_TOKEN' \
--data-raw '{
"invoiceCurrency": "eur",
"items": [
{
"description": "Product 1",
"price": 100.50
},
{
"description": "Product 2",
"price": 1.00
}
],
"isMerchantPaysFee": true,
"paymentCurrency": "usdt",
"invoiceNumber": "INV-123",
"seller": {
"name": "Company Name",
"address": "123 Business St, City, Country",
"phone": "+1234567890",
"taxId": "TAX123456"
},
"buyer": {
"name": "Customer Name",
"email": "customer@example.com",
"address": "456 Customer Ave, City, Country",
"phone": "+0987654321",
"taxId": "CUST789012"
},
"taxes": [
{
"name": "VAT",
"amount": 21.00
}
],
"notesToBuyer": "Thank you for your business!",
"internalNotes": "Internal notes for accounting",
"issueDate": "2024-01-15",
"dueDate": "2024-02-15",
"redirectURL": "https://google.com"
}'

Response

View response body
{
"id": "%invoice_id%",
"status": "created",
"createdAt": "2026-02-16T13:23:26.816Z",
"type": "Business",
"company": {
"name": "%company_name%",
"logoUrl": "%logo_url%",
"assets": [
{ "asset": "btc", "isAllowed": false },
{ "asset": "eth", "isAllowed": true },
{ "asset": "usdt", "isAllowed": true },
{ "asset": "sol", "isAllowed": true },
{ "asset": "ton", "isAllowed": true },
{ "asset": "usdc", "isAllowed": true },
{ "asset": "bnb", "isAllowed": false },
{ "asset": "ltc", "isAllowed": false },
{ "asset": "near", "isAllowed": false },
{ "asset": "trx", "isAllowed": false },
{ "asset": "bch", "isAllowed": false }
]
},
"invoiceContent": {
"invoiceCurrency": "eur",
"items": [
{ "name": "Product 1", "price": "1000.5" },
{ "name": "Product 2", "price": "1" }
],
"paymentCurrency": "usdt",
"isMerchantPaysFee": true
},
"invoiceNumber": "INV-123",
"seller": {
"name": "Company Name",
"address": "123 Business St, City, Country",
"phone": "+1234567890",
"taxId": "TAX123456"
},
"buyer": {
"name": "Customer Name",
"email": "customer@example.com",
"address": "456 Customer Ave, City, Country",
"phone": "+0987654321",
"taxId": "CUST789012"
},
"taxes": [
{ "name": "VAT", "amount": 21 }
],
"notesToBuyer": "Thank you for your business!",
"internalNotes": "Internal notes for accounting",
"issueDate": "2024-01-15",
"dueDate": "2024-02-15",
"redirectURL": "https://google.com"
}

Response Fields

FieldDescription
idInvoice identifier. Open on frontend: https://pay.solopayment.com/%invoice_id%
statusCurrent invoice state (see Invoice Statuses)
createdAtInvoice creation date and time
typeregular, unlimited, or Business
companyMerchant's company info: name, logoUrl, assets
invoiceContentItems list, prices, invoiceCurrency, paymentCurrency, isMerchantPaysFee
invoiceNumberInvoice legal number
sellerSeller info block
buyerBuyer info block
taxesInvoice taxes
notesToBuyerNotes for the client during invoice processing
internalNotesInternal notes for the merchant on Invoices detail page
issueDateInvoice legal issue date
dueDateInvoice legal expiration date
redirectURLRedirect URL after "Done" status

Fill Business Invoice with Client Info

This endpoint fills a business invoice with client's info — email address and payment asset (if not pre-defined by merchant during creation).

POST /api/invoices/v1/business/%invoice_id%/proceed

Headers

HeaderValue
Content-Typeapplication/json

Authorization is not required as the invoice is provided to a non-registered client.

Request Body

FieldTypeRequiredDescription
clientEmailstringYesClient's email. Should meet standard email format
paymentCurrencystringYesAsset name + network. Values: btc, eth, trc20usdt, usdterc20, sol, ton, usdc, bnb, ltc, trx, bch. Ignored if previously provided during creation

cURL

curl --location 'https://my.solopayment.com/api/invoices/v1/business/%invoice_id%/proceed' \
--header 'Content-Type: application/json' \
--data '<body>'

Body:

{
"paymentCurrency": "trc20usdt",
"clientEmail": "client@example.com"
}

Response

View response body
{
"id": "%invoice_id%",
"status": "%invoice_status%",
"createdAt": "YYYY-MM-DDTHH:MM:SS.000Z",
"type": "regular",
"company": {
"name": "%company_name%",
"logoUrl": "%logo_url%",
"assets": [
{ "asset": "btc", "isAllowed": true },
{ "asset": "eth", "isAllowed": false },
{ "asset": "usdt", "isAllowed": true },
{ "asset": "sol", "isAllowed": false },
{ "asset": "ton", "isAllowed": false },
{ "asset": "usdc", "isAllowed": false },
{ "asset": "bnb", "isAllowed": false },
{ "asset": "ltc", "isAllowed": false },
{ "asset": "near", "isAllowed": false },
{ "asset": "trx", "isAllowed": false },
{ "asset": "bch", "isAllowed": false }
]
},
"invoiceContent": {
"invoiceCurrency": "eur",
"items": [
{ "name": "Coffee", "price": "1000" },
{ "name": "Sugar", "price": "1" },
{ "name": "Regular client discount", "price": "-3" }
],
"paymentCurrency": "trc20usdt",
"isMerchantPaysFee": false
},
"invoiceNumber": "INV-123",
"seller": {
"name": "Company Name",
"phone": "+1234567890",
"taxId": "TAX123456",
"address": "123 Business St, City, Country"
},
"buyer": {
"name": "Customer Name",
"email": "customer@example.com",
"phone": "+0987654321",
"taxId": "CUST789012",
"address": "456 Customer Ave, City, Country"
},
"taxes": [
{ "name": "VAT", "amount": 21 }
],
"notesToBuyer": "Thank you for your business!",
"internalNotes": "Internal notes for accounting",
"issueDate": "2024-01-15",
"dueDate": "2024-02-15",
"redirectURL": "%url_for_DONE_statused_invoices_redirection%",
"clientEmail": "client_mail@service.domain",
"address": {
"id": "%payment_address_id%",
"address": "%payment_address%",
"tag": null,
"asset": "trc20usdt",
"qrCodeURL": "string link to address QR-code generated",
"qrCodeBase64": "string link to address QR-code generated in Base64"
},
"paymentDetails": {
"rate": "1.16843920",
"invoiceFee": "12.728032"
},
"expiredAt": "YYYY-MM-DDTHH:MM:SS.000Z"
}

Additional Response Fields

Fields available after the invoice is filled (not available for "Created" status):

FieldDescription
clientEmailClient's email
addressPayment address: id, address, tag (null if not TON), asset, qrCodeURL, qrCodeBase64
paymentDetails.rateinvoiceCurrency → paymentCurrency exchange rate
paymentDetails.invoiceFeeFees in paymentCurrency
expiredAtInvoice expiration time. 30 min for all assets, 120 min for BTC

Get Business Invoice Info

Use the same endpoint as Regular Invoices:

GET /api/invoices/v1/regular/%invoice_id%

See Regular Invoices — Get Invoice Info for details.