Schemas
CreatePaymentDto
amountAmount to collect, in whole XAF. Minimum 100.
phone_numberCustomer's phone number in international format. The prompt is sent to this handset.
payment_methodHow the customer pays. mobile_money is MTN Mobile Money, orange_money is Orange Money. More instruments will be added here rather than in a second field.
PaymentLinkRequiredFieldDto
labelField label shown to the payer
requiredWhether the field is mandatory
typeField type (e.g. text, email, number)
descriptionHelp text shown under the field
nameStable field key (defaults to a slug of the label)
PaymentLinkVariantDto
nameVariant name
priceVariant price in whole XAF
inventory_item_idLinked inventory item id
skuStock keeping unit
image_urlVariant image URL
sort_orderDisplay order
is_defaultWhether this is the default variant
enabledWhether the variant is selectable
PaymentLinkPricingTierDto
min_quantityMinimum quantity for this tier
unit_priceUnit price in whole XAF for this tier
max_quantityMaximum quantity for this tier (omit for open-ended)
sort_orderDisplay order
CreatePaymentLinkDto
titleName shown on the checkout page
amountAmount to collect, in whole XAF. Minimum 100.
descriptionDescription shown to the payer
currencyCurrency (defaults to XAF)
allow_multiple_paymentsAllow the link to be paid more than once
max_paymentsCap the number of payments allowed
success_redirect_urlHTTPS URL the payer is redirected to after success
failure_redirect_urlHTTPS URL the payer is redirected to after failure
expires_atExpiry timestamp (ISO 8601)
Extra fields the payer must complete
cover_image_urlCover image URL
image_urlsAdditional image URLs
typeLink type: STANDARD, INVENTORY_ITEM or DONATION
inventory_item_idInventory item id (when type is INVENTORY_ITEM)
allow_custom_amountLet the payer choose the amount
min_amountMinimum amount when allow_custom_amount is true. Cannot go below 100.
max_amountMaximum amount when allow_custom_amount is true
quantity_enabledAllow the payer to choose a quantity
has_variantsWhether the link has variants
has_tiered_pricingWhether the link has tiered pricing
custom_slugCustom URL slug (must be unique)
tagsOrganizational tags
Product variants
Quantity-based pricing tiers
UpdatePaymentLinkDto
titleLink title
descriptionLink description
amountAmount in whole XAF. Minimum 100.
cover_image_urlCover image URL
image_urlsAdditional image URLs
allow_multiple_paymentsAllow the link to be paid more than once
max_paymentsMaximum number of payments
success_redirect_urlRedirect URL after a successful payment
failure_redirect_urlRedirect URL after a failed payment
expires_atExpiry timestamp (ISO 8601)
statusLink status
CreateUploadUrlDto
purposeWhat the file will be used for. Determines size and type limits.
file_nameOriginal file name, used only for its extension
content_typeMIME type. Must match the Content-Type you PUT, or the signature is invalid.
content_lengthExact byte length. Signed into the URL, so storage rejects a body of any other size — this is what enforces the cap once the bytes no longer pass through us.
expires_in_secondsSeconds the upload URL stays valid. Defaults to 300.
InvoiceItemDto
nameLine item name
priceUnit price in whole XAF
quantityQuantity
noteFree-text note for this line
CreateInvoiceDto
customer_nameCustomer's name, shown on the invoice
due_dateDue date (ISO 8601)
Line items. At least one.
customer_emailCustomer email. Required to send the invoice by email.
customer_phoneCustomer phone in international format
discount_percentInvoice-level discount as a PERCENTAGE of the subtotal, 0–100. 10 means 10% off, not 10 XAF.
notesNotes shown on the invoice
currencyCurrency. XAF only today; present so the field is stable when others land.
cover_image_urlCover image URL from POST /v1/files/upload-url. Must be on our storage host.
external_referenceYour own identifier for this invoice, echoed back on reads.

