# Ryft Payment API

Ryft provides a collection of APIs that you can use to accept and process payments + marketplace functionality (payouts). We have a testing environment called sandbox, which you can sign up for to test API calls without affecting live data.

# Authentication

When you sign up for an account, you are given a secret and public API key pair. You authenticate with our API by providing the appropriate key in the request Authorization header. Never share your secret keys. Keep them guarded and secure.

## Public API key

Public keys should only be used in JavaScript or native applications.
This key is solely used to identify the partner making requests.
Supply this key in the `Authorization` header.

## Secret API key

Your secret key should always be supplied in the `Authorization` header. Make sure this key is stored securely on your backend and never surfaced client-side.

# Rate Limiting

We use rate limiting on a per-user basis to protect our APIs against abuse.
Our Sandbox environment is limited to 5 requests per second.
Our production environment is limited to 50 requests per second.

We also allow a brief burst above this limit to accommodate a sudden increase in traffic.

If you exceed the above quota then the API will respond with a 429 status code and you will need to retry the API call (we recommend implementing a retry policy with an exponential back-off).


Version: 1.1.0

## Servers

Sandbox environment
```
https://sandbox-api.ryftpay.com/v1
```

Production environment
```
https://api.ryftpay.com/v1
```

## Security

### secretApiKeyAuth

Type: apiKey
In: header
Name: Authorization

### publicApiKeyAuth

Type: apiKey
In: header
Name: Authorization

