THE NEW PAYMENT MODELOne purchase.
One purchase.
Every attempt.
The operation holds the purchase context. Transactions record what happened each time the customer tried to pay.
A different way to read payments
In Alignet One, a transaction is not necessarily an independent sale. The model has two levels:
One operation can contain several transactions. Each transaction belongs to an operation context. Retrying or changing methods does not, by itself, create another store order.
“Purchase session” describes the business context. Its validity is not necessarily the same as a browser tab, token or local timer. Follow your integration’s validity and retry rules.
The same state names, two different levels
Operations and transactions use the same state names, but describe different resources. Always specify whether a state belongs to the operation or to an attempt. The current states are Registered, Pending, Authorized, Invalid, Declined, Voided, Settled, Expired and Cancelled. Keep the overall operation state separate from each transaction’s state. Abonado (merchant payout) and Devuelto (refunded) are planned but not available yet. Do not make them required conditions in your integration.Explore one purchase with several attempts
Advance through the example: two attempts are declined and the third is authorized. The operation and store order stay the same; the transaction history grows. The final result is one S/ 50.00 purchase with three attempts, one authorized. Do not add their amounts together and report S/ 150.00 in sales.What changes in your integration
Keep the store order
Connect the purchase to its operation. Do not create another order just because an attempt was declined.
Keep each attempt's identity
Store every transaction_id and its outcome. Do not overwrite a previous attempt when adding the next.
Show support the journey
Keep the method and response for every attempt and identify the one that was authorized.
Separate reconciliation levels
Count purchases in their operation context and analyze authorizations, declines and adjustments per transaction.
Recognize both levels in the API
The transaction query returns anoperation structure and a transactions collection.
Two different lists:
transactions[] groups transactions; lifecycle[] groups events within a transaction. Registered, pending and authorized events do not mean three attempts.merchant_code, merchant_operation_number and transaction_id. Do not assume a transaction-filtered query necessarily returns the operation’s entire history.
Structure example
Simplified response fragment based on the documented query. Identifiers are illustrative; this is not a request to copy or a complete state catalog.15000 is an amount in minor units: S/ 150.00 with currency 604 (PEN).
Implementation rules
- Connect order and operation. Keep their identifiers separate; do not assume identical formats.
- Record each attempt. Store its transaction_id, method, state and support references.
- Do not infer payment from the UI. Closing checkout or receiving a callback does not by itself prove approval.
- Confirm from your backend. Validate operation, attempt, amount and currency using the appropriate query or notification.
- Apply changes idempotently. Repeated notifications or queries must not duplicate fulfillment or register the same sale again.
- Preserve history. A subsequent void or refund does not erase the original payment transaction.
Keeping an operation for the same purchase is not the same as blindly resending an HTTP request. Technical retry, expiration and idempotency rules depend on the endpoint and channel.
Check your understanding
Three lifecycle events: does that mean three transactions?
Three lifecycle events: does that mean three transactions?
No. One transaction changed state three times. All events belong to the same transaction_id.
The last observed transaction was declined. Is the operation lost?
The last observed transaction was declined. Is the operation lost?
Do not decide from that alone. Check the operation and its attempts. Do not overwrite a confirmed purchase with another attempt’s decline.
Next: transaction states
Learn what each outcome means and how your integration should respond.

