# Transactions

Use these operations to:
  - set up payment instruments for payments
  - authorize and hold funds
  - capture funds
  - make payments
  - make payouts
  - refund transactions.

 - [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 li
 - [POST /transactions](https://www.rebilly.com/docs/dev-docs/api/transactions/posttransaction.md): Creates a transaction of type `sale`, `authorize` or `setup`. Use this operation for the following transactions. #### Real-time decision and response In this transaction, you send a request and inspec
 - [GET /transactions](https://www.rebilly.com/docs/dev-docs/api/transactions/gettransactioncollection.md): Retrieves a list of transactions.
 - [GET /transactions/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/gettransaction.md): Retrieves a transaction with a specified ID.
 - [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.
 - [POST /payouts](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayout.md): Creates a transaction of type `credit`.
 - [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 [Upd
 - [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 `completed`, with a specified `result` and optional currency and amount values.
 - [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.
 - [GET /payout-requests](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestcollection.md): Retrieves a list of payout requests. Filter by: `id`, `customerId`, `websiteId`, `batchId`, `status`, `blocked`, `blockReason`, `splitReason`, `createdTime`, `updatedTime`, `currency`, `amount`.
 - [POST /payout-requests](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequest.md): Creates a payout request. In the response, the `selectPaymentInstrumentUrl` field is used to redirect the customer to select a preferred payment instrument. After a payment instrument is selected, the
 - [GET /payout-requests/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequest.md): Retrieves a payout request with a specified ID.
 - [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.
 - [PATCH /payout-requests/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/patchpayoutrequest.md): Updates a payout request with a specified ID. Use this operation to update the status, description, and blocked state.
 - [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.
 - [POST /payout-request-splits](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestsplit.md): Splits a payout request that is in `pending`, `ready`, or `approved` status into two or more separate requests. Use this operation when the full amount cannot be processed due to amount restrictions,
 - [GET /payout-request-allocations](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestallocationcollection.md): Retrieves a list of payout request allocations.
 - [POST /payout-request-allocations](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestallocation.md): Creates an allocation for a payout request. When an allocation is created, the payout request transitions to the `in-progress` status, and the allocation starts in the `pending` status. The allocation
 - [POST /payout-request-allocations/auto](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestautoallocation.md): Creates an automatic payout request allocation using system-selected parameters. Only the payout request ID is required; all allocation details are determined automatically. When an allocation is crea
 - [GET /payout-request-allocations/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestallocation.md): Retrieves a payout request allocation with a specified ID.
 - [PATCH /payout-request-allocations/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/patchpayoutrequestallocation.md): Updates the status of a payout request allocation with a specified ID. Only the `processing` and `canceled` statuses can be set with this operation. The `processing` status transitions an allocation f
 - [POST /payout-request-allocations/process](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestallocationsprocess.md): Initiates the processing of one or more payout request allocations. Only allocations with status `pending` are processed. Each allocation is processed by creating a transaction. Rejects the request wi
 - [GET /payout-request-batches](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestbatchcollection.md): Retrieves a list of payout request batches.
 - [POST /payout-request-batches](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestbatch.md): Creates a batch of payout requests for batch processing. The batch links multiple payout requests together so they can be auto-allocated and processed together. Each payout request can be assigned to
 - [GET /payout-request-batches/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestbatch.md): Retrieves a payout request batch with a specified ID.
 - [PATCH /payout-request-batches/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/patchpayoutrequestbatch.md): Partially updates a payout request batch with a specified ID. Use this operation to update the description and allocation order.
 - [DELETE /payout-request-batches/{id}](https://www.rebilly.com/docs/dev-docs/api/transactions/deletepayoutrequestbatch.md): Deletes a payout request batch with a specified ID and clears the `batchId` field from every payout request in the batch. This operation preserves every payout request, status, and blocked state. This
 - [POST /payout-request-batches/{id}/auto-allocate](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestbatchautoallocate.md): Creates allocations automatically for all payout requests in the batch using the auto-allocation algorithm. Each payout request is processed independently.
 - [POST /payout-request-batches/{id}/approve](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestbatchapprove.md): Approves all payout requests in a specified batch. Each payout request is processed independently. Only payout requests with a status of `ready` can be approved.
 - [POST /payout-request-batches/{id}/block](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestbatchblock.md): Blocks all payout requests in a specified batch. Each payout request is processed independently.
 - [POST /payout-request-batches/{id}/payout-requests](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequeststobatch.md): Adds payout requests to a batch with a specified ID. Accepts payout requests in any status, with or without allocations. A batch contains a maximum of 1000 payout requests. Provide exactly one of the
 - [POST /payout-request-batches/{id}/payout-requests/remove](https://www.rebilly.com/docs/dev-docs/api/transactions/postremovepayoutrequestsfrombatch.md): Removes specified payout requests from a batch with a specified ID by clearing `batchId` on each request. This operation preserves each payout request, status, and blocked state. Removes requests rega
 - [POST /payout-request-batches/{id}/unblock](https://www.rebilly.com/docs/dev-docs/api/transactions/postpayoutrequestbatchunblock.md): Unblocks every blocked payout request in a batch with a specified ID. Leaves payout requests without a block unchanged. Processes all requests in the batch, up to the 1000-request batch limit, without
 - [GET /payout-request-batches/preview](https://www.rebilly.com/docs/dev-docs/api/transactions/getpayoutrequestbatchpreview.md): Retrieves aggregate information for the payout requests that match a specified filter. If more than 1000 payout requests match the filter, only the oldest 1000 are included in the preview.
 - [POST customer-redirected-offsite](https://www.rebilly.com/docs/dev-docs/api/transactions/customer-redirected-offsite.md)
 - [POST customer-returned](https://www.rebilly.com/docs/dev-docs/api/transactions/customer-returned.md)
 - [POST gateway-account-requested](https://www.rebilly.com/docs/dev-docs/api/transactions/gateway-account-requested.md)
 - [POST offsite-payment-completed](https://www.rebilly.com/docs/dev-docs/api/transactions/offsite-payment-completed.md)
 - [POST payout-request-canceled](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-canceled.md)
 - [POST payout-request-created](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-created.md)
 - [POST payout-request-fulfilled](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-fulfilled.md)
 - [POST payout-request-modified](https://www.rebilly.com/docs/dev-docs/api/transactions/payout-request-modified.md)
 - [POST ready-to-pay-requested](https://www.rebilly.com/docs/dev-docs/api/transactions/ready-to-pay-requested.md)
 - [POST risk-score-changed](https://www.rebilly.com/docs/dev-docs/api/transactions/risk-score-changed.md)
 - [POST transaction-amount-discrepancy-found](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-amount-discrepancy-found.md)
 - [POST transaction-declined](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-declined.md)
 - [POST transaction-discrepancy-found](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-discrepancy-found.md)
 - [POST transaction-process-requested](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-process-requested.md)
 - [POST transaction-processed](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-processed.md)
 - [POST transaction-reconciled](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-reconciled.md)
 - [POST transaction-partially-refunded](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-partially-refunded.md)
 - [POST transaction-refunded](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-refunded.md)
 - [POST transaction-voided](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-voided.md)
 - [POST transaction-timeout-resolved](https://www.rebilly.com/docs/dev-docs/api/transactions/transaction-timeout-resolved.md)
 - [POST waiting-gateway-transaction-completed](https://www.rebilly.com/docs/dev-docs/api/transactions/waiting-gateway-transaction-completed.md)
 - [POST autodeposit-lookup-performed](https://www.rebilly.com/docs/dev-docs/api/transactions/autodeposit-lookup-performed.md)
