Venezuelan banking regulations and the bolivar exchange rate mean Krafta uses a manual payment verification model rather than an automated payment gateway. Customers pay via Pago Móvil or Banesco bank transfer, then submit their payment reference through the storefront. The payments admin atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/PloutusLab/krafta-web/llms.txt
Use this file to discover all available pages before exploring further.
/admin/payments surfaces all orders with status: "REPORTED" or an attached payments array so an admin can cross-check each submission against the actual business bank account before confirming the order.
Payment submission list
The payments page fetches orders viaGET /api/orders and filters for those with status: "REPORTED" or any attached payments array. Only orders with the REPORTED status trigger the approve/reject action buttons — orders in other statuses are shown for reference only. Each card in the queue shows:
| Field | Source |
|---|---|
| Order number | order.orderNumber |
| Order status badge | order.status |
| Payment method | submission.method — PAGO_MOVIL or TRANSFERENCIA |
| Expected amount | order.total (USD) and order.totalBs (Bolívares) |
| Reported amount | submission.amountReported |
| Bank of origin | submission.originBank |
| Reference number | submission.reference |
| Payer name | submission.payerName |
| Receipt | submission.receiptUrl — opens in a new tab and displays as an inline thumbnail |
Confirm or reject a payment
PUT /api/payments — request body
UUID of the order being verified.
UUID of the specific
PaymentSubmission record. When provided, only that submission record is updated. If omitted, all submissions on the order are updated.Verification outcome. Must be
"CONFIRMED" or "REJECTED".Human-readable explanation sent to the customer when
status is "REJECTED". For example: "Referencia no aparece en el banco" or "Monto insuficiente".Status effects
| Action | PaymentSubmission status | Order status | Next step |
|---|---|---|---|
| Confirm | CONFIRMED | CONFIRMED | Workshop assignment becomes available in /admin/orders |
| Reject | REJECTED | REJECTED | Customer must resubmit with a corrected proof |
Audit log
ThePaymentVerificationLog model exists in the schema to record verification events against an order. It stores the following fields:
| Field | Description |
|---|---|
orderId | The order that was verified |
action | "CONFIRMED", "REJECTED", or "REFUNDED" |
adminNotes | Optional free-text notes for internal records |
createdAt | Timestamp of the verification action |
The
PUT /api/payments route currently updates the PaymentSubmission and Order records directly. PaymentVerificationLog entries must be created manually via Prisma Studio or a custom migration script for audit trail purposes until the route is extended to write them automatically.Payment accounts
PaymentAccount records define the bank accounts displayed to customers at checkout. These records are managed directly in the database via Prisma Studio — there is no admin UI or API endpoint for PaymentAccount CRUD at this time.
| Field | Description |
|---|---|
bankName | Bank name, e.g. "Banesco" |
accountNumber | Full account number |
holderName | Legal name of the account holder |
holderId | Cédula or RIF of the account holder |
phone | Phone number registered for Pago Móvil |
instructions | Formatted instructions shown during checkout |
active | Whether the account is currently shown to customers |
Refunds
When an order must be reversed after confirmation, aRefund record is created manually. The model tracks:
| Field | Description |
|---|---|
amount | Refund amount in USD |
method | Payment method used for the refund |
reference | Bank reference for the outgoing transfer |
receiptUrl | URL of the refund receipt file |
status | "PENDING" while the transfer is in progress, "COMPLETED" when confirmed |
