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
| Header | Value |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_PUBLIC_TOKEN |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
invoiceCurrency | string | Yes | Invoice items price currency. Can be eur, usd, or crypto assets (usdt, usdc, btc, eth, ton, sol, bnb, bch, ltc, trx) |
items | array | Yes | List of invoice items. Each item should contain description and price |
items[].description | string | Yes | Item name/description |
items[].price | number | Yes | Item price in invoiceCurrency. Price precision is rounded per currency (see Regular Invoices). Can be zero or negative if total is greater than 0 |
isMerchantPaysFee | boolean | No | false — client pays total + fees. true — client pays total only, merchant absorbs fees |
paymentCurrency | string | No | Crypto asset to receive. If null or absent, client chooses |
invoiceNumber | string | Yes | Invoice legal number. Can contain any symbols, should be unique per business invoice |
seller | object | Yes | Seller's legal info block |
seller.name | string | Yes | Company name |
seller.address | string | Yes | Company address |
seller.phone | string | Yes | Company phone |
seller.taxId | string | No | Company tax payee ID |
buyer | object | Yes | Buyer's legal info block |
buyer.name | string | Yes | Client's name |
buyer.email | string | Yes | Client's email (legal entity, doesn't replace clientEmail from invoice filling) |
buyer.address | string | Yes | Client's address |
buyer.phone | string | Yes | Client's phone |
buyer.taxId | string | No | Client's tax payee ID |
taxes | array | No | Additional taxes included in invoice |
taxes[].name | string | Yes | Tax name (e.g., "VAT") |
taxes[].amount | number | Yes | Tax amount |
notesToBuyer | string | No | Notes provided to the client during invoice processing |
internalNotes | string | No | Internal notes visible to the merchant on the Invoices detail page |
issueDate | string | No | Invoice legal issue date (e.g., "2024-01-15") |
dueDate | string | No | Invoice legal expiration date (e.g., "2024-02-15") |
redirectURL | string | No | URL 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
| Field | Description |
|---|---|
id | Invoice identifier. Open on frontend: https://pay.solopayment.com/%invoice_id% |
status | Current invoice state (see Invoice Statuses) |
createdAt | Invoice creation date and time |
type | regular, unlimited, or Business |
company | Merchant's company info: name, logoUrl, assets |
invoiceContent | Items list, prices, invoiceCurrency, paymentCurrency, isMerchantPaysFee |
invoiceNumber | Invoice legal number |
seller | Seller info block |
buyer | Buyer info block |
taxes | Invoice taxes |
notesToBuyer | Notes for the client during invoice processing |
internalNotes | Internal notes for the merchant on Invoices detail page |
issueDate | Invoice legal issue date |
dueDate | Invoice legal expiration date |
redirectURL | Redirect 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
| Header | Value |
|---|---|
Content-Type | application/json |
Authorization is not required as the invoice is provided to a non-registered client.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
clientEmail | string | Yes | Client's email. Should meet standard email format |
paymentCurrency | string | Yes | Asset 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):
| Field | Description |
|---|---|
clientEmail | Client's email |
address | Payment address: id, address, tag (null if not TON), asset, qrCodeURL, qrCodeBase64 |
paymentDetails.rate | invoiceCurrency → paymentCurrency exchange rate |
paymentDetails.invoiceFee | Fees in paymentCurrency |
expiredAt | Invoice 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.