## Download OpenAPI description

 - [Ryft Payment API](https://developer.ryftpay.com/_bundle/documentation/api/reference/openapi.yaml)

## Payments

 - [POST /payment-sessions](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessioncreate.md): The start of the payment flow. Call this request once the customer has proceeded to checkout. Payment Sessions will auto-expire after several days if you don't take payment via the `attempt-payment` e
 - [GET /payment-sessions](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessiongetbetweentimestamps.md): This is used to fetch payment sessions within a timestamp range, paginated
 - [GET /payment-sessions/{paymentSessionId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessionget.md): This is used to fetch a payment session by its paymentSessionId
 - [PATCH /payment-sessions/{paymentSessionId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessionupdate.md): This is used to update a payment session by its Id. Note that this can only be used prior to a successful payment. Once payment has been approved, you cannot update a PaymentSession.
 - [POST /payment-sessions/attempt-payment](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessionattemptpayment.md): This is used to supply the card you have collected from the customer to pay for this payment session. Only call this endpoint from your front-end once you have collected the customer's card details. I
 - [POST /payment-sessions/continue-payment](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessioncontinuepayment.md): Submit additional data for payment sessions that require further action after using `attempt-payment`. **Note** that our SDKs handle this step automatically.
 - [GET /payment-sessions/{paymentSessionId}/transactions](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessionlisttransactions.md): List the transaction(s) for a particular payment
 - [GET /payment-sessions/{paymentSessionId}/transactions/{paymentTransactionId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessiongettransactionbyid.md): Retrieve the transaction for a particular payment
 - [POST /payment-sessions/{paymentSessionId}/captures](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessioncapturebyid.md): Call this endpoint to capture funds you have previously authorized on a payment session. You can only call this endpoint when the payment session is in status `Approved` and its `captureFlow` value is
 - [POST /payment-sessions/{paymentSessionId}/voids](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessionvoidbyid.md): Call this endpoint to void a payment session currently awaiting manual capture. This will reverse the amount authorized on the payment and return it to the customer. If voided on the same-day, the tra
 - [POST /payment-sessions/{paymentSessionId}/refunds](https://developer.ryftpay.com/documentation/api/reference/openapi/payments/paymentsessioncreaterefund.md): Use this endpoint to refund an already captured payment session. Unlike voids, which are typically completed in minutes, refunds can take several days to be cleared by the card schemes.
## Webhooks

 - [Signatures](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/signatures.md): ### Signatures As an additional security measure, you can verify the integrity of any webhook event you receive by checking the signature we provide within the `Signature` header. To do this simply ta
 - [Retry Policy](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/retry-policy.md): ### Retry Policy If your webhook URL begins to fail we will start our retry mechanism. For each failing event we immediately retry several times before then retrying with an increasing delay until we'
 - [POST /webhooks](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/webhookcreate.md): Create/Register a webhook endpoint to start receiving events
 - [GET /webhooks](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/webhookslist.md): Returns a list of your webhook endpoints. They are returned in sorted (by epoch) order (default is newest first).
 - [GET /webhooks/{webhookId}](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/webhookgetbyid.md): This is used to fetch a webhook by its unique Id
 - [PATCH /webhooks/{webhookId}](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/webhookupdatebyid.md): This is used to update a webhook by its unique Id
 - [DELETE /webhooks/{webhookId}](https://developer.ryftpay.com/documentation/api/reference/openapi/webhooks/webhookdeletebyid.md): This is used to delete a webhook by its unique Id
## Events

 - [GET /events](https://developer.ryftpay.com/documentation/api/reference/openapi/events/eventgetlist.md): Retrieves a list of events. They are returned in sorted (by epoch) order (default is newest first). You can query one of your sub-account's events buy using the `Account` header.
 - [GET /events/{eventId}](https://developer.ryftpay.com/documentation/api/reference/openapi/events/eventgetbyid.md): This is used to fetch an Event by its eventId
## Accounts

 - [POST /accounts](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/subaccountcreate.md): This is for registering new users onto your platform that will act as one of your 'sub' accounts
 - [GET /accounts/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/subaccountgetbyid.md): This is used to fetch details for one of your sub accounts.
 - [PATCH /accounts/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/subaccountupdate.md): This is used to update the details of one of your sub accounts. This API can only be accessed for `NonHosted` sub accounts.
 - [POST /accounts/{id}/payouts](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/payoutcreate.md): Used to create manual payouts for a specified sub account. This API can only be accessed for `NonHosted` sub accounts that are configured for manual payouts. **Note** that the following requirements m
 - [GET /accounts/{id}/payouts](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/payoutslist.md): Used to fetch a paginated list of payouts for the given sub account
 - [GET /accounts/{id}/payouts/{payoutId}](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/payoutgetbyid.md): This is used to fetch a payout by its unique Id
 - [POST /accounts/authorize](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/subaccountauthorize.md): We recommend calling this endpoint first when you onboard your users to cater for those that may already have Ryft accounts. If the email supplied is not registered with Ryft then you should instead u
 - [POST /accounts/{id}/verify](https://developer.ryftpay.com/documentation/api/reference/openapi/accounts/subaccountverify.md): This endpoint is now deprecated - all account types and persons are submitted for verification automatically, when all fields & documents have been provided. Once you have created all Persons and sati
## Persons

 - [POST /accounts/{id}/persons](https://developer.ryftpay.com/documentation/api/reference/openapi/persons/personcreate.md): This is for creating persons under your or your sub accounts account, required for verification of businesses. The following limits apply: - Maximum of 9 persons - Maximum of 5 persons with a role of
 - [GET /accounts/{id}/persons](https://developer.ryftpay.com/documentation/api/reference/openapi/persons/personlist.md): Retrieves a list of the persons you've created for one of your sub accounts They are returned in sorted (by epoch) order (default is newest first)
 - [GET /accounts/{id}/persons/{personId}](https://developer.ryftpay.com/documentation/api/reference/openapi/persons/persongetbyid.md): This is used to fetch a person by its unique Id
 - [PATCH /accounts/{id}/persons/{personId}](https://developer.ryftpay.com/documentation/api/reference/openapi/persons/personupdatebyid.md): This is used to update an existing person
 - [DELETE /accounts/{id}/persons/{personId}](https://developer.ryftpay.com/documentation/api/reference/openapi/persons/persondeletebyid.md): Deletes a person under the account. This will also delete any files currently attached to the person. Note that you can only delete a person if `verification.status` is `NotRequired` or `Required`
## Payout Methods

 - [POST /accounts/{id}/payout-methods](https://developer.ryftpay.com/documentation/api/reference/openapi/payout-methods/payoutmethodcreate.md): This is for creating payout methods for one of your sub accounts, so they can receive payouts. You can only create 1 payout method per currency
 - [GET /accounts/{id}/payout-methods](https://developer.ryftpay.com/documentation/api/reference/openapi/payout-methods/payoutmethodslist.md): Retrieves a list of the payout methods you've created for one of your sub accounts They are returned in sorted (by epoch) order (default is newest first)
 - [GET /accounts/{id}/payout-methods/{payoutMethodId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payout-methods/payoutmethodget.md): This is used to fetch a payout method by its unique Id for one of your sub accounts
 - [PATCH /accounts/{id}/payout-methods/{payoutMethodId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payout-methods/payoutmethodupdate.md): This is used to update an existing payout method for one of your sub accounts
 - [DELETE /accounts/{id}/payout-methods/{payoutMethodId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payout-methods/payoutmethoddelete.md): This is used to delete a payout method by its unique Id for one of your sub accounts
## Payouts

 - [POST /accounts/{id}/payouts](https://developer.ryftpay.com/documentation/api/reference/openapi/payouts/payoutcreate.md): Used to create manual payouts for a specified sub account. This API can only be accessed for `NonHosted` sub accounts that are configured for manual payouts. **Note** that the following requirements m
 - [GET /accounts/{id}/payouts](https://developer.ryftpay.com/documentation/api/reference/openapi/payouts/payoutslist.md): Used to fetch a paginated list of payouts for the given sub account
 - [GET /accounts/{id}/payouts/{payoutId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payouts/payoutgetbyid.md): This is used to fetch a payout by its unique Id
## Transfers

 - [POST /transfers](https://developer.ryftpay.com/documentation/api/reference/openapi/transfers/transfercreate.md): Used to initiate a transfer of money between Ryft accounts.
 - [GET /transfers](https://developer.ryftpay.com/documentation/api/reference/openapi/transfers/transferslist.md): Retrieves a list of the transfers you've requested. Returned in sorted (by epoch) order (default is newest first)
 - [GET /transfers/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/transfers/transfergetbyid.md): This is used to fetch a transfer by its unique Id
## Balances

 - [GET /balances](https://developer.ryftpay.com/documentation/api/reference/openapi/balances/balanceslist.md): Retrieves a list of balances for the given account
## Balance Transactions

 - [GET /balance-transactions](https://developer.ryftpay.com/documentation/api/reference/openapi/balance-transactions/balancetransactionslist.md): Retrieves a list of balance transactions for the given account.
## Conversions

 - [POST /conversions](https://developer.ryftpay.com/documentation/api/reference/openapi/conversions/conversioncreate.md): Creates an FX conversion, selling funds in one currency to buy funds in another.
 - [GET /conversions](https://developer.ryftpay.com/documentation/api/reference/openapi/conversions/conversionslist.md): Retrieves a list of conversions for the given account, returned in sorted (by epoch) order (default is newest first).
 - [GET /conversions/{conversionId}](https://developer.ryftpay.com/documentation/api/reference/openapi/conversions/conversiongetbyid.md): This is used to fetch a conversion by its unique conversionId.
 - [GET /conversions/rate](https://developer.ryftpay.com/documentation/api/reference/openapi/conversions/conversionsgetrate.md): Returns an estimated rate for an FX conversion between two currencies. The rate, amount & fees are indicative only and the rate is not held - the rate applied when you create a conversion may differ.
## Account Links

 - [POST /account-links](https://developer.ryftpay.com/documentation/api/reference/openapi/account-links/accountlinkscreate.md): Generate a temporary account link to redirect the user to, in order for them to complete registration and payout setup via our portal
## Platform Fees

 - [GET /platform-fees](https://developer.ryftpay.com/documentation/api/reference/openapi/platform-fees/platformfeegetlist.md): Retrieves a list of the application fees you've collected. They are returned in sorted (by epoch) order (default is newest first)
 - [GET /platform-fees/{platformFeeId}](https://developer.ryftpay.com/documentation/api/reference/openapi/platform-fees/platformfeegetbyid.md): This is used to fetch a platform fee by its platformFeeId
 - [GET /platform-fees/{platformFeeId}/refunds](https://developer.ryftpay.com/documentation/api/reference/openapi/platform-fees/platformfeegetrefunds.md): This is used to fetch a platform fee refunds by their platformFeeId
## Customers

 - [POST /customers](https://developer.ryftpay.com/documentation/api/reference/openapi/customers/customercreate.md): This is for creating customers within your Ryft account (to enable features such as saved payment methods)
 - [GET /customers](https://developer.ryftpay.com/documentation/api/reference/openapi/customers/customerslist.md): Used to fetch a paginated list of one or more Customers
 - [GET /customers/{customerId}](https://developer.ryftpay.com/documentation/api/reference/openapi/customers/customergetbyid.md): This is used to fetch a customer by its unique Id
 - [PATCH /customers/{customerId}](https://developer.ryftpay.com/documentation/api/reference/openapi/customers/customerupdatebyid.md): This is used to update an existing customer
 - [DELETE /customers/{customerId}](https://developer.ryftpay.com/documentation/api/reference/openapi/customers/customerdeletebyid.md): This is used to delete a customer by its unique Id
 - [GET /customers/{customerId}/payment-methods](https://developer.ryftpay.com/documentation/api/reference/openapi/customers/customergetpaymentmethods.md): This is used to fetch a customer's payment methods
## Payment Methods

 - [GET /payment-methods/{paymentMethodId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payment-methods/paymentmethodgetbyid.md): This is used to fetch a payment method by its unique Id
 - [PATCH /payment-methods/{paymentMethodId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payment-methods/paymentmethodupdatebyid.md): This is used to update an existing payment method
 - [DELETE /payment-methods/{paymentMethodId}](https://developer.ryftpay.com/documentation/api/reference/openapi/payment-methods/paymentmethoddeletebyid.md): This is used to delete a payment method by instead. Note that you can only delete payment-methods that aren't single-use. For example you can delete a customer's saved payment method, but you cannot d
## Subscriptions

 - [POST /subscriptions](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptioncreate.md): Use to create a Subscription (whereby Ryft manage the automatic scheduling and billing of a recurring payment series)
 - [GET /subscriptions](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptionslist.md): Used to fetch a paginated list of subscriptions
 - [GET /subscriptions/{subscriptionId}](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptiongetbyid.md): This is used to fetch a subscription by its unique Id
 - [PATCH /subscriptions/{subscriptionId}](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptionupdatebyid.md): Use to update a Subscription. **Cannot** be used if the Subscription is `Cancelled` or `Ended`.
 - [PATCH /subscriptions/{subscriptionId}/pause](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptionpausebyid.md): Used to schedule a pause for a Subscription. Only 'Active' subscriptions can be paused, though the details for already 'Paused' subscriptions can also be edited. The subscription will remain in 'Activ
 - [PATCH /subscriptions/{subscriptionId}/resume](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptionresumebyid.md): Use to resume a paused Subscription.
 - [DELETE /subscriptions/{subscriptionId}/cancel](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptioncancelbyid.md): Cancel a subscription by its unique Id. This will immediately move the subscription to `Cancelled` and stop billing the customer. This state is terminal and cannot be reversed.
 - [GET /subscriptions/{subscriptionId}/payment-sessions](https://developer.ryftpay.com/documentation/api/reference/openapi/subscriptions/subscriptionslistpaymentsessions.md): Used to fetch a paginated list of the payment sessions making up the subscription
## Files

 - [GET /files](https://developer.ryftpay.com/documentation/api/reference/openapi/files/fileslist.md): Used to fetch a paginated list of files under your account
 - [POST /files](https://developer.ryftpay.com/documentation/api/reference/openapi/files/filecreate.md): Upload a file to Ryft via our API. Useful if you need to: - upload evidence when challenging disputes - upload KYB/KYC documents for sub accounts
 - [GET /files/{fileId}](https://developer.ryftpay.com/documentation/api/reference/openapi/files/filegetbyid.md): Retrieve a file by its unique ID
## Apple Pay

 - [POST /apple-pay/web-domains](https://developer.ryftpay.com/documentation/api/reference/openapi/apple-pay/applepaywebdomainregister.md): Registers a domain name for Apple Pay on the web. Note that this is required if relying on Ryft's Apple Pay processing certificate. A **Maxiumum** of 99 domains can be registered against a single Ryft
 - [GET /apple-pay/web-domains](https://developer.ryftpay.com/documentation/api/reference/openapi/apple-pay/applepaywebdomainslist.md): List the web domains you have registered for Apple Pay
 - [GET /apple-pay/web-domains/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/apple-pay/applepaywebdomaingetbyid.md): This is used to fetch an Apple Pay web domain by its unique Id
 - [DELETE /apple-pay/web-domains/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/apple-pay/applepaywebdomaindeletebyid.md): This is used to delete an Apple Pay web domain by its unique Id
 - [POST /apple-pay/sessions](https://developer.ryftpay.com/documentation/api/reference/openapi/apple-pay/applepaycreatesession.md): Request a new Apple Pay web session. Use this endpoint if you process Apple Pay on the web and: - you want to rely on Ryft's Apple Pay processing certificate - have an existing integration or want
## Disputes

 - [GET /disputes](https://developer.ryftpay.com/documentation/api/reference/openapi/disputes/disputeslist.md): Used to fetch a paginated list of disputes
 - [GET /disputes/{disputeId}](https://developer.ryftpay.com/documentation/api/reference/openapi/disputes/disputegetbyid.md): This is used to fetch a dispute by its unique Id
 - [POST /disputes/{disputeId}/accept](https://developer.ryftpay.com/documentation/api/reference/openapi/disputes/disputeacceptbyid.md): Accepts a specific dispute by Id. Typically you should use this if the dispute is in fact legitimate and you are accepting the financial impact. **Note** that this operation cannot be done.
 - [PATCH /disputes/{disputeId}/evidence](https://developer.ryftpay.com/documentation/api/reference/openapi/disputes/disputeaddevidencebyid.md): Adds or updates the evidence currently attached to the dispute. Note that for file evidence, you must first upload the file via our files API. Once you have attached all relevant evidence, call the /c
 - [DELETE /disputes/{disputeId}/evidence](https://developer.ryftpay.com/documentation/api/reference/openapi/disputes/disputeremoveevidencebyid.md): Removes evidence currently attached to a dispute. **Note:** the Dispute must be in status `Open` for this operation.
 - [POST /disputes/{disputeId}/challenge](https://developer.ryftpay.com/documentation/api/reference/openapi/disputes/disputechallengebyid.md): Challenges a specific dispute. You should call this endpoint once you have attached all the relevant evidence. **Note** that you can no longer submit further evidence once challenged, so make sure you
## In-Person Products

 - [GET /in-person/products](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-products/inpersonproductslist.md): List the products that are offered for in-person payments
 - [GET /in-person/products/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-products/inpersonproductgetbyid.md): Fetches an in-person product via its unique ID
## In-Person SKUs

 - [GET /in-person/skus](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-skus/inpersonskuslist.md): List the SKUs that are offered for in-person payments
 - [GET /in-person/skus/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-skus/inpersonskugetbyid.md): Fetches an in-person SKU via its unique ID
## In-Person Orders

 - [GET /in-person/orders](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-orders/inpersonorderlist.md): Fetches an paginated list of in-person orders
 - [GET /in-person/orders/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-orders/inpersonordergetbyid.md): Fetches an in-person order via its unique ID
## In-Person Locations

 - [POST /in-person/locations](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-locations/inpersoncreatelocationoperation.md): Use this endpoint to setup a new location which will be used for housing one or more terminals. Note that once created a location's address & geo co-ordinates cannot be changed and instead a new locat
 - [GET /in-person/locations](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-locations/inpersonlocationlist.md): Fetches an paginated list of in-person locations
 - [GET /in-person/locations/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-locations/inpersonlocationgetbyid.md): Fetches an in-person location via its unique ID
 - [PATCH /in-person/locations/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-locations/inpersonlocationupdatebyid.md): Updates an in-person location via its unique ID. Note that addresses and geo co-ordinates cannot be updated, to do this you must create a new location and delete the old one
 - [DELETE /in-person/locations/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-locations/inpersonlocationdeletebyid.md): Deletes an in-person location. Note that once deleted, the location will no longer be available. You can only the location if it has no terminal assigned to it.
## In-Person Terminals

 - [POST /in-person/terminals](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersoncreateterminaloperation.md): Use this endpoint to setup and register a physical terminal and begin accepting payments.
 - [GET /in-person/terminals](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminallist.md): Fetches an paginated list of terminals
 - [GET /in-person/terminals/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminalgetbyid.md): Fetches a terminal via its unique ID
 - [PATCH /in-person/terminals/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminalupdatebyid.md): Updates a terminal via its unique ID
 - [DELETE /in-person/terminals/{id}](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminaldeletebyid.md): Deletes a terminal. Note that once deleted, the terminal will no longer be able to accept payments.
 - [POST /in-person/terminals/{id}/payment](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminalinitpayment.md): Initiate a payment on a specific terminal. The cardholder can present their card to complete the purchase.
 - [POST /in-person/terminals/{id}/refund](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminalinitrefund.md): Initiate a refund on a specific terminal. The cardholder can present their card to complete the refund.
 - [POST /in-person/terminals/{id}/cancel-action](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminalcancelaction.md): Cancel the action that has been initiated and is currently in-progress on a specific terminal.
 - [POST /in-person/terminals/{id}/confirm-receipt](https://developer.ryftpay.com/documentation/api/reference/openapi/in-person-terminals/inpersonterminalconfirmreceipt.md): Confirm the result of receipt printing via POS for the action that has been initiated and is currently waiting for a receipt to be printed on a specific terminal. This endpoint is required if the tran
