# Transactions Use these operations to: - set up payment instruments for payments - authorize and hold funds - capture funds - make payments - make payouts - refund transactions. ## Ready to pay - [POST /ready-to-pay](https://www.rebilly.com/docs/dev-docs/api/transactions/postreadytopay.md): Retrieves available payment methods for a specific transaction or purchase. The order in which the payment methods are displayed to the customer should be the same as the order in the response. The list of payment methods is generated from available gateway accounts and the last matched action on the event. If no rules match for the specific request, all methods supported by the gateway accounts are sent. To invert this behavior, place an all matching rule at the end of the event in the rules engine, and include an empty property for the action. For more information, see Update event rules and Gateway accounts. ## Create a transaction - [POST /transactions](https://www.rebilly.com/docs/dev-docs/api/transactions/posttransaction.md): Creates a transaction of type , or . Use this operation for the following transactions. #### Real-time decision and response In this transaction, you send a request and inspect the of the response for or . #### User approval/interaction required In this transaction, user approval is required to complete the transaction. User approval generally requires the user to interact with a third party, and is common in many transactions for alternative methods. For example, PayPal requires user permission to complete a payment or to accept a billing agreement. Payment cards may also require user approval for 3D secure authentication. If approval is required, you receive a response with a value of and a value of . The property of the response has a link for the . Open the in an iframe or in a pop. A pop is a better workflow for mobile devices. ## Retrieve transactions - [GET /transactions](https://www.rebilly.com/docs/dev-docs/api/transactions/gettransactioncollection.md): Retrieves a list of transactions. ## Retrieve a transaction - [GET /transactions/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/gettransaction.md): Retrieves a transaction with a specified ID. ## Update a transaction - [PATCH /transactions/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/patchtransaction.md): Updates the custom fields of a transaction with a specified ID. ## Create a credit transaction - [POST /payouts](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayout.md): Creates a transaction of type . ## Query a transaction - [POST /transactions/{id}/query](https://www.rebilly.com/docs/dev-docs/api/transactions/posttransactionquery.md): Queries a transaction with a specified ID. The query interacts with the related gateway account to obtain the result, amount, and currency. If after analysis, the transaction must be updated, see Update a transaction status. ## Update a transaction status - [POST /transactions/{id}/update](https://www.rebilly.com/docs/dev-docs/api/transactions/posttransactionupdate.md): Updates the status of a transaction with a specified ID to , with a specified and optional currency and amount values. ## Refund a transaction - [POST /transactions/{id}/refund](https://www.rebilly.com/docs/dev-docs/api/transactions/posttransactionrefund.md): Refunds a transaction with a specified ID. The refund is in the same currency as the original transaction. ## Retrieve a list of payout requests - [GET /payout-requests](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestcollection.md): Retrieves a list of payout requests. ## Create a payout request - [POST /payout-requests](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequest.md): Creates a payout request. In the response, the field is used to redirect the customer to select a preferred payment instrument. After a payment instrument is selected, the customer is redirected to the value. > The selected payment gateway must be configured to support payout requests. > For more information, see the readyToPayoutInstruction field. ## Retrieve a payout request - [GET /payout-requests/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequest.md): Retrieves a payout request with a specified ID. ## Upsert a payout request - [PUT /payout-requests/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/putpayoutrequest.md): Creates or updates (upserts) a payout request with a specified ID. ## Cancel a payout request - [POST /payout-requests/{id}/cancel](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestcancellation.md): Cancels a payout request with a specified ID. ## Retrieve associated payment instruments - [GET /payout-requests/{id}/payment-instruments](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestpaymentinstruments.md): Retrieves the payment gateway and a list of payment instruments that are associated with a payout request with a specified ID. ## Customer redirected offsite - [POST customer-redirected-offsite](https://www.rebilly.com/docs/dev-docs/api/transactions/customer-redirected-offsite.md) ## Customer returned - [POST customer-returned](https://www.rebilly.com/docs/dev-docs/api/transactions/customer-returned.md) ## Gateway account requested - [POST gateway-account-requested](https://www.rebilly.com/docs/dev-docs/api/transactions/gateway-account-requested.md) ## Offsite payment completed - [POST offsite-payment-completed](https://www.rebilly.com/docs/dev-docs/api/transactions/offsite-payment-completed.md) ## Payout request canceled - [POST payout-request-canceled](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-canceled.md) ## Payout request created - [POST payout-request-created](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-created.md) ## Payout request modified - [POST payout-request-modified](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-modified.md) ## Risk score changed - [POST risk-score-changed](https://www.rebilly.com/docs/dev-docs/api/transactions/risk-score-changed.md) ## Transaction amount discrepancy found - [POST transaction-amount-discrepancy-found](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-amount-discrepancy-found.md) ## Transaction declined - [POST transaction-declined](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-declined.md) ## Transaction discrepancy found - [POST transaction-discrepancy-found](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-discrepancy-found.md) ## Transaction process requested - [POST transaction-process-requested](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-process-requested.md) ## Transaction processed - [POST transaction-processed](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-processed.md) ## Transaction timeout resolved - [POST transaction-timeout-resolved](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-timeout-resolved.md) ## Waiting gateway transaction completed - [POST waiting-gateway-transaction-completed](https://www.rebilly.com/docs/dev-docs/api/transactions/waiting-gateway-transaction-completed.md) ## Autodeposit lookup performed - [POST autodeposit-lookup-performed](https://www.rebilly.com/docs/dev-docs/api/transactions/autodeposit-lookup-performed.md)