# PINless debit for Unified Payments API
To accept PINless debit payments, you must request a payment using card details, or tokenized card data.
Checkout.com automatically routes your transaction through a local debit network, if supported.
## Request a payment
Call the [Request a payment](https://api-reference.checkout.com/tag/Payments/#operation/requestAPaymentOrPayout) endpoint:
**Live**
`POST` `https://{prefix}.api.checkout.com/payments/`
**Sandbox**
`POST` `https://{prefix}.api.sandbox.checkout.com/payments/`
### Request example
**Full card details**
```json
{
"source": {
"type": "card",
"number": "4873400000000024",
"expiry_month": 12,
"expiry_year": 2027
},
"amount": 1000,
"capture": true,
"currency": "USD",
"payment_type": "Regular"
}
```
**Tokenized card details**
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 1000,
"capture": true,
"currency": "USD",
"payment_type": "Regular"
}
```
If you request an auto-capture payment, Checkout.com notifies you when the payment is captured using webhooks. When you receive a `payment_captured` webhook, it indicates that the transaction is successfully completed.
> You cannot void an auto-captured payment. To reverse a payment in progress, wait for the payment to be captured, and then process a refund.
---
## Capture a payment
If you set `capture` to `true` in your payment request, Checkout.com automatically authorizes and captures the payment.
If you set `capture` to `false` in your payment request, we only authorize the payment. You must capture it manually.
To perform a partial capture, call the [Capture a payment](https://api-reference.checkout.com/tag/Payments/#operation/captureAPayment) endpoint, and provide the `amount` and `items` objects.
**Live**
`POST` `https://{prefix}.api.checkout.com/payments/{id}/captures`
**Sandbox**
`POST` `https://{prefix}.api.sandbox.checkout.com/payments/{id}/captures`
For more information, see [Capture a payment](https://www.checkout.com/docs/payments/manage-payments/capture-a-payment.md).
---
## Process merchant-initiated transactions
You can process merchant-initiated transactions (MITs) to store your customer's card details and use them for future payments.
Supported MIT transactions include:
- Recurring payments
Because these are debit card payments, you cannot process installment payments.
- Unscheduled payments
**Recurring payments**
You can process recurring payments using PINless debit. For example, to charge a subscription service.
1. Perform an initial cardholder-initiated transaction (CIT) to store the debit card details. For requirements, see [Store card details during an initial recurring transaction](https://www.checkout.com/docs/payments/accept-payments/pay-with-stored-card-details/recurring-payments-with-stored-card-details.md#Store_the_card_details_during_the_initial_transaction).
Ensure you provide `"payment_type": "Recurring"`.
2. Process subsequent payments using any previous payment ID. For requirements, see [Request a payment in a subsequent MIT](https://www.checkout.com/docs/payments/accept-payments/pay-with-stored-card-details/recurring-payments-with-stored-card-details.md#Request_a_payment_in_a_subsequent_MIT).
### Initial request example
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 6500,
"currency": "GBP",
"payment_type": "Recurring",
"merchant_initiated": false
}
```
### Subsequent request example
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 6500,
"currency": "GBP",
"payment_type": "Recurring",
"merchant_initiated": true,
"previous_payment_id": "pay_paymentid"
}
```
**Unscheduled payments**
For example, a customer may provide their card details when checking in to a hotel, but is only charged after they check out, at which point they may have incurred additional charges.
1. Perform an initial unscheduled, zero-value transaction to store the debit card details. For requirements, see [Unscheduled payments with stored card details](https://www.checkout.com/docs/payments/accept-payments/pay-with-stored-card-details/unscheduled-payments-with-stored-card-details.md).
2. Process subsequent payments using any previous payment ID. For requirements, see [Request an unscheduled payment](https://www.checkout.com/docs/payments/accept-payments/pay-with-stored-card-details/unscheduled-payments-with-stored-card-details.md#Request_an_unscheduled_payment).
### Initial request example
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 0,
"currency": "GBP",
"payment_type": "Unscheduled",
"merchant_initiated": false
}
```
### Subsequent request example
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 6500,
"currency": "GBP",
"payment_type": "Unscheduled",
"merchant_initiated": true,
"previous_payment_id": "pay_paymentid"
}
```
---
## Get payment details
After you've requested the payment, you can use the `id` returned in the payment response to retrieve details about the payment.
For more information, see [Get payment details](https://www.checkout.com/docs/payments/manage-payments/get-payment-details.md) and the [Get payment details](https://api-reference.checkout.com/tag/Payments/#operation/getPaymentsList) endpoint.
---
## Refund a payment
PINless debit supports both partial and full refunds.
You can process refunds using the [Dashboard](https://dashboard.checkout.com) or the [Refund API](https://www.checkout.com/docs/payments/manage-payments/refund-a-payment).
---
## Void a payment
To void an authorized payment that you have not captured yet, call the [Void a payment](https://api-reference.checkout.com/tag/Payments/#operation/voidAPayment) endpoint, and provide `payment_id` of the payment you want to void as the `{id}` path parameter:
**Live**
`POST` `https://{prefix}.api.checkout.com/payments/{id}/voids`
**Sandbox**
`POST` `https://{prefix}.api.sandbox.checkout.com/payments/{id}/voids`
If you receive a `202 Void accepted` response, your void request has been accepted for processing. To get the full void response, you must subscribe to the `payment_voided` webhook.
If there was a problem with your request, you receive an error response such as `422 Invalid data was sent`.
For more information, see [Void a payment](https://www.checkout.com/docs/payments/manage-payments/void-a-payment).
### Response examples
If you receive a `202 Void accepted` response, your void request has been accepted for processing. To get the full void response, you must subscribe to the `payment_voided` webhook.
If there was a problem with your request, you'll receive an error response such as `422 Invalid data was sent`.
---
## Test PINless debit payments
To test PINless debit payments:
1. Create a test payment request.
2. Set `source.number` to any of the cards in the following table, depending on the outcome you want to simulate:
| Status | Response code | PINless debit network | Card number |
| --- | --- | --- | --- |
| `10000` | `Approved` | Accel | `4873400000000024` |
| `10000` | `Approved` | NYCE | `4817504310000183` |
| `10000` | `Approved` | Pulse | `5838170077000196` |
| `10000` | `Approved` | Star | `4524640077700195` |
| `20005` | `Do not honor` | Accel | `4141900000000011` |
| `20005` | `Do not honor` | NYCE | `5194290000000044` |
| `20005` | `Do not honor` | Pulse | `4149810000055158` |
| `20005` | `Do not honor` | Star | `5430320099900194` |
To test cards that have an associated debit network but the transaction is rerouted and approved to signature, use the following cards:
- `4902526690560177`
- `5482730044440004`