DoorDash Drive Refunds API
Request a refund against a completed Drive delivery. DoorDash decides whether the refund is granted or rejected and returns a result code; no eligibility window is published.
Request a refund against a completed Drive delivery. DoorDash decides whether the refund is granted or rejected and returns a result code; no eligibility window is published.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/doordash-drive-refunds-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.0
info:
title: Drive Refunds API Specification
x-logo:
url: >-
https://doordash-static.s3-us-west-2.amazonaws.com/media/drive/drive-logo.png
backgroundColor: '#FFFFFF'
altText: Doordash Drive
href: https://developer.doordash.com/
version: 0.0.3
description: |
Last updated: September 21, 2022
### Release Notes
### 0.0.3 (internal release)
- update RefundResult code selection
### 0.0.2 (internal release)
- add unsupported_payment_method and blocked rejected refund result code
### 0.0.1 (internal release)
- initial version
- added process refunds API
servers:
- url: https://openapi.doordash.com
variables: {}
paths:
/drive/v2/deliveries/{external_delivery_id}/refunds:
post:
summary: Process a Refund
tags:
- Refunds
description: >-
Process a refund for an order. The API will determine whether the refund
should be granted or rejected.
operationId: ProcessRefund
parameters:
- $ref: '#/components/parameters/ExternalDeliveryIdPath'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RefundRequest'
required: true
responses:
'200':
description: Ok
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/RefundResult'
'400':
description: Request Validation Failed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/validation_field_error'
'403':
description: Operation is not authorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/authorization_error'
'404':
description: Unknown delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/unknown_delivery_error'
'409':
description: Duplicate refund
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateRefundResult'
'422':
description: Refund rejected
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/RejectedRefundResult'
'500':
description: Internal service failure, please try again later
content:
application/json:
schema:
$ref: '#/components/schemas/server_fault'
deprecated: false
components:
parameters:
ExternalDeliveryIdPath:
name: external_delivery_id
in: path
description: Unique (per developer) ID of the delivery.
required: true
style: simple
explode: false
schema:
type: string
pattern: /[a-zA-Z0-9-._~]+/
description: Unique ID generated by the caller for the delivery.
example: D-1763
schemas:
RefundReason:
type: string
description: The reason for the refund.
enum:
- cancelled_order
- delivered_late
- delivered_early
- never_delivered
- entire_order_wrong
- missing_main
- missing_side
- incorrect_items
- poor_delivery_experience
RefundRequest:
title: Refund Request
description: Details of a refund request.
type: object
properties:
refund_reason:
$ref: '#/components/schemas/RefundReason'
required:
- refund_reason
BaseRefundResult:
title: Refund Result Base
description: Common fields in all refund results.
type: object
properties:
refund_reason:
$ref: '#/components/schemas/RefundReason'
message:
type: string
description: Human readable string for the explanation of the refund decision.
required:
- refund_reason
- message
Status:
type: string
description: Overall result of what happened with the processed refund.
enum:
- partial_refund
- full_refund
RefundResult:
title: Refund Result
description: Details of the processed refund request.
type: object
allOf:
- $ref: '#/components/schemas/BaseRefundResult'
- type: object
properties:
code:
type: string
description: Static code for the refund decision.
enum:
- doordash_cancelled
- order_delivered_late
- order_delivered_early
- dasher_at_fault
- doordash_at_fault
tip_refund:
type: integer
description: >-
Tip amount refunded in smallest unit. i.e. For USD, 300 equals
$3.00
order_value_refund:
type: integer
description: >-
Order value amount refunded in smallest unit. i.e. For USD, 1099
equals $10.99
delivery_fee_refund:
type: integer
description: >-
Delivery fee amount refunded in smallest unit. i.e. For USD, 199
equals $1.99
status:
$ref: '#/components/schemas/Status'
required:
- code
- tip_refund
- order_value_refund
- delivery_fee_refund
- status
FieldError: &ref_0
title: FieldError
type: object
description: A field whose value couldn't be validated.
required:
- field
- error
properties:
field:
type: string
description: Name of the field whose value couldn't be validated.
example: pickup_phone_number
error:
type: string
description: The error that was encountered when validating the field's value.
example: Invalid phone number format
validation_field_error:
x-error: true
title: ValidationFieldError
type: object
description: One or more request values couldn't be validated.
required:
- code
- message
- field_errors
properties:
code:
type: string
enum:
- validation_error
message:
type: string
description: One or more request values couldn't be validated.
example: One or more request values couldn't be validated.
field_errors:
type: array
description: >-
The list of fields whose values couldn't be validated. See more
[error
examples](https://developer.doordash.com/en-US/docs/drive/reference/errors)
items:
$ref: '#/components/schemas/FieldError'
nullable: false
readOnly: true
components:
schemas:
FieldError: *ref_0
authorization_error:
x-error: true
type: object
description: >-
Authorization error: the credentials provided with the request don't
work for the requested operation
required:
- code
- message
properties:
code:
type: string
enum:
- authorization_error
default: authorization_error
message:
type: string
example: >-
Authorization error: the credentials provided with the request don't
work for the requested operation
default: >-
Authorization error: the credentials provided with the request don't
work for the requested operation
ExternalDeliveryId:
type: string
pattern: /[a-zA-Z0-9-._~]+/
description: Unique ID generated by the caller for the delivery.
example: D-1763
unknown_delivery_error:
x-error: true
type: object
description: External delivery ID was not found.
required:
- code
- message
- external_delivery_id
properties:
code:
type: string
enum:
- unknown_delivery_id
message:
type: string
example: External delivery ID was not found
external_delivery_id:
$ref: '#/components/schemas/ExternalDeliveryId'
DuplicateRefundResult:
title: Duplicate Refund Result
description: Details of the duplicate refund.
type: object
allOf:
- $ref: '#/components/schemas/BaseRefundResult'
- type: object
properties:
code:
type: string
description: Static code for the refund decision.
enum:
- already_refunded
required:
- code
RejectedRefundResult:
title: Rejected Refund Result
description: Details of the rejected refund.
type: object
allOf:
- $ref: '#/components/schemas/BaseRefundResult'
- type: object
properties:
code:
type: string
description: Static code for the refund decision.
enum:
- rejected
- refund_limit_passed
- could_not_determine
- unsupported_payment_method
- blocked
required:
- code
server_fault:
x-error: true
type: object
description: Internal service failure, please try again later.
required:
- code
- message
properties:
code:
type: string
enum:
- service_fault
default: service_fault
message:
type: string
example: Internal service failure, please try again later.
default: Internal service failure, please try again later.