Core resources
Payins operates on two linked resources:Payment Order
A payment request created to collect funds from a customer. It represents the full payment lifecycle and can contain one or more attempts.
- Unique identifier (
public_codeorissue) - Expiration date
- Final status reflecting the overall outcome
Payment Order Attempt
A specific trial by the user to fulfill a Payment Order. Each checkout session (declined card, closed browser, insufficient funds, etc.) is logged as a separate attempt.
- Multiple attempts per order
- Granular history of each try
- Fine-grained webhook events
Relationship
A singlePaymentOrder can contain N PaymentOrderAttempts.
Receiving a
payment_order_attempt.cancelled webhook does not mean the payment link is cancelled — it only means that specific attempt failed. The user can start a new attempt that may eventually move the parent PaymentOrder to paid.Available flows
Create Payin (hosted)
Create a shareable payment link. The customer completes checkout on a Vita-hosted page and is redirected back to your URLs on success, cancel, error, or pending.
Direct Payment
Collect payment data from your UI and submit it directly to Vita — no redirection. Useful for apps that want to render their own checkout.