# eftpos for Unified Payments API
To accept eftpos payments, you must request a payment using card details or tokenized card data.
Checkout.com prioritizes routing your transaction through eftpos when you use a co-branded card. If routing to eftpos fails, the transaction falls back to the signature scheme.
## Request a payment
Call the [Request a payment](https://api-reference.checkout.com/tag/Payments/#operation/requestAPaymentOrPayout) endpoint:
> **Note**
>
> Eftpos is a single message system, so it does not support delayed or partial capture. Always set `capture` to `true` in your payment request.
**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
},
"3ds": {
"enabled": true,
"attempt_n3d": true
},
"amount": 1000,
"capture": true,
"currency": "AUD",
"payment_type": "Regular"
}
```
**Tokenized card details**
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 1000,
"capture": true,
"currency": "AUD",
"payment_type": "Regular"
}
```
When you receive a `payment_captured` webhook, it indicates that the transaction completed successfully.
---
## 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
- Installment payments
- Unscheduled payments
### Recurring payments
You can process recurring payments using eftpos. 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).
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": "AUD",
"payment_type": "Recurring",
"capture": true,
"merchant_initiated": false,
"3ds": {
"enabled": true,
"challenge_indicator": "challenge_requested_mandate"
}
}
```
#### Subsequent request example
```json
{
"source": {
"type": "token",
"token": "tok_4gzeau5o2uqubbk6fufs3m7p54"
},
"amount": 6500,
"currency": "AUD",
"payment_type": "Recurring",
"merchant_initiated": true,
"previous_payment_id": "pay_y3oqhf46bzujizoaad9dsdz2vw",
"3ds": {
"enabled": true,
"challenge_indicator": "challenge_requested_mandate"
}
}
```
---
## 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).
---
## Refund a payment
Eftpos supports full and partial 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.md).
---
## Void a payment
Eftpos does not support voids, because it's a single message system that always uses auto-capture.
---
## Test eftpos payments
In Sandbox:
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:
**Approved cards**
| PAN | Scheme | Issuer | Eftpos code | Eftpos meaning |
| --- | --- | --- | --- | --- |
| `4065871023035361` | Visa | CommBank | `00` | Approved |
| `4560041024036897` | Visa | ANZ | `00` | Approved |
| `4089671025038427` | Visa | Westpac | `00` | Approved |
Any PAN not listed will also return code `00` (Approved) via the default approval scenario.
**Declined cards**
| PAN | Scheme | Issuer | Eftpos code | Eftpos meaning |
| --- | --- | --- | --- | --- |
| `4560041000000172` | Visa | ANZ | `01` | Refer to card issuer |
| `4622391001001703` | Visa | ANZ | `05` | Do not honour |
| `5121271002003234` | Mastercard | CommBank | `05` | Do not honour |
| `5280131003004762` | Mastercard | CommBank | `12` | Invalid transaction |
| `4089671004006296` | Visa | Westpac | `12` | Invalid transaction |
| `4239531005007827` | Visa | Westpac | `14` | Invalid card number |
| `4026081006009353` | Visa | BOQ | `15` | No such issuer |
| `4349681007010886` | Visa | BOQ | `30` | Format error |
| `4337701008012410` | Visa | Bendigo | `36` | Restricted card |
| `4017951009013944` | Visa | NAB | `36` | Restricted card |
| `4639251010015477` | Visa | NAB | `41` | Lost card |
| `4365311011017003` | Visa | Suncorp | `41` | Lost card |
| `4564301012018539` | Visa | Suncorp | `43` | Stolen card |
| `5327371013020060` | Mastercard | CommBank | `51` | Not sufficient funds |
| `4645791014021593` | Visa | ANZ | `51` | Not sufficient funds |
| `4239541015023128` | Visa | Westpac | `57` | Transaction not permitted to cardholder |
| `4041371016024653` | Visa | ASL | `57` | Transaction not permitted to cardholder |
| `4054971017026187` | Visa | ASL | `57` | Transaction not permitted to cardholder |
| `4097711018027712` | Visa | ASL | `59` | Suspected fraud |
| `4588581019029249` | Visa | BOQ | `61` | Exceeds withdrawal amount limits |
| `5188681020030771` | Mastercard | Bendigo | `61` | Exceeds withdrawal amount limits |
| `5367631021032303` | Mastercard | CommBank | `96` | System malfunction |
| `4336160260338917` | Visa | Westpac | `96` | System malfunction |
### Test 3DS flows
Use any of the following card numbers to test the corresponding 3DS flow:
| PAN | Network | 3DS flow |
| --- | --- | --- |
| `6086989378570194` | eftpos | Successful authentication |
| `6086988633666318` | eftpos | 1. Challenge required
2. Not authenticated |
| `6086988421777772` | eftpos | 1. Challenge required
2. Successful authentication |
| `6086980356182698` | eftpos | Authentication rejected |
| `6086984931155062` | eftpos | Could not perform authentication |
| `6086984575754667` | eftpos | Not authenticated |
| `5430489823580331` | eftpos / Mastercard | Successful authentication |
| `5430485154592739` | eftpos / Mastercard | 1. Challenge required
2. Could not perform authentication |
| `5430483517162498` | eftpos / Mastercard | 1. Challenge required
2. Successful authentication |
| `5327370185430933` | eftpos / Mastercard | 1. Successful authentication
2. Payment captured |
| `5430489205507142` | eftpos / Mastercard | Authentication rejected |
| `5430481958773757` | eftpos / Mastercard | Could not perform authentication |
| `5430489766358513` | eftpos / Mastercard | Not authenticated |
| `4509491723526413` | eftpos / Visa | Successful authentication |
| `4509490198443864` | eftpos / Visa | 1. Challenge required
2. Attempts processing performed
Authentication was attempted, but the cardholder was not fully authenticated. |
| `4509497522131255` | eftpos / Visa | 1. Challenge required
2. Successful authentication |
| `4065871023035361` | eftpos / Visa | 1. Challenge required
2. Successful authentication
3. Payment captured |
| `4509490106329676` | eftpos / Visa | Authentication rejected |
| `4509493256687828` | eftpos / Visa | Could not perform authentication |
| `4509492773429946` | eftpos / Visa | Not authenticated |