Skip to main content
All payment endpoints require a valid Bearer token in the Authorization header.

POST /v2/scan-link Resolves a raw QR code string scanned by the device camera. The response shape varies depending on whether the QR encodes a merchant payment link, a user profile link, or a fixed-amount payment URL.

Request body

The raw string value read from the QR code.

Response

is_string
boolean
true if the QR encodes a merchant/cashier payment link where the user enters the amount. false if it encodes a fixed-amount payment or a user profile.
user_id
integer
Present when the QR code encodes a user profile. When user_id is set and is_string is false, the client navigates to the scanned user’s profile instead of the payment flow.
data
object
curl -X POST https://dossapp.com/api/v2/scan-link \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"link": "https://dossapp.com/pay/abc123"}'

Confirm payment with PIN

POST /v2/confirm_payment_with_pin Finalises a payment that was initiated from a QR code scan. The user confirms by entering their 4-digit PIN. On success, the dashboard and transaction history caches are invalidated.

Request body

confirm_pin
string
required
The user’s 4-digit PIN.
The type of payment link: "string" for merchant payments or "url" for fixed-amount payments. When link_type is "string", the merchant and cashier objects from the scan response are omitted.
merchantId
integer
The merchant’s numeric ID. Required when link_type is "string".
cashier_id
integer
The cashier’s numeric ID. Required when link_type is "string".
amount
string
The payment amount entered by the user.
payment_id
integer
The payment record ID. Required when link_type is "url".
note
string
Optional note for the payment.
curl -X POST https://dossapp.com/api/v2/confirm_payment_with_pin \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"confirm_pin": "4242", "link_type": "string", "merchantId": 5, "cashier_id": 12, "amount": "25.00"}'

Payment request action

POST /v2/payment-request-action Approves or rejects an incoming payment request (such as a request from a merchant terminal). The user must enter their PIN to authorise the action. On success, the dashboard and transaction history caches are invalidated.

Request body

confirm_pin
string
required
The user’s 4-digit PIN.
txn_id
string
required
The transaction UUID (txn_uid) of the pending payment request.
type
string
required
The action to take. Must be "approve" or "reject".

Response

time
string
Timestamp of when the action was processed.
message
string
A human-readable confirmation message.
curl -X POST https://dossapp.com/api/v2/payment-request-action \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"confirm_pin": "4242", "txn_id": "txn-uuid-here", "type": "approve"}'

Build docs developers (and LLMs) love